Opus 4.8: runaway invisible thinking burns entire 64k output budget (15+ min of silence), followed by token corruption and fabricated tool results
Environment:
- Claude Desktop (Windows 11), Claude Code core version 2.1.202
- Model: claude-opus-4-8, effort=medium, entrypoint=claude-desktop
- Session: d9f27695-ae21-4380-8b84-b2b9d1b40601 (local_6dd8d8fa-ba11-446e-942d-f3ee2a5ceac1)
Symptom 1 — runaway thinking (primary):
Two API responses consumed exactly 64,000 output tokens each with stop_reason: "max_tokens", where the content is a single thinking block with thinking: "" and a ~200KB signature. No visible text, no tool calls. From the user's perspective this is 15.8 / 16.1 minutes of total silence (TTFT equals total wait time).
- req_011CcrGHTgx741YGN1zkXKJu (2026-07-09T09:57:22Z, output_tokens=64000, signature length 199,752)
- req_011CcrHapKX1WTKbd3Nm7gSP (2026-07-09T10:14:42Z, output_tokens=64000, signature length 210,844)
This is recurring: scanning all 159 local transcripts for this project found 12 occurrences across 6 sessions (2026-06-10 to 2026-07-09), all on claude-opus-4-8 and none on other models. The immediately preceding context in each case was an ordinary tool_result (e.g. a file Read); nothing unusual in the input.
Symptom 2 — token corruption (same session, later):
At 10:43Z the assistant emitted an Arabic character (U+0628) inside what should have been a hex SHA256 string in its own visible output.
Symptom 3 — fabricated tool results (same session, later):
The assistant presented a "received" SHA256 hash (starting 2c9f4a8e...) that does not appear in any tool_result anywhere in the transcript — it began writing expected tool output from memory before/instead of the actual result, and admitted as much in its final message. Real hash commands (sha256sum / Get-FileHash) were executed and returned different values.
Pattern: the three symptoms escalate within a session (silent 64k burns first, then character glitches, then confabulated tool results). Pointing the problem out to the model helps only momentarily; the session degrades again.
Expected: thinking should not silently consume the entire output budget with no visible progress and no tool activity; ideally the client would surface some indication instead of appearing hung for 15+ minutes.
4 Comments
The runaway invisible-thinking / output-budget burn pattern is a strong failure case.
If you can paste a sanitized trace showing where the run started burning tokens, where silence began, and where fabricated tool results appeared, I can run it through Rootlyze and send back a proofpack with likely cause, evidence, next action, prevention guidance, and limitations.
Please remove secrets, API keys, tokens, customer data, and private URLs first.
Environment
Summary
A new variant of this runaway-thinking bug. Unlike the known signature (stop_reason=max_tokens with output_tokens=64000 exactly), this one self-terminates below the cap and the session continues, so max_tokens-based monitoring misses it entirely.
Observed behavior (from transcript, session 71e247a6)
Prior occurrences
12 earlier events across 6 sessions (2026-06-10..07-09), all on claude-opus-4-8, none on other models. Previously reported requestIds: req_011CcrGHTgx741YGN1zkXKJu, req_011CcrHapKX1WTKbd3Nm7gSP.
Why this variant matters
Thanks — this is a very useful writeup. I ran the public details through Rootlyze as a mini-proofpack.
Likely pattern: invisible-thinking/output-budget runaway that self-terminates below the known
max_tokenssignature, followed by a possible degradation cascade: stale-session confabulation and malformed tool JSON.Evidence:
tool_resultusage.output_tokens=42,808withstop_reason=tool_use, notmax_tokensAskUserQuestioncalls failed twice with raw newline JSON validation errorsclaude-opus-4-8Next check: detection should not rely only on
stop_reason=max_tokensor the exact 64k-token signature. A better rule would alert on high output tokens + long assistant wall-clock latency + tiny visible content, even whenstop_reason=tool_use.Prevention idea: add a separate thinking-runaway guard, for example: assistant latency >60–120s plus output_tokens >25k–30k plus visible-content ratio anomaly. After that trigger, force a context/session refresh before the next model call so any degraded state does not propagate.
Limitation: this is based only on the public report and billed-token/timing details, not the full transcript. The confabulation and malformed JSON may be downstream of the runaway, but that needs confirmation.
For a full proofpack, the most useful sanitized slice would be only the 2–3 messages before the runaway, the runaway assistant message metadata, the first confabulated reply, and the two invalid
AskUserQuestioncalls. Please remove secrets, API keys, tokens, customer data, credentials, private URLs, and sensitive file paths first.I have reproduced a variant of this with Fable 5. After burning through the 64k output budget, it keeps just retrying, burning through it again and again. The following data was collected by Claude in a separate session:
VSCode extension,Claude Code 2.1.207, Linux. Extra High or High reasoning depth.
Symptom: assistant turns that consume the entire output
budget with
stop_reason: "max_tokens", where the content is a single thinkingblock with
thinking: ""and a ~165–182KB signature. No visible text, no toolcalls, ~14 minutes of silence per attempt. The harness retries and hits the
same wall repeatedly.
15 such turns across 4 sessions on 2026-07-11 (all same task, retried with
reworded prompts asking to do smaller chunks of the task):
| session | 64k thinking-only turns |
|---|---|
| 92c8cd12-3282-4a2f-b744-3859dfbf0f04 | 6 (10:42–13:05 UTC July 11) |
| cb6ec373-d155-4a87-a7dc-42569dfe84ae | 4 (07:46 UTC, 61,933 tok) |
| d798512b-3f18-41cb-b099-729a3eb87f40 | 4 (13:39–14:30 UTC, July 11) |
| 5eaa829d-68d9-42c9-9715-7313a5527a92 | 1 (15:48 UTC) |
Trigger shape: asking the model to verify rigorously, from a small axiom
set, which inference rules of a program logic remain valid in a generalized
setting (research-level math; I can't share the exact prompt). Deterministic
enough that every variant of the prompt reproduced it.
Every session starts fine with collecting context, then the thinking loop starts.
When I interrupt the thinking process and ask, it tells me that it just finished
collecting context and didn't start the proofs yet.
Total: ~950k output tokens burned with zero output, counted against my usage
limit. Happy to share the session IDs above for server-side correlation;
I cannot attach transcripts (unpublished research).