Opus 4.7 thinking summaries not rendered (VSCode extension 2.1.112)
Summary
The VSCode extension (2.1.112) does not render thinking summaries for claude-opus-4-7[1m], despite correct settings. Thinking rendered normally prior to the 4.7 rollout.
Environment
- Claude Code VSCode extension: 2.1.112 (current marketplace version)
- Platform: Linux (WSL2)
- Model:
claude-opus-4-7[1m] - Relevant settings in
~/.claude/settings.json:
``json``
{ "effortLevel": "max", "showThinkingSummaries": true, "viewMode": "verbose" }
alwaysThinkingEnabledabsent (i.e. default-enabled per schema).thinkingLevel:"default_on"confirmed in the extension log.
Expected
A collapsible <details> thinking summary renders inline next to the assistant message (as it did on Opus 4.6).
Actual
No thinking summary/chevron renders, even for reasoning-heavy turns.
Root cause (per binary analysis)
In the bundled resources/native-binary/claude, the model-picker resolution has an explicit if branch for claude-opus-4-6[1m] returning a proper descriptor, but no equivalent branch for claude-opus-4-7[1m]. Selection falls through to the generic Custom model branch, which strips capability metadata — including thinking support. The string claude-opus-4-7 exists in the binary (with a capability table), but the [1m] suffix variant is missing:
count of claude-opus-4-6[1m]: 6
count of claude-opus-4-7[1m]: 0
Workaround
None found that works — the availableModels filter strips 4.6 at a later stage, so a byte-level rename of claude-opus-4-6[1m] → claude-opus-4-7[1m] (length-preserving) has no effect. Users on 4.7[1m] lose thinking rendering until a fix ships.
Suggested fix
Add a claude-opus-4-7[1m] entry alongside the existing claude-opus-4-6[1m] branch in the model-picker logic (g9H in the bundled CLI), and include it in the in-binary model capability table.
15 Comments
Thinking summaries not rendering for
claude-opus-4-7[1m]in VS Code extension 2.1.112, while they worked on Opus 4.6, is likely a version-specific rendering path issue — the extension may have a model version check for thinking summary rendering that was not updated when 4.7 rolled out, causing the renderer to fall through to a non-thinking branch.From an agent capability perspective, thinking summaries are a significant quality-of-experience feature for users who use extended thinking — without them, Opus 4.7 on max effort appears identical to lower-effort modes in the UI, removing a key signal about what the model is doing.
Narrowing the failure:
thinkingLevel:"default_on"suggests the thinking is configured but may not be rendering. Look for any warning about unknown response content types in the extension log.thinkingcontent blocks if extended thinking is active. If those blocks are present in the response but not rendered, it is a rendering bug. If they are absent, the model itself is not doing extended thinking despite the configuration.claude --model claude-opus-4-7[1m]in terminal with--output-format json. If the JSON response includes thinking blocks, the rendering bug is VS Code extension-specific. If no thinking blocks, the issue is in how the extension configures the model request.The 4.6 → 4.7 model identifier format change (
claude-opus-4-7[1m]vs previous) may be the culprit — the extension's thinking summary renderer might have a model version check that only enables the thinking UI for known-good model IDs.dupe of #49322 (see https://github.com/anthropics/claude-code/issues/49322#issuecomment-4265369864 for workaround)
Same issue. Strongly need this feature.
Same issue here as well. Would prefer to not have to rely on a wrapper script to see thinking when I want to use it in vs code.
Hitting this too on extension
2.1.112withclaude-opus-4-7[1m]. ConfirmedshowThinkingSummaries: true,effortLevel: "max",viewMode: "verbose"all ignored. No chevron, no summary, even on reasoning-heavy turns. Log showsthinkingLevel: "default_on"so the setting is reaching the binary, but the model descriptor strips the capability downstream. Downgrading toclaude-opus-4-6[1m]restores thinking display immediately, which matches the missing model-picker branch diagnosis in the OP. +1 for adding the 4.7 entry to the in-binary capability table.It is not related to the missing branch the OP talks about, which is just a red herring. It's due to an intentional server-side change to disable thinking summaries by default specifically for Opus 4.7.
See the other thread #49322, which this is a dupe of, for technical details and possible workarounds.
Same bug on Windows / VS Code extension 2.1.x with Opus 4.7. Not macOS-specific.
Root cause is now public (credit to the workaround in #8477 (comment)): Opus 4.7 changed the API default for thinking blocks from
display: "summarized"todisplay: "omitted". The blocks are still in the response stream, but thethinkingfield is empty unless the caller passesdisplay: "summarized"explicitly. Documented in Anthropic's own migration guide: https://platform.claude.com/docs/en/about-claude/models/migration-guide#migrating-to-claude-opus-4-7Net effect:
showThinkingSummaries,alwaysThinkingEnabled, andviewMode: "verbose"have nothing to render, because Claude Code does not passdisplay: "summarized"when calling the Opus 4.7 API.showThinkingSummariesis the documented, official way to surface thinking in the VS Code extension, and it is silently broken on Opus 4.7. The settings surface never caught up to the API change.Two undocumented workarounds (from the same comment):
~/.claude/settings.json:``
json
``{
"env": {
"CLAUDE_CODE_EXTRA_BODY": "{\"thinking\":{\"type\":\"adaptive\",\"display\":\"summarized\"}}"
}
}
--thinking-display summarizedThe env var approach works for the VS Code extension since it delegates to the CLI.
Why this is high-priority, not a cosmetic regression:
Visible real-time thinking was load-bearing for the steering loop. With it visible, you could stop the model going down a wrong branch before it spent N turns of token budget on a wrong premise; you could verify it had internalized constraints from CLAUDE.md / memory rather than hallucinated them; and you could audit assumptions before committing to a plan.
With it hidden behind an unexpandable pill, you cannot tell whether a wrong final answer came from a wrong premise or a wrong execution of a right premise. Silent assumption drift becomes invisible until after the wrong action is taken. "Thought for 376s" is a duration, not a signal. It tells you nothing actionable. This is a regression in the developer's ability to supervise the agent.
On the user side: this is a paid product. Pro at $20/month, Max at $100–$200/month. Paying customers should not have to monkey-patch
cli.js, reverse-engineer an undocumentedCLAUDE_CODE_EXTRA_BODYenv var, or scrape issue threads to recover functionality that worked in the previous release of the same product. The workaround being undocumented is itself a bug. The gap between what the API supports and what Claude Code exposes as a first-class setting keeps widening with every model bump.Related open issues, same root problem:
display: "summarized"for Opus 4.7 (same root cause, named explicitly)showThinkingSummariesenabledWhat would actually resolve this:
display: "summarized"by default for Opus 4.7+ whenshowThinkingSummariesandalwaysThinkingEnabledare on. Or expose a first-classthinkingDisplaysetting alongside the existingthinkingEnabledandeffortLevel.showThinkingSummariesactually shows summaries when the data is present.showThinkingSummariessemantics on Opus 4.7+ instead of describing behavior that no longer applies.Hi team,
Reporting that issue #49902 (Opus 4.7 thinking summaries not rendered in the VSCode extension) is still present in the latest published version, 2.1.126 — not just 2.1.112 as originally reported.
Environment
OS: Windows 11 Pro 26200
Extension: anthropic.claude-code-2.1.126-win32-x64
Model in use: claude-opus-4-7[1m]
Symptom: no thinking blocks appear in the conversation panel, even with Extended Thinking toggled on. The same model in the terminal CLI renders thinking correctly. Switching to claude-opus-4-6[1m] in the same extension immediately restores thinking rendering.
Root cause (confirmed by inspecting resources/native-binary/claude.exe)
The bundled JS inside the binary contains the model-resolution switch:
else if (_ === "opus" && Rz()) return UVH([...q, Sl7(!1)]);
else if (_ === "opus[1m]" && Rz()) return UVH([...q, sVq(!1)]);
else if (_ === "claude-opus-4-6" && Rz()) return UVH([...q, El7(H,!1)]);
else if (_ === "claude-opus-4-6[1m]" && Rz()) return UVH([...q, hl7(H,!1)]);
else { / falls through to {value:_, label:_, description:"Custom model"} / }
There is no branch for "claude-opus-4-7" or "claude-opus-4-7[1m]", so 4.7 falls through into the generic Custom model path, which strips the capability metadata required to render thinking blocks.
The metadata factory function for 4.7 — Vl7() — already exists in the binary (it returns {label: "Opus 4.7 (1M context)", ...}), it is just never invoked because the corresponding switch arms are missing.
Suggested fix
Add the two missing branches before the fallthrough, mirroring the 4.6 ones:
else if (_ === "claude-opus-4-7" && Rz()) return UVH([...q, / Opus 4.7 factory, non-1M / ]);
else if (_ === "claude-opus-4-7[1m]" && Rz()) return UVH([...q, Vl7(H,!1)]);
Counts of the relevant string in the shipped 2.1.126 binary, for reference:
claude-opus-4-6[1m]: 6 occurrences
claude-opus-4-7[1m]: 0 occurrences
Happy to provide byte offsets if useful. Thanks for the great tool overall.
Three weeks, and still no fix.
This is a serious issue, and causing divergence and failures because I cant spot when Opus 4.7 is off track.
I would really appreciate a fix to this issue its my single biggest daily problem.
this is still broken on 2.1.132 and is significantly impacting my workflow.
The thinking display is critical for me because:
This issue has been open for 3+ weeks and looks like a missing branch in the model-picker logic. Could we get a status update on the fix timeline? Even a temporary toggle (e.g.
"forceShowThinking": truein settings.json) would unblock affected users while a proper fix is in progress.Affected: VS Code extension 2.1.112 through 2.1.132, Opus 4.7 model.
Seems like workaround number 1 (
CLAUDE_CODE_EXTRA_BODY) breaksWeb Searchtool :(Getting
@zaitsman I filed #56984 for this a couple days ago
Filed #59844 with a one-line CLI fix (preferred) or one-line extension fix (alternative) that resolves the symptom here and across the related thread (#49322 / #49268 / #51131 / #49757 / #48065 / #49739 / #33163 / #8477 / #30958).
The CLI-side fix: drop the
!getIsNonInteractiveSession()gate from theK3.display = "summarized"assignment, soshowThinkingSummaries: trueactually does what its name promises in non-interactive surfaces (VS Code chat panel, SDK,--print).Structurally distinct from the
CLAUDE_CODE_EXTRA_BODYenv-var workaround that #56984 documents breaking WebSearch / WebFetch: both fixes in #59844 set onlydisplay, nottype, so the CLI's per-request thinking-disable logic continues to work for forced-tool-use and incompatible-model sub-calls. Verified locally on v2.1.142.Disclosure: written with Claude Opus 4.7.
see https://github.com/anthropics/claude-code/issues/49322#issuecomment-4823842675
this issue (which is a dupe of #49322) is now fixed since vs code extension version 2.1.176
This bug appears again for Version 2.1.205