Desktop app: assistant text emitted before tool calls is never rendered, and may not be persisted to the session transcript
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?
When a single assistant turn interleaves text with tool calls in the Windows desktop app, any assistant text that is followed by more tool calls is lost to the user. Two manifestations:
A. Persisted but never rendered. An assistant message containing only a text block, emitted between tool calls, exists in the session .jsonl (standalone assistant record with a single text content block) but is not displayed anywhere: not in the conversation view, and not inside the expanded "used N tools" activity group either. Only the final text block of the turn (with no tool calls after it) is rendered.
B. Not persisted at all. A text block that shares the same assistant response with tool_use blocks (text preamble + tool calls in one message) leaves no trace in the .jsonl — searching for multiple distinctive substrings of that text yields zero hits, while the surrounding tool_use/tool_result records of the same turn are present.
This looks related to #76635 (CLI: text between tool calls and AskUserQuestion never persisted), but this report is from the desktop app, involves only ordinary tool calls (no AskUserQuestion), and adds variant A where the text IS persisted to disk yet still never rendered.
Practical impact: when the user sends questions while the agent is mid-task and the model answers before continuing with tool calls, the answer is invisible — the model appears to have ignored the user. In variant B the text is unrecoverable even from disk.
What Should Happen?
Assistant text emitted mid-turn should be visible in the conversation (inline, or at minimum inside the expanded activity group), and should always be persisted to the session .jsonl transcript.
Error Messages/Logs
None — the text is dropped silently, with no error output anywhere.
Steps to Reproduce
- In the Windows desktop app, give the agent a long multi-step task that involves several tool calls (edit files, run background commands).
- While it is working, send a message containing several questions (it is surfaced to the model mid-turn).
- The model replies with a text block answering the questions, then continues with further tool calls (Write/Bash/Edit), and ends the turn with a short unrelated wrap-up text.
- Observe the conversation: only the wrap-up text is rendered. Expanding the "used N tools" activity group shows only tool cards — the answer text is not there either.
- Search the session transcript (
%USERPROFILE%\.claude\projects\<project>\<session-id>.jsonl) for distinctive substrings of the missing answer:
- If the text was emitted as its own assistant message before tool calls: the record exists in the jsonl but was never rendered (variant A).
- If the text shared one assistant response with tool_use blocks: zero hits anywhere in the jsonl (variant B).
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.202 (Claude Code) — bundled in Windows desktop app build 1.20186.1.0 (Microsoft Store)
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
- Desktop app: Claude 1.20186.1.0 (Microsoft Store build);
claude --versionfrom the bundled core reports 2.1.202. - Verified variant A by locating the standalone text record in the session jsonl (present on disk, absent from the UI).
- Verified variant B by exhaustively searching unique substrings of the missing message (0 hits) while the same turn's tool_use/tool_result records are present; a control text message that ended a later turn is persisted and rendered normally.
- Permission mode: auto; heavy multi-tool agentic session (background tasks + file edits) when observed.
- Happy to provide a sanitized session
.jsonlexcerpt on request.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗