Opus 4.8: thinking blocks emitted with empty text — unexpandable Thinking UI in VSCode
Summary
On Opus 4.8, every thinking block in the session transcript is emitted with an empty thinking string while carrying a full signature blob. The VSCode extension renders a "Thinking" element for each block, but it cannot be expanded because there is no text inside. Switching the same session to another model immediately produces thinking blocks with text.
Environment
- Windows 11 Pro (10.0.22621)
- VSCode extension:
anthropic.claude-code2.1.210 (also reproduced on 2.1.209) - CLI: 2.1.210 (extension-bundled native binary)
- Model:
claude-opus-4-8[1m] - Settings:
"showThinkingSummaries": truein~/.claude/settings.json
Evidence
The CLI is launched with thinking correctly requested (verified from the live process command line):
claude.exe ... --max-thinking-tokens 31999 --thinking-display summarized ...
Session transcript (~/.claude/projects/<project>/<session>.jsonl) over one long session on claude-opus-4-8:
- 44 thinking blocks emitted
- 44 of 44 have
"thinking":""(empty string) - every one has a complete, multi-KB
signature
Example block (signature truncated):
{"type":"thinking","thinking":"","signature":"CAIShAYKmAEIDxgCKkDgTN+4cXnaT9p/AQNYY3J6g6qbmXFqfDO6RDBqmAR6MzkZ5..."}
Control test
Switched the same session to claude-fable-5 via /model and sent one message. The very first thinking block arrived with full text and is expandable in the UI:
{"type":"thinking","thinking":"The user switched to claude-fable-5 and is asking me to troubleshoot why..."}
So: 44/44 empty on claude-opus-4-8, 1/1 populated on claude-fable-5, identical local configuration.
Expected
Thinking summaries with text on Opus 4.8 (as on other models), or no thinking block at all — not an empty block that renders as an unexpandable "Thinking" stub.
Notes
- The signature blob contains the marker
claude-carafe-3e02946a-v1-prod, in case that helps locate the serving path. - Local config was audited extensively (flags, settings, process args) before concluding this is response-side: the request asks for
summarized, the response returns signature-only blocks.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗