Preflight Checklist
What's Wrong?
Summary
On Opus 4.7, extended thinking content is not streamed to the client even when showThinkingSummaries: true is set in ~/.claude/settings.json. The thinking block header (token counter, elapsed time) appears, but the expand toggle reveals empty content. Ctrl+O has no effect. This regresses a core capability — live, course-correctable reasoning visibility — that worked correctly on Opus 4.6 and every prior Claude model.
Actual behavior
showThinkingSummaries: true appears not to trigger the client to send display: "summarized" when targeting Opus 4.7. Since the Opus 4.7 breaking changes flipped the API default for display from "summarized" to "omitted", the client now receives empty thinking blocks and has nothing to render. The client-side setting never overrides the server-side default for Opus 4.7.
Impact
Live visibility into model reasoning is a primary reason developers enable extended thinking. It is essential for:
- Course-correcting the model mid-reasoning when it heads down a wrong path
- Debugging why the model made a specific decision
- Building trust in long-horizon agentic runs where the model thinks for minutes at a time
- Research workflows where the reasoning trace is the output, not the final answer
Losing live thinking on the flagship model reduces Opus 4.7 to effectively a black box for these workflows, making it less usable than 4.6 for anyone whose loop depends on observable reasoning.
What Should Happen?
Per the official Claude Code settings docs: "Show extended thinking summaries in interactive sessions. When unset or false (default in interactive mode), thinking blocks are redacted by the API and shown as a collapsed stub."
Setting showThinkingSummaries: true should cause the client to send display: "summarized" on the API request so thinking content is transmitted and rendered — producing live, streaming summarized thinking in the transcript, just as it did on Opus 4.6 and every prior model.
Error Messages/Logs
Steps to Reproduce
- Ensure
~/.claude/settings.json contains:
{
"effortLevel": "xhigh",
"showThinkingSummaries": true,
"alwaysThinkingEnabled": true
}
- Verify via
/config in an interactive claude session — all three are read as set.
- On Opus 4.7 (default for Max subscription), run
claude in PowerShell or VS Code terminal.
- Submit a prompt that triggers thinking:
Think step by step about the tradeoffs between a B-tree and an LSM-tree for a write-heavy workload. Be thorough.
- Observe: thinking header streams (e.g.,
Nesting... (25s · ↓ 722 tokens)), but the ▸ expand toggle reveals an empty block. Ctrl+O does not expose content. After response completes, no thinking text is visible anywhere in the transcript.
- Switch to Opus 4.6 with
/model claude-opus-4-6 and repeat — live streaming summarized thinking returns immediately, exactly as it worked yesterday.
Reproduced in all of: external PowerShell claude CLI, VS Code integrated terminal claude CLI, and VS Code graphical panel.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.112
Claude Code Version
2.1.112
Platform
Other
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Environment
- Claude Code version: 2.1.112
- OS: Windows 11 Pro
- Auth: Claude Max subscription (no
ANTHROPIC_API_KEY)
- Effort level: xhigh
- Model:
claude-opus-4-7 (regression does not occur on claude-opus-4-6)
- Platform: Claude Code CLI + VS Code extension, authenticated via Claude Max subscription
- Reproduced in: external PowerShell
claude CLI, VS Code integrated terminal claude CLI, and VS Code graphical panel
Note on "Last Working Version": Same Claude Code version (2.1.112) works correctly on Opus 4.6; the regression is model-specific, not client-version-specific.
Settings that should (per docs) enable thinking visibility
In ~/.claude/settings.json:
{
"effortLevel": "xhigh",
"showThinkingSummaries": true,
"alwaysThinkingEnabled": true
}
Verified via /config in an interactive claude session — all three are read as set.
Suggested fix
When showThinkingSummaries: true is set (or alwaysThinkingEnabled: true), Claude Code should explicitly send "display": "summarized" in the thinking object on requests targeting Opus 4.7 and any future model whose API default is omitted. This preserves existing user expectations without requiring Anthropic to reverse the API-level default.
References
Preflight Checklist
What's Wrong?
Summary
On Opus 4.7, extended thinking content is not streamed to the client even when
showThinkingSummaries: trueis set in~/.claude/settings.json. The thinking block header (token counter, elapsed time) appears, but the expand toggle reveals empty content. Ctrl+O has no effect. This regresses a core capability — live, course-correctable reasoning visibility — that worked correctly on Opus 4.6 and every prior Claude model.Actual behavior
showThinkingSummaries: trueappears not to trigger the client to senddisplay: "summarized"when targeting Opus 4.7. Since the Opus 4.7 breaking changes flipped the API default fordisplayfrom"summarized"to"omitted", the client now receives empty thinking blocks and has nothing to render. The client-side setting never overrides the server-side default for Opus 4.7.Impact
Live visibility into model reasoning is a primary reason developers enable extended thinking. It is essential for:
Losing live thinking on the flagship model reduces Opus 4.7 to effectively a black box for these workflows, making it less usable than 4.6 for anyone whose loop depends on observable reasoning.
What Should Happen?
Per the official Claude Code settings docs: "Show extended thinking summaries in interactive sessions. When unset or false (default in interactive mode), thinking blocks are redacted by the API and shown as a collapsed stub."
Setting
showThinkingSummaries: trueshould cause the client to senddisplay: "summarized"on the API request so thinking content is transmitted and rendered — producing live, streaming summarized thinking in the transcript, just as it did on Opus 4.6 and every prior model.Error Messages/Logs
Steps to Reproduce
~/.claude/settings.jsoncontains:{ "effortLevel": "xhigh", "showThinkingSummaries": true, "alwaysThinkingEnabled": true }/configin an interactiveclaudesession — all three are read as set.claudein PowerShell or VS Code terminal.Nesting... (25s · ↓ 722 tokens)), but the ▸ expand toggle reveals an empty block. Ctrl+O does not expose content. After response completes, no thinking text is visible anywhere in the transcript./model claude-opus-4-6and repeat — live streaming summarized thinking returns immediately, exactly as it worked yesterday.Reproduced in all of: external PowerShell
claudeCLI, VS Code integrated terminalclaudeCLI, and VS Code graphical panel.Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.112
Claude Code Version
2.1.112
Platform
Other
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
Environment
ANTHROPIC_API_KEY)claude-opus-4-7(regression does not occur onclaude-opus-4-6)claudeCLI, VS Code integrated terminalclaudeCLI, and VS Code graphical panelSettings that should (per docs) enable thinking visibility
In
~/.claude/settings.json:{ "effortLevel": "xhigh", "showThinkingSummaries": true, "alwaysThinkingEnabled": true }Verified via
/configin an interactiveclaudesession — all three are read as set.Suggested fix
When
showThinkingSummaries: trueis set (oralwaysThinkingEnabled: true), Claude Code should explicitly send"display": "summarized"in thethinkingobject on requests targeting Opus 4.7 and any future model whose API default isomitted. This preserves existing user expectations without requiring Anthropic to reverse the API-level default.References
displayfield semanticsshowThinkingSummaries