VSCode extension: assistant text preceding AskUserQuestion in the same turn is not displayed

Status Open
Reported on v2.1.198
Maintainer reply None cached
Activity 3 comments · opened Jul 11, 2026

Environment

  • Claude Code 2.1.198, VSCode native extension (macOS, Darwin 25.5.0)
  • Model: claude-fable-5

Bug

When the assistant emits a text block and then calls AskUserQuestion in the same turn, the text block is not rendered in the extension UI — the user sees only the question dialog. The text exists in the transcript (the assistant can quote it back later), but the user never saw it.

Repro pattern (happened twice in one session today)

  1. Assistant writes a multi-paragraph explanation (in our case: a briefing about a GitHub issue it was about to work on).
  2. Assistant calls AskUserQuestion in the same turn, with questions that depend on that explanation.
  3. User sees only the question dialog; the explanation text is missing from the conversation view. User responds with "I need you to tell me the context, I'm not sure I know what you're talking about" / "I'm not seeing that message that you refer to".

Both occurrences followed tool_use/tool_result blocks earlier in the same turn (the text was emitted between a Bash/gh tool result and the AskUserQuestion call), which may be the trigger — i.e. mid-turn text between tool calls being dropped, with AskUserQuestion making it user-visible because the user is forced to interact with a dialog whose context they never received.

Expected

All assistant text blocks in a turn are rendered in order, including those preceding an AskUserQuestion call.

🤖 Filed with Claude Code on the user's behalf.

View original on GitHub ↗

3 Comments

glen-84 · 1 month ago

Hit the same symptom (VSCode extension 2.1.216, Linux, claude-fable-5): assistant announced a PR title + multi-line body, then called AskUserQuestion in the same turn; only the question dialog appeared. Transcript forensics of the failing turns point at a mechanism upstream of the webview:

  • In both failing turns the assistant message contained no text block at all. Block order was thinking → thinking → tool_use (AskUserQuestion), where the second thinking block carries the narration channel (the channel tag is recoverable by base64-decoding the block's signature, which contains ASCII narration... vs thinking... for regular thinking blocks).
  • Thinking blocks are persisted content-stripped ({"type":"thinking","thinking":"","signature":"<encrypted>"}), so the prose is unrecoverable from the session JSONL. The encrypted payload size (~1.6 KB) matches the ~1.4 KB body the model later re-emitted.
  • The AskUserQuestion input in the same message referred to "the title and body above", so the model believed it had displayed the text.
  • Control case, same session, minutes earlier: two turns with a genuine text block before AskUserQuestion (thinking → text → tool_use) rendered fine in the extension.
  • A retry after telling the model the text was missing reproduced the exact same block shape. Re-emitting the content as a final text-only message (no trailing tool call) rendered correctly.

So at least on claude-fable-5, the failure can be the model routing user-facing prose into a narration-channel thinking block when it plans to end the turn with a tool call — which the extension does not render and the harness does not persist — rather than the UI dropping an emitted text block. That would also explain the "text never persisted to session JSONL" reports in #77410 and #77651. It may be worth checking whether the failing message in your transcript actually contains a text block, or a stripped thinking block of matching size.

_Drafted by Claude (Anthropic AI assistant)._

kanamoris-byte · 1 month ago

Reproduced consistently in the VSCode extension.

Environment

  • Claude Code VSCode extension, version 2.1.220 (entrypoint: claude-vscode)
  • VSCode on WSL2 (Linux 6.18.x microsoft-standard, Ubuntu)
  • Model: claude-fable-5

Symptom
In any turn where the assistant emits a text block and then calls AskUserQuestion, the text block is never rendered. The transcript pane shows only "Thinking" placeholder rows followed by the AskUserQuestion card. Reproduced on 3 consecutive turns in one session — 100% repro rate for text-then-AskUserQuestion turns, while plain text-only turns render fine.

Impact
Beyond the missing content, this actively degrades the conversation: the model believes its explanation/recommendation was delivered and the user answers the picker without ever seeing the reasoning (same model-side assumption issue as #67112). In our case the user saw three consecutive bare pickers and reasonably concluded the assistant was refusing to justify its choices.

Workaround
Instructing the assistant to stop using AskUserQuestion and ask in plain text (ending the turn) restores full visibility.

johnlawrimore · 24 days ago

Corroboration plus per-model measurement, from a 355-file transcript archive (~/.claude/projects, 2026-07-01 → 2026-08-06, 1,385 AskUserQuestion turns), desktop app on macOS — so not VS Code-specific.

Same fingerprint glen-84 described: 110/1,385 question turns (8%) contain no text block anywhere in the turn; 105 of those have thinking blocks with empty-string content still carrying a signature. Method: for each assistant message containing an AskUserQuestion tool_use, walk back to the last genuine user message (skipping type:"user" records whose content is a tool_result) and check for any text block in the turn (~20 lines of Python).

Per-model rates of no-text question turns:

| Model | Question turns | No text | Rate |
|---|---|---|---|
| claude-opus-5 | 59 | 23 | 39.0% |
| claude-fable-5 | 151 | 28 | 18.5% |
| claude-sonnet-5 | 218 | 35 | 16.1% |
| claude-sonnet-4-6 | 56 | 6 | 10.7% |
| claude-opus-4-8 | 903 | 18 | 2.0% |

So this is not fable-only: all five models show it, worst on opus-5, and it existed (2%) back on opus-4-8. Denominator caveat: uneven model usage across the period.

One human-corroborated instance: 2026-07-14T00:54:33Z, fable-5 — turn shape thinking → thinking → AskUserQuestion, no text block; the "rubric" the question referenced existed only inside an option's preview field; the user's contemporaneous next message complained he was seeing nothing but the questions. Complaint and record agree without interpretation.

Note the OP's case (text present in transcript, quotable later, not displayed) and the no-text-block variant in the comments are structurally different failures with the same symptom — worth keeping distinct when triaging. Cross-reference: #67071 tracks the related batched-tool-calls rendering loss (text present in JSONL, not rendered); the same archive shows both patterns. Whether they share the narration-channel root is not established.