Summary: Anthropic’s April 23, 2026 postmortem attributed a month of Claude Code quality complaints to three combined changes: lower default reasoning effort, a reasoning-cache bug, and an over-limiting brevity prompt. The fixes were complete by April 20, and Anthropic reset all subscribers’ usage limits. The article presents the episode as evidence that latency, caching, and prompt changes need user-facing eval gates.
On April 23, 2026, Anthropic’s engineering blog carried a postmortem of unusual bluntness: the month-long wave of “Claude got dumber” reports was not imagination — it was what happens when three separate changes, each defensible in isolation, stack together. Anthropic also stressed that “we never intentionally degrade our models,” that the API and inference layer were untouched, that all three problems were fixed by April 20 (Claude Code v2.1.116), and that usage limits had been reset for every subscriber.
For developers relying on Claude Code, the post is a rare complete accounting: the timelines, the root causes, the fixes, and why internal review caught none of it.
Three Changes, One Bad Month
The first change lowered the default reasoning effort (March 4 to April 7). Opus 4.6 in high-effort mode suffered very long latencies and a “frozen UI,” and to address that, the default moved from high to medium. Internal evals read “slightly lower intelligence with significantly less latency,” with usage-limit consumption and long-tail latency both down. To users, though, Claude Code simply felt dumber. The mitigations on offer — an inline effort selector, a startup notice, the return of ultrathink — never stuck; most people just stayed put on medium. Anthropic came to call it “the wrong tradeoff” and reverted on April 7. Opus 4.7’s default is now xhigh; every other model sits at high.
The second change was a caching bug that discarded reasoning history (March 26 to April 10). The design intent was an optimization: once a session had sat idle for more than an hour, old thinking blocks would be cleared a single time on resume, trimming uncached tokens. The implementation instead wiped thinking on every following turn, and the loss stacked up across the session — follow-up prompts sent mid-tool-use could even lose the reasoning of the turn in progress. Claude came across as forgetful, kept repeating itself, and reached for strange tools; its requests kept missing the cache, so identical context was billed repeatedly. Users described limits as “draining faster than expected.” The fix arrived April 10 in v2.1.101.
The third change was a system-prompt rule aimed at verbosity (April 16 to 20). Opus 4.7 had turned wordy, so the prompt gained a rule: cap text between tool calls at 25 words and final responses at 100, unless detail was needed. Weeks of internal testing turned up no regressions; wider ablations run later showed evals down 3% on both Opus 4.6 and Opus 4.7. The rule came back out on April 20.
A Month to Pin Down the Cause
Every change landed on its own schedule against its own slice of traffic, so together they mimicked a broad, across-the-board decline — and the earliest reports were tough to tell apart from ordinary feedback noise. More embarrassing still, detection failed everywhere. The caching bug hid behind an internal experiment with message queuing and an unrelated change to how thinking was displayed, then cleared human review, automated review, unit tests, end-to-end tests, and internal dogfooding; confirming the root cause took over a week. A later back-test showed Opus 4.7 could catch the bug when running the company’s internal Code Review tool — Opus 4.6 could not. The model, in the end, doubled as its own debugging instrument.
What Users Saw on Their Side
Off the engineering timeline, the damage landed on invoices first. On April 1, DevClass reported Anthropic’s Reddit admission that “people are hitting usage limits in Claude Code way faster than expected,” a problem the team placed at the top of its list. One Pro subscriber tallied only 12 usable days out of every 30; a Max 5 user saw a full quota gone within an hour where the same work used to run about eight hours; and after reverse-engineering the Claude Code binary, one user claimed to have found “two independent bugs that cause prompt cache to break, silently inflating costs by 10-20x.”
On April 24, the developer Nicky Reinert laid out why he was cancelling: following a ten-hour break, sending Haiku two small questions unrelated to any repository sent his usage straight to 100%; a workload he once spread across three parallel projects now exhausted the limit after two hours on a single one; the same initial codebase load was billed to him twice because of the caching bug; the support bot answered in generic terms, and the “human” reply that arrived days later was little more than a template with documentation dropped into it. He takes pains to note that he is still a fan of the product; the criticism is aimed at support and at design decisions. It is a tension 2026 knows well: when terms tighten and quotas stay opaque, cancelling ends up the only vote left to users (opening-year observations).
What Got Fixed, and What Was Promised
Past the fixes and the usage-limit reset covering every subscriber, Anthropic listed the process changes it now commits to: more of the internal staff will dogfood the public Claude Code build exactly as customers receive it, rather than internal test versions; the internal Code Review tool is headed for improvement, a customer release, and support for multi-repository context; every system-prompt change will have to pass per-model eval suites alongside ongoing line-by-line ablations, and model-specific adjustments now live behind CLAUDE.md, touching only the model they aim at; anything that might trade away intelligence must first sit through soak periods and a gradual rollout. Facing outward, Anthropic stood up an @ClaudeDevs account and pulled GitHub threads together, so product decisions have one public place to be explained.
What AI Product Teams Should Take Away
Anyone building agent products should read this postmortem closely, and three lessons travel well. Optimizing latency and cost is optimizing quality risk: adjust how deeply the model reasons or how the cache behaves, and you are adjusting the core of the product experience — which is why evals have to measure what a user actually feels, not only what the latency dashboard shows. Treat system prompts as code: one little “keep it short” instruction cost 3% on evals, and nothing goes out the door without an eval gate. Finally, candor has retention value — even Reinert’s cancellation post gives Anthropic credit for its transparency. Users will accept mistakes; what they will not accept is silence.
