[BUG] Opus 4.7: thinking content empty despite `showThinkingSummaries: true` — live reasoning visibility lost
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
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.jsoncontains:
``json``
{
"effortLevel": "xhigh",
"showThinkingSummaries": true,
"alwaysThinkingEnabled": true
}
- Verify via
/configin an interactiveclaudesession — all three are read as set. - On Opus 4.7 (default for Max subscription), run
claudein 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-6and 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 onclaude-opus-4-6) - Platform: Claude Code CLI + VS Code extension, authenticated via Claude Max subscription
- Reproduced in: external PowerShell
claudeCLI, VS Code integrated terminalclaudeCLI, 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
- What's new in Opus 4.7 — "Thinking content omitted by default"
- Building with extended thinking —
displayfield semantics - Claude Code settings —
showThinkingSummaries - Related: #43071 (thinking redacted despite the setting), #31489 (VS Code extension parity gap), #8477 (feature request: always show thinking)
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗