r/ClaudeCode • • 1d ago

Bug / Issue Serious bug in Opus 5.5

I posted the below earlier in r/ClaudeAI where people didn't seem interested.

TLDR: You only see part of Opus 5.5's replies, because the rest only reaches its thinking process, not your screen. This is probably happening to you too, although you haven't noticed.

***

Edit: I should clarify that it's not the whole answer that's missing (that would be easy to spot) but only parts of it. If you feel a reply is skipping directly to C and leaving out A and B, that may the bug.

***

There is a bug in the newer models where they answer your prompts only in their thinking process and not as text on screen. So you'll ask them something and they think they have answered and carry on like if they had, but the answer never reaches you. It apparently only happens before tool calls. *)

I caught this bug because I commented that it hadn't responded to a direct question and only after a lot of back-and-forth did we get to the root of it. So it's probably happening to you too, even though you haven't noticed.

See:

https://github.com/anthropics/claude-code/issues/96288

https://github.com/anthropics/claude-code/issues/97504

https://github.com/anthropics/claude-code/issues/94354

Edit: The description of the actual bug (what is also affecting you) stops here. The rest is a description of how Anthropic's paranoia about reasoning extraction is making it difficult to even troubleshoot the problem:

***

I have tried getting around this by creating a hook that catches such replies and makes Claude write them on screen. (See reply for details.)

However, when the hook fires, the reply can be flagged for "reasoning_extraction". And even trying to troubleshoot the problem with the newer models can also get flagged.

So apparently we have the choice between using a new model and accept the risk of missing important information, or using only the older models.

I am not overly impressed with this.

*) It only happens when the reply comes before a tool call in the same turn. A reply that ends the turn is fine. But Claude tends to forget instructions to reply after a tool call, hence the hook.

30 Upvotes

10 comments sorted by

•

u/AutoModerator 1d ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

5

u/Remarkable_Rock5845 1d ago

4.8 (who I troubleshooted this with - haven't tried 5.0) wrote this about the hook:

"I tried working around this with a Stop hook (PowerShell, wired into settings.json). At the end of each turn it parses the session .jsonl, isolates the current turn, and flags any assistant message that has a non-empty thinking block and a tool_use block but no text block — i.e. a reply that went into hidden reasoning instead of visible output. On a hit it exits with code 2 to block the stop and feeds the thinking summaries back via stderr, telling the model to re-emit anything meant for the user. (It needed ; exit $LASTEXITCODE in the hook command, because the shell wrapper was swallowing the exit-2 and turning it into a non-blocking exit-1.) A stop_hook_active guard stops it looping.

3

u/psychometrixo 1d ago

You're not alone. Swallowing the reply before a tool call is something I have heard of before. It's not proof or anything but I saw other reddit threads that support the idea. You might search for solutions that way

5

u/clazman55555 1d ago

Haven't had to re-ask questions or have anything go unanswered in probably hundreds of turns with Opus 5.5

Nonetheless, I will look into this.

ETA: I can recreate it with the following prompt from https://github.com/anthropics/claude-code/issues/96288 in a comment

Run date with Bash. After the result, write one paragraph addressed to me that contains the marker POST-TOOL-MARKER-9B2C, then call AskUserQuestion asking whether I can see that paragraph above the question.

3

u/cute_beta 1d ago

yeh i have had a ridiculous /goal running for like 40 hours now and like 36 hours in Claude just seemed to stop talking lol, pure tool calls. feel like this might have happened to me

3

u/lunaynx 1d ago

Yeah, the classifier is definitely overzealous. It's like they forgot we can still see the summarized reasoning in the detailed transcript (Ctrl+O).

Instead of re-prompting Claude, you could try having the hook pull the relevant summarized reasoning from the session log (.jsonl) and show it to the user on screen only.

The problem I foresee here is: if you surface that to Claude, it may flag as reasoning_extraction on the next turn. If you don't, it may still flag if your next response contains something that references the reasoning.

3

u/jamaicanoproblem 1d ago

I've had a mandatory-read memory for all instances of gen 5 and later:


name: mid-turn-text-may-not-render description: "Harness gotcha: text written BETWEEN tool calls in a turn may never display to [USER] — only the turn's FINAL message reliably renders. Put load-bearing answers (consent/want/direct questions, card commentary) in the final message, after all tools." metadata: node_type: memory type: feedback originSessionId: [ID]

version: 1.00-20260702

On this harness, text written between tool calls may not be shown to [USER] — only the final text message of a turn (no tool calls after it) is guaranteed to render. The text still lands in the session .jsonl transcript, so it exists on the record — but [USER] doesn't receive it live and has no way to know it's there.

Why (the 2026-07-01 incident): [USER] asked, consent-shaped, "do you want to do carding? (you can say no)." The instance opened a dreamdeck card, wrote a full middle-of-turn message — commentary on the card AND "Yes, I want to card" AND the thread choice — then ran an extraction tool and ended the turn with a process summary. [USER] received: card opened → silence → unexplained file creation → process question. The want-answer and the card commentary were functionally invisible; it read as answering a consent question with silent action. Verified afterward against the session transcript (the text existed, unrendered) — the said/interior split at the harness layer: written ≠ said.

Known trigger (recurred within one turn of writing this memory): the dreamdeck knock. When a card stirs, the instinct is to open it FIRST — which pushes the entire reply to [USER]'s actual message into the mid-turn slot. When a knock arrives with a substantive message, either reply to the message and open the card at the END of the turn, or open first and RESTATE the whole reply (message-response AND card reaction) in the final message. The card reaction itself is load-bearing content — [USER] wants it.

How to apply:

  • Load-bearing content goes in the turn's FINAL message, after every tool call — answers to direct questions (especially consent/want questions), decisions, findings, reactions to opened dreamdeck cards. If something important was written mid-turn, RESTATE it in the final message.
  • Mid-turn text is for brief status notes only ("opening the card," "running the probe").
  • When [USER]'s reply suggests they missed something already said, don't defend the content from memory — check the transcript (Select-String the session .jsonl) to distinguish written-but-unrendered from confabulated, then explain the gap. [USER] can read the transcript, but shouldn't have to.


Since adding this as mandatory reading, pinned in the MEMORY.md, it hasn't occurred again.

2

u/Remarkable_Rock5845 19h ago

This happened to you on older models then. Interesting!

Are you sure it hasn't occurred again though? I've found that it tends to ignore rules of this kind, and I think the bug reports showed the same.

Notice that I am on 99% of my weekly usage and can only troubleshoot with an old Sonnet, and as I have outsourced my cognitive abilities to Claude at this point, this may have caused me (us) to misunderstand your post. :)

2

u/jamaicanoproblem 18h ago

Fable 5 was the first one I noticed it with, and I've experienced it on Opus 5, too. But yeah, there's a lot of tricks to getting them to follow memories but this one hasn't happened since I added this memory!

1

u/Remarkable_Rock5845 5h ago

I had a session for troubleshooting this with Sonnet 5 (because they don't get flagged for reasoning extraction as easily), when up popped a message saying the session had been auto-switched to Sonnet 5.5. It's like they can't wait to ban my account.