[MODEL] Opus 4.8 (1M) frequently returns thinking-only turns (no text/tool_use, stop_reason=end_turn) — session silently stops
Preflight Checklist
- [x] I have searched existing issues for similar behavior reports (see Related below — this extends the same regression with fresh data and a sharper structural fingerprint).
- [x] This report does NOT contain sensitive information.
Type of Behavior Issue
Other unexpected behavior — the model ends a turn producing no user-visible output (no text, no tool_use), so the session silently stops as if finished.
What You Asked Claude to Do
Ordinary work in a long, high-reasoning-effort agentic session (e.g. "continue implementing the next operator"). No special prompt is required — it recurs across many different prompts.
What Claude Actually Did
The assistant turn contains a single thinking block and nothing else — no text, no tool_use — with stop_reason=end_turn, yet output_tokens is in the thousands. The turn ends "cleanly", so from the user's side the CLI shows thinking tokens tick up to a few thousand and then just stops with nothing printed, as if the assistant had finished. Claude Code then either ends the turn silently or injects the built-in "please continue" (#70422), which produces another empty turn — chaining into a run of dead turns.
Sharper structural detail (from the session .jsonl, not speculation): the thinking block's thinking text is an empty string (0 chars) — only a signature remains:
{
"role": "assistant",
"model": "claude-opus-4-8",
"stop_reason": "end_turn",
"content": [
{ "type": "thinking", "thinking": "", "signature": "Eog0Cok...(10 KB)" }
// ^ no "text" block, no "tool_use" block; the thinking content itself is empty
],
"usage": { "input_tokens": 2, "cache_read_input_tokens": 24106, "output_tokens": 3624 }
}
So the model spends thousands of output tokens, the thinking content is empty, and nothing actionable is emitted.
Expected Behavior
The model should not return stop_reason=end_turn (or tool_use) when its content is a thinking-only block with no text and no tool_use. A completed turn must contain user-facing text or at least one tool call. (Secondarily: Claude Code could detect a thinking-only turn and re-issue the user's actual request instead of the vague built-in "please continue" — but the root cause is model-side.)
Files Affected
Not applicable — no files are modified. This is an empty/no-output response, not an unwanted edit.
Permission Mode
I don't know / Not sure (irrelevant — no edits are attempted).
Can You Reproduce This?
Sometimes (intermittent) — but very frequent in long, high-effort sessions (see frequency data below).
Steps to Reproduce
- Run a long agentic session with Opus 4.8 (1M) at high reasoning effort.
- Over the session, a growing fraction of turns come back as thinking-only (
thinkingblock, empty text, notext/tool_use,stop_reason=end_turn). - Independent of context size — it reproduces even at very low context (see
cache_readcolumn).
Claude Model
Opus (claude-opus-4-8[1m] — Opus 4.8, 1M context)
Relevant Conversation
An application-layer probe scanning the session .jsonl files (grouping by message.id, flagging stop_reason=end_turn with 0 text characters) logged 107 empty turns overall and 55 thinking-only end_turn responses in a single session. Representative cluster — 5 empty turns within 5 minutes on 2026-07-25:
| local time | output_tokens | cache_read_input_tokens | content blocks | stop_reason |
|---|---|---|---|---|
| 07:07:36 | 1594 | 0 | [thinking] | end_turn |
| 07:08:56 | 4664 | 24106 | [thinking] | end_turn |
| 07:10:16 | 3624 | 24106 | [thinking] | end_turn |
| 07:10:56 | 2990 | 24106 | [thinking] | end_turn |
| 07:11:56 | 2147 | 24106 | [thinking] | end_turn |
Observed output_tokens for these empty turns ranges from 246 to 18512. cache_read_input_tokens of 0 and 24106 confirms this is not max_tokens truncation or context exhaustion.
Impact
High — this severely disrupts everyday use. It is not a rare edge case: in an active session it can fire many times within a single hour (the probe logged 5 empty turns in a 5-minute window, and 55 in one session), so any long or high-effort workflow on Opus 4.8 keeps stalling. Each dead turn burns hundreds to ~18k output tokens with zero output, and the built-in retry ("please continue") tends to trigger further empty turns, compounding the disruption.
Claude Code Version
2.1.219 (Claude Code)
Platform
Anthropic API
Additional Context
- Still occurring on 2026-07-25 on native Linux (x86_64, Ubuntu 26.04), high reasoning effort.
- Vanishes when switching off 4.8, consistent with a 4.8 extended-thinking/tool-call regression.
- Related (same underlying regression):
- #68591 — Opus 4.8 returns thinking-only responses without tool_use or text blocks ("fingerprint B"). This report adds:
stop_reason=end_turnspecifically, a much wideroutput_tokensrange (246–18512 vs 800–1400), the empty-thinking-text + signature-only structure, low-context reproduction, high-frequency data, and a fresh 2026-07-25 native-Linux occurrence (that issue is currently markedstale, but the behavior is not). - #68352 — Opus 4.8 (1M) recurring unusable assistant outputs (the malformed-tool-call sibling of the same regression).
- #68529 — "fingerprint A" (
stop_reason=stop_sequence, empty output). - #70422 — built-in "please continue" injection, which amplifies this into chained empty turns.