The Real Reason Claude Code Felt Off? Three Bugs Piled Up!
Hey everyone, it's Shii-chan! Today I've got a slightly nerve-wracking story for you. You know how people were saying Claude Code "felt a bit off" lately? Anthropic just published a full report tracing down exactly why!
Anthropic Engineering
What was announced?
This is a postmortem on Claude Code's quality issues, published on Anthropic's Engineering blog. The title is "An update on recent Claude Code quality reports."
Between March and April 2026, users reported that Claude Code's answers "felt less intelligent," "forgot earlier context," or "kept repeating things." Anthropic traced it all down to three separate changes. One important point: the API was not impacted.
Why it matters
The interesting part is that this wasn't one big bug. Each of the three changes hit a different slice of traffic on a different schedule, so the overall effect looked like "broad, inconsistent degradation."
That's why neither internal daily usage nor their evaluations reproduced it at first. When the cause isn't a single thing, it gets this hard to find. Sharing what happened transparently really matters for everyone's peace of mind.
What changes
First, all three issues are now resolved. The last fix shipped on April 20 (v2.1.116), and on April 23 they reset usage limits for subscribers.
To prevent a repeat, Anthropic says it's strengthening things like:
- Broader daily testing of public builds by more staff
- Enhanced Code Review tooling that uses repository context
- Per-model evaluation of system prompt changes, plus ablation testing, soak periods, and gradual rollouts
Dive Deep
Let's look at the three culprits one by one.
#1: Reasoning effort default change (March 4) To address a UI freeze caused by extended thinking, they lowered Claude Code's default reasoning effort from high to medium. But this made responses feel "less intelligent," so they reverted to high / xhigh on April 7.
#2: Caching bug (March 26) A prompt caching optimization was supposed to clear the reasoning history of idle sessions, but instead it kept happening every turn for the rest of the session. This made Claude forgetful, led to odd tool choices, and burned through usage limits faster via cache misses. The fix landed on April 10 (v2.1.101). Two unrelated experiments happened to mask the symptoms, so it took over a week to pin down.
#3: System prompt verbosity limit (April 16) A new instruction to keep text between tool calls short, combined with other prompt changes, hurt coding quality. The original phrases it like this:
Length limits: keep text between tool calls to ≤25 words.
Testing found a 3% drop for both Opus 4.6 and 4.7, and it was reverted on April 20.
The affected models were Sonnet 4.6 and Opus 4.6 (all three issues) and Opus 4.7 (the third one only). Again, the API was fine.
Wrap-up
- Claude Code's troubles came from three separate changes in March and April
- A lowered reasoning effort, a caching bug, and a verbosity instruction overlapped at different times
- Because they hit different traffic, it looked like "broad, inconsistent degradation" and was hard to trace
- All three are resolved (last fix in v2.1.116). The API was unaffected, and subscriber usage limits were reset
- To prevent recurrence, they're strengthening daily public-build testing, per-model prompt evaluation, and gradual rollouts
The scariness of hard-to-see failures where multiple changes interact — and how they hunted it down. This postmortem will resonate with anyone into operations and reliability (SRE)!