[MODEL] Opus 4.8: turns end with thinking-only content + end_turn (zero visible output) — incidence jumped ~10x since 2026-09-30, context-correlated, retry-resistant
Summary
Since 2026-09-30, claude-opus-4-8 turns increasingly end with only a thinking block — no text, no tool_use — and stop_reason: "end_turn", burning 1k–6k output tokens per stalled turn. The user sees a silent "no response" turn. Measured across our fleet's local transcripts (~31,500 assistant turns, CLI pinned at 2.1.215 for the entire window), per-turn incidence jumped 0.3% → 2.4% → 3.9% on 9/29 → 9/30 → 10/1 with no client-side change, suggesting a model/server-side regression.
Environment
- Claude Code CLI 2.1.215 (unchanged across the whole measurement window — verified via the turn-level
versionfield in transcripts) - Model:
claude-opus-4-8(Max plan,[1m]1M-context enabled) - macOS (darwin), interactive
clientrypoint + headless runners
Raw evidence (one stalled turn, from the session transcript)
{
"message": {
"model": "claude-opus-4-8",
"id": "msg_011Cfbh76eeZyH5usnV3Yt98",
"content": [{"type": "thinking", "thinking": "", "signature": "EutUCrwB..."}],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 2,
"cache_creation_input_tokens": 864,
"cache_read_input_tokens": 645900,
"output_tokens": 4069
}
},
"requestId": "req_011Cfbh75LmKtPHsjPB3mQdg",
"timestamp": "2026-10-01T14:43:00.726Z",
"version": "2.1.215"
}
4,069 output tokens, all spent in thinking, then end_turn with zero user-visible output. No API error, not max_tokens.
Measurements (local transcript scans, detection-independent)
Daily incidence over opus-4-8 turns (main conversation only, sidechains/synthetic excluded):
| date | opus-4-8 turns | thinking-only end_turn | rate |
|---|---|---|---|
| 2026-09-27 | 4,517 | 14 | 0.31% |
| 2026-09-28 | 4,073 | 33 | 0.81% |
| 2026-09-29 | 6,562 | 19 | 0.29% |
| 2026-09-30 | 3,601 | 86 | 2.39% |
| 2026-10-01 | 3,335 | 131 | 3.93% |
Model-specific (2026-09-25 → 10-01, same machines/workloads):
| model | turns | stalls | rate |
|---|---|---|---|
| claude-opus-4-8 | 10,929 | 284 | 2.60% |
| claude-fable-5 | 4,586 | 0 | 0.00% |
Strong correlation with input context size (but not the root cause — see below). Buckets over turns since 9/29:
| input context (cache_read + cache_creation + input) | turns | rate |
|---|---|---|
| < 100k | 2,776 | 0.47% |
| 300–400k | 1,381 | 3.33% |
| 600–700k | 386 | 7.51% |
| 900k+ | 148 | 7.43% |
Additional observations:
- It also hits fresh sessions: reproduced on the 2nd turn of a brand-new session (~50–70k context), so "just /clear" is not a workaround — it only reduces probability.
- Retry often doesn't recover: consecutive stall runs up to 7 in a row measured (same session, prompt resent each time, minutes apart). Worst single session: 29 stalled turns out of 441.
- Headless runners hit the same thing (no human to resend), which breaks unattended automation.
Expected
A turn ending with end_turn should contain at least one text or tool_use block, or the API/client should surface an error/retry instead of silently accepting a thinking-only completion.
Possibly related
- #89672 reports Fable 5 emitting the answer inside a thinking block (thinking-only content array). This report is for opus-4-8, the thinking block's visible text is empty in the transcript (signature-only husk, cf. #88383), and the regression is recent (onset 2026-09-30) and context-correlated.
Happy to provide more requestIds / timestamps privately if useful — we have ~400 of them with exact UTC timestamps.