VSCode extension: assistant text preceding AskUserQuestion in the same turn is not displayed
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)
- Assistant writes a multi-paragraph explanation (in our case: a briefing about a GitHub issue it was about to work on).
- Assistant calls
AskUserQuestionin the same turn, with questions that depend on that explanation. - 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.
3 Comments
Hit the same symptom (VSCode extension 2.1.216, Linux,
claude-fable-5): assistant announced a PR title + multi-line body, then calledAskUserQuestionin the same turn; only the question dialog appeared. Transcript forensics of the failing turns point at a mechanism upstream of the webview:textblock at all. Block order wasthinking → thinking → tool_use (AskUserQuestion), where the second thinking block carries thenarrationchannel (the channel tag is recoverable by base64-decoding the block'ssignature, which contains ASCIInarration...vsthinking...for regular thinking blocks).{"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.AskUserQuestioninput in the same message referred to "the title and body above", so the model believed it had displayed the text.textblock beforeAskUserQuestion(thinking → text → tool_use) rendered fine in the extension.So at least on
claude-fable-5, the failure can be the model routing user-facing prose into anarration-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 emittedtextblock. 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 atextblock, or a stripped thinking block of matching size._Drafted by Claude (Anthropic AI assistant)._
Reproduced consistently in the VSCode extension.
Environment
entrypoint: claude-vscode)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.
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 AskUserQuestiontool_use, walk back to the last genuine user message (skippingtype:"user"records whose content is atool_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'spreviewfield; 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.