Repository navigation
Description
Description
With Claude Opus 5.5 on Anthropic (OAuth), the assistant sometimes writes the message meant for me as one of Anthropic's progress updates between tool calls instead of as text. Anthropic's docs describe those as notes "written for the person watching the agent", returned as their own thinking block with their own signature, right before the tool_use block they introduce. OpenCode stores that block as a reasoning part, which is collapsed, so I only see the tool call. When the tool is question, I get the question without the context the assistant meant to give me.
The stored parts of one affected message (anthropic/claude-opus-5-5, variant high, 1.18.32). The content is private, so only the shape:
step-start
reasoning 142 chars, signature decodes to "thinking"
reasoning 199 chars, signature decodes to "narration"
tool question
step-finish tool-calls
There is no text part, and the second reasoning part holds what was meant for me. A second message has the same shape (154 and 260 chars). By "decodes" I mean base64-decoding the signature and reading the ASCII type name inside, so I may be misreading it. Other turns in the same session stored their reply as a text part before the tool call, so it's intermittent. It has happened about ten times in the last week, always right before a question call, usually after a long run of tool calls with no visible text between them.
The reasoning text is not empty, so the provider returns the text. As far as I can tell the bundled @ai-sdk/anthropic (3.0.111) can't send thinking.display, so I don't know which display mode OpenCode ends up using. It would help if OpenCode showed progress updates as visible text (Anthropic's beta display: "updates" returns them as readable text and leaves normal reasoning empty), or at least exposed them as a distinct part type that plugins and the UI can handle.
A plugin hook that rejects a question call when the message has no text part, asking the model to retry, fixes it only some of the time.
#49708 has the same symptom (text sent together with a question call missing from the stored parts). Its reasoning part is empty and I don't know which provider it used, so I'm not sure it's the same cause and filed this separately.
Plugins
opencode-claude-auth@2.2.1 provides the Anthropic login, so I couldn't test without it. It passes the response blocks through unchanged as far as I can see.
OpenCode version
1.18.32 for the stored messages above, also seen on 1.18.34.
Steps to reproduce
Intermittent, so no exact steps. Opus 5.5 with variant high in the TUI; it tends to happen when the assistant calls question after a long run of tool calls.
Screenshot and/or share link
None, the session is private.
Operating System
Linux (Ubuntu 25.10)
Terminal
Konsole
Activity
github-actions commentedon Oct 2, 2026
This issue might be a duplicate of existing issues. Please check:
questiontool call, though this issue describes a possible Anthropic progress-update/reasoning-block cause.PrismKitty commentedon Oct 7, 2026
I'm seeing the same thing on v2.0.19 with
anthropic/claude-opus-5-5on the Anthropic provider, and this issue was filed against 1.18.The default variant hides these notes completely. If no variant is selected, OpenCode sends no
thinkingconfig. Anthropic then uses itsdisplay: "omitted"default, so every reasoning block and every progress update comes back empty, and the user sees nothing at all. Selecting an effort variant sendsdisplay: "summarized". Then the note at least shows up as a short summary in the collapsed reasoning.Progress updates can already be identified. As the original report says, a progress update's signature decodes to
narration, and a reasoning block's decodes tothinking. In my sessions, everynarrationblock sat in a step that had notextpart.I can reproduce it, but not on demand. While investigating this, I asked the model to write a test line as reply text next to a
todowritecall. On the first try, the step was stored asreasoning(thinking), thenreasoning(narration), thentool, and it had notextpart. On the second try, with the same instruction, the line was stored as atextpart.Workaround for the default variant. This model setting brings the summaries back. I checked it with a fresh default-variant session, and that session stored non-empty reasoning text:
Two changes would fix this properly:
display: "summarized"for adaptive Anthropic models when no variant is selected. fix(opencode): default adaptive Anthropic models to summarized thinking #34848 did this, but the cleanup bot closed it unmergeddisplay: "updates"(beta headerthinking-display-updates-2026-08-18) and rendernarrationblocks as visible text, separate from reasoning. The API never returns a progress update's full text, so the user would still only get a summary, but it would no longer be hidden in collapsed reasoningthdxr commentedon Oct 11, 2026
Thanks for the report! OpenCode 2.0 is now out and development is focused on V2, so we're closing issues filed against OpenCode 1. Please upgrade (
opencode upgrade --major, details: https://anoma.ly/notes/opencode-2-0), and if this is still relevant on 2.0, reopen this issue or open a new one with your 2.0 version.— from 𝕺𝖕𝖊𝖓𝕮𝖔𝖉𝖊
llucax commentedon Oct 12, 2026
I can't reopen, but the comment above says the same thing happens in V2, so it might be worth reopening instead of filling a duplicate and get all the history and findings lost.
llucax commentedon Oct 12, 2026
BTW, it is a shame that you are completely abandoning v1, as many plugins didn't make the jump yet, it is not always possible to upgrade. The plugin ecosystem in opencode is great, but it needs a little patience when a major upgrade like this rolls out...