Claude Code 429 error: what it means and how to fix it

A Claude Code 429 rate limit error means one of your limits ran out, not that Claude is down: on a subscription your 5-hour, weekly or model limit, with an API key your tier's per-minute rate limit or a monthly spend cap.

Contents

A Claude Code 429 rate limit error means one of your limits ran out, not that Claude is down. Which one is in the text: You've hit your session limit · resets 3:45pm is your plan's 5-hour window, Request rejected (429) is an API key's per-minute rate limit, and enforced_spend_limit_reached is the organization's monthly spend cap.

Before that line reached you, Claude Code had already tried again. Its error reference says it "retries transient failures up to 10 times with exponential backoff before showing you an error" (Claude Code docs), and 10 is the default of CLAUDE_CODE_MAX_RETRIES (environment variables). What's on screen is the error that didn't clear by itself.

Which 429 is it? Read the message#

The first words of the error tell you which limit it is. Rows one to five are quoted from Claude Code's error reference and row six from Anthropic's rate-limit page, both read on 22 October 2026 (Claude Code docs, Claude docs).

What you see What it means How long
You've hit your session limit · resets 3:45pm Your plan's 5-hour window is full Until the time shown
You've hit your weekly limit · resets Mon 12:00am Your plan's weekly limit is full Until the time shown
You've hit your Opus limit or Sonnet limit That model family's limit only Until the time shown, or switch model
API Error: Server is temporarily limiting requests (not your usage limit) A short server-side throttle Moments; Claude Code retries it
API Error: Request rejected (429) Your API key's (or Bedrock or Google Cloud project's) rate limit Seconds to a minute
rate_limit_error with enforced_spend_limit_reached Your API organization's monthly spend cap Until the 1st of next month, 00:00 UTC

529 Overloaded is missing from the table on purpose: "A 529 is not your usage limit and doesn't count against your quota" (Claude Code docs).

Why it happens: how the limits work#

Three kinds of limit answer with a 429.

  • Plan limits on Pro, Max and Team: a 5-hour session window and a weekly limit, both shared across models, plus model-specific limits for Opus and Sonnet (when the 5-hour window starts and resets).
  • API rate limits, per organization and per model, in requests, input tokens and output tokens per minute. Anthropic uses a token bucket, so "your capacity is continuously replenished up to your maximum limit, rather than being reset at fixed intervals", and 60 requests per minute "might be enforced as 1 request per second" (Claude docs). Parallel subagents that start together make exactly that kind of burst.
  • A monthly spend cap per tier, which on 22 October 2026 stood at $500 for Start, $1,000 for Build and $200,000 for Scale. Hitting it returns the same rate_limit_error as a rate limit, told apart by error.details.error_code reading enforced_spend_limit_reached. There's no retry-after header on it, and retrying fails until access resumes (Claude docs).

A spend limit you set yourself, below the cap, is not a 429. It comes back as HTTP 400 invalid_request_error, starting You have reached your specified API usage limits (Claude docs).

How to fix a Claude Code 429#

  1. Run /status to see which credential is active. Claude Code's docs warn that "a stray ANTHROPIC_API_KEY in your environment can route requests through a low-tier key". Claude Code prefers a set key over your logged-in subscription: an interactive session asks you to approve it once, and claude -p uses it without asking (environment variables). To go back to the plan, unset ANTHROPIC_API_KEY, delete the export line from ~/.zshrc or ~/.bashrc, restart claude and /login.
  2. On a plan limit, /usage shows the bars and the reset times. You've hit your Opus limit or Sonnet limit clears with /model and the other family. The session and weekly limits are shared across models, so another model won't help there.
  3. On an API rate limit, retry-after is "the number of seconds to wait until you can retry the request" (Claude docs). Wait that long, then stagger the burst so parallel subagents don't start in the same second.
  4. On the spend cap, ask for a higher tier on the Console's Rate limits page or raise your own limit under Billing. If neither happens, access comes back at 00:00 UTC on the 1st.
  5. In CI, CLAUDE_CODE_RETRY_WATCHDOG=1 makes Claude Code retry 429 and 529 capacity errors indefinitely instead of failing (Claude Code docs). Add CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS=1800000 to give up on a request after 30 minutes (Claude Code v2.1.295 or later, environment variables). A spend-limit 429 fails at once either way.
  6. Or move the work. /usage-credits turns on usage credits, a bigger plan raises the limits, and another account you own has limits of its own. Claude limit reached: what to do has the rest.

How Shuriken handles it#

Shuriken launches every Claude Code chat with ANTHROPIC_BASE_URL set to a small proxy on your own computer, one per chat. Every 429 reaches the proxy before Claude Code, and the wait it asks for decides what happens.

  • Under a minute, the proxy holds the request and resends it after the retry-after seconds, or every 15 seconds when there are none, for at most 5 minutes. Claude Code and its subagents see a slow request.
  • A minute or more, plan usage limits included: Shuriken hot swaps the chat to another of your sources with room, even before your switch point, and sends the held request there. The subagents go with it. A Switched to … card names the account that took over (source switching).

Before 3.0.0 we got the second case wrong. A plan limit that arrived without retry-after looked to the proxy like any throttle: it waited 15 seconds, tried again, and kept at it until the 5 minutes ran out. Then Claude Code got You've hit your limit, and a Workflow's subagents died on it while another account had room. Since 3.0.0, released on 12 October 2026, the proxy reads the 429's anthropic-ratelimit-unified-status header first. rejected means the plan's limit, so the chat moves, and a limit that names Fable stops only Fable.

If an account is refused outright, with an expired sign-in or disabled access, the chat moves to another usable source instead of ending; that came in 3.3.0 (A refused account no longer ends your chat). If every source is out, the chat shows one pause card ("Paused: no Claude source has usage left") and carries on by itself once a source has room again.

Use accounts you own and are entitled to use; providers' terms may not allow sharing a subscription sign-in. Download Shuriken.

Sources

  1. Claude Code docs: Error reference (accessed 22 October 2026)
  2. Claude docs: Rate limits (accessed 22 October 2026)
  3. Claude Code docs: Environment variables (accessed 25 October 2026)

Frequently asked questions

Does a 429 mean Claude is down?

No. It means you reached a limit: the plan's window, the key's per-minute rate or a spend cap. Problems on Anthropic's side come back as 529 Overloaded, and a 529 doesn't count against your usage.

Why do I get a 429 when I still have usage left on my plan?

Check /status first. If it shows an API key, Claude Code is sending requests on that key's tier, not your Pro or Max plan, because a set ANTHROPIC_API_KEY wins even when you're logged in. Run unset ANTHROPIC_API_KEY and restart claude to go back to the plan.

How long should I wait after a 429?

Whatever the error names. You've hit your session limit · resets 3:45pm means 3:45pm, and an API key's 429 carries retry-after in seconds while its bucket refills continuously. A spend-cap 429 has no retry-after at all and holds until 00:00 UTC on the 1st of next month, unless someone raises the cap.

Does Claude Code retry 429 errors automatically?

Yes for temporary throttles. Claude Code makes up to 10 tries with exponential backoff before the error appears, and CLAUDE_CODE_MAX_RETRIES changes the 10. Retrying doesn't clear a spend-limit or used-up-credit 429, which isn't a throttle.

Free tools