[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

Status Open
Reported on v2.1.215
Maintainer reply None cached
Activity 0 comments · opened Oct 1, 2026

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 version field in transcripts)
  • Model: claude-opus-4-8 (Max plan, [1m] 1M-context enabled)
  • macOS (darwin), interactive cli entrypoint + 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.

View original on GitHub ↗