Skip to content

[Bug]: Claude reply text promoted from a second thinking block shows only a summary, so the full text is lost #32877

Closed

Description

@michaelbriggsaudio

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:

  1. Claude provider, claude-opus-5-5, effort high, default thinking display, no launch arguments.
  2. 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 AskUserQuestion about it.
  3. Compare the chat with Claude Code's session JSONL. When it reproduces, the message has two thinking blocks and a tool_use, with no text block, 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

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Nov 8, 2026
  2. michaelbriggsaudio commented on Nov 8, 2026

    @michaelbriggsaudio
    Author

    Same bug also drops screenshots. An agent wrote three mid-turn messages with Markdown images (![…](C:\…\shot.png)), each right before AskUserQuestion. None appeared. The session JSONL has no text block for any of the three messages, only two thinking blocks and the tool_use, and none of the thinking blocks contain the image Markdown. The chat showed only one-line :thinking:1 paraphrases. 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 through html_render still 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:N summary, it re-sends the content with html_render and then opens the card.

  3. andrewfree commented on Nov 11, 2026

    @andrewfree

    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 two thinking blocks (973 and 298 characters) and the tool_use, with no text block. 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 at d2c2595.

    A different display value will not recover the text. Anthropic's progress updates table gives the block an empty field under omitted and "Summary text" under both updates and summarized, 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:

    Text you write before a tool call may reach the user only as a one or two sentence summary. Put anything the user must read in full in your final message, after your last tool call.

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions