Extended thinking blocks not expandable for Sonnet/Opus/Fable in VSCode extension (works with Haiku)
Description
Extended thinking ("Thinking...") blocks cannot be expanded/collapsed in the VSCode extension chat panel when using Sonnet, Opus, or Fable models. They render as a static, non-interactive label showing only the duration (e.g. "Thought for 3417s") with no way to view the actual reasoning text. This works correctly with Haiku, where the thinking block is expandable.
Environment
- OS: Pop!_OS 24.04 LTS (also reproduced on Windows 11 — see below)
- Display server: Wayland (also tested forcing X11 via
--ozone-platform=x11— same result, ruling out compositor/rendering backend) - VSCode: 1.127.0
- Claude Code extension:
anthropic.claude-codev2.1.201 - Affected models: Sonnet (5), Opus, Fable
- Unaffected model: Haiku
Steps to reproduce
- Open a new chat in the Claude Code VSCode extension.
- Send a prompt to Sonnet (or Opus/Fable) that triggers extended thinking.
- Once the response streams in, try to click/expand the "Thinking..." block in the chat.
- Observe: no expand affordance, no arrow/chevron icon, clicking anywhere on the block does nothing.
- Repeat with Haiku on the same machine/session — the thinking block is expandable and shows full reasoning text.
What I found while debugging
Using "Developer: Open Webview Developer Tools" to inspect the chat webview DOM, the thinking block for Sonnet renders as:
<div class="thinking_aHyPQ thinkingV2_aHyPQ">
<div class="thinkingSummary_aHyPQ thinkingStatic_aHyPQ">
<span>Thought for 3417s</span>
</div>
</div>
Note the thinkingStatic_aHyPQ class — there is no <details>/<summary> element, no toggle icon, and no hidden content to expand. The component appears to deliberately render in a non-interactive "static" mode for this block, as opposed to the interactive rendering used elsewhere (e.g. tool-use blocks use an actual <summary> with expandable content below it).
This looks consistent with a known API-level behavior change: on Claude Sonnet 5 / Opus 4.7 / Opus 4.8 / Fable 5, the thinking.display parameter (which controls whether the model's reasoning text is returned) now defaults to "omitted" instead of "summarized". Under "omitted", the API still returns thinking content blocks, but their thinking text field is an empty string — only duration/timing metadata is meaningful. Older/other models (and apparently Haiku, or the extension's Haiku code path) may not be affected by this default change.
Hypothesis: the extension is not passing thinking: {..., display: "summarized"} when calling the API for Sonnet/Opus/Fable, so it receives thinking blocks with empty text — and the UI correctly (if unhelpfully) falls back to a non-expandable "static" summary because there's nothing to show. If this is right, the fix is to explicitly request display: "summarized" for these models so the full reasoning text is returned and the existing expand/collapse UI has content to render.
What I've ruled out
- Not a Linux/X11/Wayland rendering issue — reproduces identically forcing
--ozone-platform=x11, and independently reproduces on Windows 11 with the same extension version and models. - Not a click-target/CSS issue — there is no interactive element in the DOM at all for the affected blocks (confirmed via webview DevTools inspection), so it's not a hit-testing or z-index problem.
- Unrelated console noise also present in devtools (CSP
font-srcwarnings fordata:URIs, "Interactive element inside<summary>" a11y warning on unrelated tool-use blocks) — investigated separately, do not appear related to this issue.
Expected behavior
Thinking blocks for Sonnet/Opus/Fable should be expandable and show the model's reasoning text, consistent with Haiku's current behavior.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗