Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
Variant of #27238 that #27271 would not fix. With the Claude provider, text the agent writes mid-turn (after reasoning, before a tool call) sometimes never appears. The chat shows a one-sentence paraphrase instead, as an assistant message whose native item id ends in :thinking:1. When the next tool is AskUserQuestion, the user gets a question card about text they never saw.
Here the message had two thinking blocks, so the second was promoted to assistant text as designed. But with T3's default thinking display (summarized, per the #27271 write-up), the promoted block holds only a summary of what the model wrote.
Not deterministic, because the model decides between text and thinking. In one session it reproduced 3 of 3 times:
- Claude provider,
claude-opus-5-5, effort high, default thinking display, no launch arguments. - In a turn that has already run some tools, ask the agent to write an intro line plus a 30-line block ending in a distinctive marker word, then call
AskUserQuestionabout it. - Compare the chat with Claude Code's session JSONL. When it reproduces, the message has two
thinkingblocks and atool_use, with notextblock, and the chat shows only a short paraphrase of the intro.
Expected behavior
The text the model wrote for the user appears in full in the chat before the question card.
Actual behavior
Only a summary appears. In the marker test, the JSONL holds thinking blocks of 1,405 and 146 characters, and neither contains the marker word. The chat showed only the 146-character block, a paraphrase of the intro line.
- An immediate repost of the same text in the same turn was lost the same way.
- A short message written right after a tool result, with no reasoning before it, came through.
- Final messages of a turn always came through.
- In real use, a drafted email reply and the agent's answer to a direct question each reached me only as a one-line summary, and I answered question cards about text I never saw.
The full text is not in the JSONL, so promotion cannot recover it. A fix may need a different display setting for these blocks, or another way to get the full text.
Related: #27238 / #27271 (lone thinking block before AskUserQuestion stays a collapsed Thought), #28775 (text before an AskUserQuestion popup not shown), #8879 and #30725 (context message folds under "Worked for").
Impact
Major degradation or frequent failure
Version or commit
0.1.8-nightly.20261107.4327 (desktop)
Environment
Windows 11, T3 Code desktop, Claude Code 2.1.319, claude-opus-5-5, effort high, default thinking display
Logs or stack traces
Content blocks of the affected assistant message in Claude Code's session JSONL (marker test):
thinking len=1405 contains marker: no
thinking len=146 contains marker: no <- shown in chat as the reply (:thinking:1)
tool_use AskUserQuestion
(no text block)Screenshots, recordings, or supporting files
No response
Workaround
Before opening a question, the agent reads the thread record. If its text shows only as a :thinking:1 paraphrase, it ends the turn with the content as its final message and asks in chat instead. Final messages have always arrived intact.
Activity
michaelbriggsaudio commentedon Nov 8, 2026
Same bug also drops screenshots. An agent wrote three mid-turn messages with Markdown images (
), each right beforeAskUserQuestion. None appeared. The session JSONL has notextblock for any of the three messages, only twothinkingblocks and thetool_use, and none of the thinking blocks contain the image Markdown. The chat showed only one-line:thinking:1paraphrases. The agent took this to mean T3 can't display local images, which is wrong: the same image Markdown in a final message renders in every path format I tried (backslash, forward slash,<…>-wrapped,file:///, and paths inside and outside the thread folder). Images sent throughhtml_renderstill arrive, because they travel inside a tool call.Workaround I'm using until a fix lands: before a question card, the agent reads the thread record. If its last message shows only as a
:thinking:Nsummary, it re-sends the content withhtml_renderand then opens the card.andrewfree commentedon Nov 11, 2026
Another case, on a tool call that is not
AskUserQuestion, plus two notes on the fix.Case. T3 Code Nightly 0.1.9-nightly.20261111.4501, macOS arm64, Claude Code 2.1.319,
claude-opus-5-5, default thinking display, no launch arguments. The model answered my question, ran one more Bash command (bookkeeping that my own hooks ask for at the end of a turn), then wrote two short sentences. The API message holding the answer has twothinkingblocks (973 and 298 characters) and thetool_use, with notextblock. T3 promoted the 298-character block as #18923 intends, and it then folded under "Worked for 46s" (#8879). So any tool call after the answer can trigger this, not only a question card. The same rule is in v0.1.9 and on main atd2c2595.A different
displayvalue will not recover the text. Anthropic's progress updates table gives the block an empty field underomittedand "Summary text" under bothupdatesandsummarized, and says: "The text you receive is a summary of the progress update, normally a sentence or two."That leaves the prompt, or a tool. A comment on #18923 already suggested a system prompt line. T3's appended Claude instructions have none on main. Claude Code ships one for its own final-message-only view: the 2.1.322 binary has a "Focus mode" prompt saying "the user only sees your final text messages from each response" and "it's important to tell the user everything they need to know in the final message". Possible wording:
This would lower the rate, not remove it, because the model picks the channel per message. For content that must arrive verbatim mid-turn, Anthropic's Opus 5.5 prompting guide recommends "a simple tool for sending the user a message".
Drafted with Claude Fable 5.2 (
claude-fable-5-2) in Claude Code.