Skip to content

[Bug]: Claude 5.x text written before a tool call is shown as a summarized "Thought" because the adapter forces thinking display "summarized" #18355

Closed

Description

@tecnobrat

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

  1. In a Claude thread on Claude Opus 5.5, give the agent a task where it thinks, writes findings for the user, then calls a tool (e.g. AskUserQuestion) in the same response.
  2. Look at the timeline while the question is waiting for an answer.

The model decides which form the text takes, so it doesn't happen every time. In one thread, four tests each put a marker word in text written just before an AskUserQuestion call:

Test Order in the response Stored by Claude Code as Shown in T3
1 text → question text visible
2 command → text → question text visible
3 thinking → text → question thinking collapsed "Thought", reworded
4 thinking → command → text → question text visible

Expected behavior

Text the model writes for the user before a tool call appears as assistant text, in place, before the tool call.

Actual behavior

It appears as a collapsed Thought row whose text is reworded, not what the model wrote. When the tool is AskUserQuestion, the question card shows up with no visible explanation.

Example from my thread, in order:

  • Thought: "I should check the no-spec-docs.md memory file…"
  • Command: cat no-spec-docs.md …
  • Thought: "There's a memory file saved today…"
  • Thought: "Found it: no-spec-docs.md turns an offhand comment into a blanket 'never write spec/design docs' rule…"
  • AskUserQuestion: "What should I do with the no-spec-docs memory?"

The model wrote the third Thought's content as its reply to me. I only saw it as a reworded, collapsed Thought.

Image

Cause

On Claude 5.x, text the model writes between tool calls can come back as a thinking block. Anthropic's Opus 5.5 migration guide says "Text between tool calls is returned in thinking blocks." Under summarized display, those blocks can't be told apart from reasoning. On main at d07a07f3:

  • apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts:980–985 defaults thinking-display to summarized, and :1031 requests thinking: { display: "summarized" }.
  • :6708 onward stores every thinking content block as a reasoning item.

So text written for the user is summarized and filed as reasoning. This is "problem 2" in this comment on #11353, which measured the shape in 23% of Opus 5.5 responses and 45% of Fable 5.1 responses. #11353 was closed when #2829 merged, and #14698 only changes folding, so neither addresses it.

Possible fix

For Claude 5.x, request the updates display mode (highlights in the CLI). Or, as the migration guide recommends, render the non-empty thinking block that comes right before a tool_use inline as assistant text.

Impact

Major degradation or frequent failure

Version or commit

T3 Code 0.0.46-nightly.20261011.2980. Code checked on main at d07a07f3.

Environment

Linux (Fedora 44), AppImage desktop app, Claude Code 2.1.296, Claude Opus 5.5

Logs or stack traces

The Claude Code session JSONL for the turn above has the user-facing text stored as a thinking block, followed directly by the tool call, with no text block:

{"type":"thinking","thinking":"Found it: `no-spec-docs.md` turns an offhand comment into a blanket \"never write spec/desi…"}
{"type":"tool_use","name":"AskUserQuestion"}

Workaround

None through settings. #11353 mentions the launch argument --thinking-display highlights. I haven't tested it, and the flag isn't listed in claude --help.

Activity

  1. juliusmarminge commented on Oct 11, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Confirmed on main. ClaudeAdapterV2.ts defaults thinking-display to summarized (L980–985, L1031), and the stream handler at L6708 files every thinking block as a reasoning item. On Claude 5.x, Anthropic returns text between tool calls as thinking, so user-facing text written right before a tool_use ends up as a reworded, collapsed Thought.

    Scope for a fix: we won't change the default display mode. Showing more raw thinking is what we declined in #13640. The narrow fix is to render the final non-empty thinking block right before a tool_use (on Claude 5.x) as assistant text, which is what the migration guide recommends. Summarized display may still reword that block, and that part is upstream.

    #11353/#2829 and #14698 don't cover this, so I'm keeping it open as a bug.

  2. added
    bugSomething is broken or behaving incorrectly.
    acceptedfeature request accepted
    via-triageFiled through npx t3 triage
    on Oct 11, 2026
  3. tecnobrat commented on Oct 11, 2026

    @tecnobrat
    Author

    More detail on the example under Actual behavior, since it bears on the rewording point above. The turn's full content, from the Claude Code session JSONL:

    1. thinking: "I should check the no-spec-docs.md memory file…"
    2. tool_use: Bash
    3. thinking: "There's a memory file saved today…"
    4. thinking: "Found it: no-spec-docs.md turns an offhand comment into a blanket 'never write spec/design docs' rule…"
    5. tool_use: AskUserQuestion

    The turn has no text block. Afterward, the model said it had written this reply to the user just before the question:

    Yes. no-spec-docs.md, written earlier today, is causing it. It quotes you once ("I don't want you to write a spec... I don't read them") and turns that into a blanket rule: never write spec or design documents, even when the brainstorming skill calls for one. It's loaded in every session's index as "never write spec/design docs," so every thread now follows it.

    design-discussions.md also links to it, but that file is about how to discuss options, not about specs.

    Block 4 is a summary of that reply:

    Reply the model says it wrote Block 4 (shown as a Thought)
    "turns that into a blanket rule: never write spec or design documents" "turns an offhand comment into a blanket 'never write spec/design docs' rule"
    "even when the brainstorming skill calls for one" "overriding even the brainstorming skill's needs"
    "loaded in every session's index" "loaded in every session index"
    "design-discussions.md also links to it, but that file is about how to discuss options, not about specs" "design-discussions.md also links to it despite being unrelated to specs"

    The full reply was never stored or shown. Only the summarized thinking block exists. The quoted reply is the model's own recollection, since the original wording isn't in any log.

    So the rewording isn't hypothetical: with the narrow fix, this case would show block 4's summary as assistant text, not the reply the model wrote.

  4. diogovalada commented on Oct 13, 2026

    @diogovalada

    I’m seeing this too. When I steer Claude mid-task, it often replies to me and then keeps working, but those replies seem to get buried in the collapsed thinking/tool activity. I end up missing answers to my messages.

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

    acceptedfeature request acceptedbugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions