If you opened Claude this afternoon and got a wall of red errors, you’re not imagining it. On July 29, 2026, Downdetector logged more than 2,000 user reports of Claude problems by 1:03 p.m. PT, climbing past 5,000 within the hour, with most complaints tied to Claude Code. The status page label is the one that’s been trending in every dev Slack for weeks now: Claude: elevated errors across all models.
This isn’t a one-off. Anthropic’s status page shows repeated elevated-error incidents on July 25, 26, and 27, affecting Opus 5, Fable 5, Sonnet 5, and Haiku 4.5. So the real question isn’t “is Claude down?” – it’s “how do I keep working when this happens twice a week?” That’s what this guide fixes.
The problem: you can’t tell if it’s you or them
Every time Claude sputters, the same panic sequence plays out. You refresh. You rotate your API key. You reinstall Claude Code. You blame your VPN. Twenty minutes later you check the status page and realize you burned time on your own machine while the fault was 3,000 miles away.
The elevated errors across all models label is Anthropic’s shorthand for something specific: their infrastructure is saturated and requests are bouncing before they reach a model. It’s the same class of failure whether you’re on the web chat, the API, or Claude Code – because they all share the same back end.
Why the standard advice falls short
Most tutorials tell you to check the status page and add exponential backoff. Both are correct. Both are also insufficient.
Here’s why. In H1 2026, status-page time-to-detect ran 10 to 30 minutes behind real user impact in three of four confirmed platform-wide 529 events. A green status page during a real outage is common enough that treating it as ground truth will burn you. And plain exponential backoff hides a nastier problem: in streaming mode the connection opens with a normal 200 and the overload arrives later as an error event inside the stream, so code that only checks response.status_code == 529 silently misses it on any streaming integration – which covers most agentic tools and anything built for fast time-to-first-token.
The 60-second triage that actually works
When Claude fails, run this before touching your code:
- Read the actual error code, not the vibe.A 429 rate_limit_error is your account hitting its limit; a 529 is Anthropic-wide overload. Different cause, different fix.
- Open status.claude.com in a second tab. Active incident on “multiple models”? Stop debugging. Green page but users are complaining on Downdetector? Assume it’s them anyway for the next 15 minutes – see why above.
- Try a different tier once. If Opus fails, hit Sonnet or Haiku with the same prompt. A single same-path retry on a lighter model tells you if the incident is model-specific or platform-wide.
- Capture the
request_id. Every Anthropic response carries one in the header – if you file a support case later, this is the only thing that matters.
That’s it. If step 2 shows red or step 3 also fails, you’ve confirmed it’s their problem and you can stop poking your codebase.
The retry pattern most guides get wrong
The official Anthropic Python and TypeScript SDKs already retry 529 and other retryable errors with backoff automatically (as of mid-2026), so if you’re using the SDK’s built-in behavior, half the work is done. But the default is often too aggressive when the outage is real. Here’s the shape of a retry that doesn’t make things worse:
import time, random
from anthropic import Anthropic, APIStatusError
client = Anthropic()
def call_with_backoff(max_retries=5, **kwargs):
for attempt in range(max_retries):
try:
return client.messages.create(**kwargs)
except APIStatusError as e:
if e.status_code != 529 or attempt == max_retries - 1:
raise
wait = min(30, (2 ** attempt) + random.uniform(0, 1))
time.sleep(wait)
Three things matter here. The retry is bounded (5 attempts, not infinite). The delay is capped at 30 seconds so a foreground request doesn’t hang forever. And jitter matters because every client that hit 529 at the same time will retry at the same instant without it, re-creating the overload spike – always add a random offset to backoff delays.
A 529 may not give your account a reset time because the overload owner is not your account bucket, so retry scheduling is your backoff policy plus service-state observation, not a quota countdown (as of mid-2026). Translation: don’t look for a retry-after header. It might not be there.
The fallback-chain trap
Since June, Claude Code has a real answer built in. Claude Code 2.1.166, released June 6, 2026, added a fallbackModel setting that lets you configure up to three backup models, tried in order when the primary model is overloaded or unavailable; the same release also confirmed that –fallback-model now applies to interactive sessions, not just headless runs. Read the full changelog notes here.
But there’s a trap most people fall into when configuring it. Setting a fallback model that lives in the same capacity pool – like claude-opus-4-8 falling back to claude-opus-4-7 – survives model-specific incidents but not platform-wide ones. The fallback chain must cross tiers or vendors to actually help during a storm like today’s.
A safer chain looks like this: primary Opus → Sonnet (different tier, same vendor) → an OpenAI or Gemini call (different vendor entirely). The first hop handles model-specific issues. The second hop is what saves you during an all-models incident.
Pro tip: Don’t set your fallback to the exact same model behind a different API name. If the platform is overloaded, every Anthropic-hosted model shares the same saturated infrastructure. Your fallback needs to physically leave the ecosystem to be a fallback.
One more gotcha worth knowing before you configure this: a stray ANTHROPIC_API_KEY environment variable can quietly route you through a different tier than your subscription. If you’re seeing errors that look platform-wide but teammates on the same plan are fine, check which key is actually active in your shell – you may be hitting a different capacity tier entirely rather than a genuine outage.
How long does Anthropic actually take to detect these?
Here’s an open question that still doesn’t have a clean answer. The status-page lag data covers H1 2026, but Anthropic hasn’t published a target detection SLA for 529 storms. Is 10-30 minutes the new normal, or a pattern they’re actively closing? For anyone running production workflows on Claude, that’s the number that actually matters – and right now you have to infer it from community incident reports rather than any official commitment.
What the July 29 incident actually looked like
StatusGator caught the July 29, 2026 incident labeled “Elevated errors across all models” starting at 7:53 PM. User reports on Downdetector, meanwhile, had been climbing for hours before that timestamp – a gap that’s become routine enough that the community now cross-references both sources rather than trusting either alone.
Opus 5 had already been throwing errors intermittently for three straight days. StatusGator recorded multiple separate Opus 5 elevated-error incidents on July 26 and 27, 2026. If you had a fallback chain configured – even just Opus → Sonnet – most of those didn’t touch your workflow. If you didn’t, you spent your afternoon reloading claude.ai.
What to do right now
Go set your fallback chain. If you’re on Claude Code, open your settings and add a fallbackModel array with at least one non-Opus entry. If you’re calling the API directly, wrap your calls in the bounded-retry pattern above and route to a second vendor when the retry budget runs out. Bookmark status.claude.com and Downdetector’s Claude page – you’ll want both, because they disagree often enough to be useful.
FAQ
Is switching from Opus to Sonnet enough during a 529 storm?
Sometimes – if the incident is model-specific (Opus only), Sonnet may keep work moving. During a genuine platform-wide event like July 29, no amount of model-switching within Anthropic helps. You need a fallback that leaves the platform entirely.
Why did my Claude Code session retry 10 times and still fail?
Claude Code’s default retry escalates 1s, 1s, 2s, 5s, 10s, 18s and continues up to 10 attempts. During a bad incident that’s roughly 3 minutes of trying, which sounds like a lot until you realize elevated-error windows regularly stretch past 15 minutes. If retries alone aren’t cutting it, that’s the signal your fallback chain either doesn’t exist or points to another Anthropic model that’s equally stuck.
Should I file a support ticket every time I hit a 529?
No. A 529 is expected behavior during overload – Anthropic already knows. Save the ticket (and the request_id) for cases where the error persists after the incident resolves, or where you’re seeing 529s with no corresponding status-page entry.