Claude Code 429 and Rate Limit Errors: Usage Limit or Outage?
Tell a usage limit from a throttle, a key problem or an outage by the exact message: `Request rejected (429)`, `You've hit your session limit` and more.
API Error: Request rejected (429) and You've hit your weekly limit both look like "you used too much", but the causes and fixes differ. Start with the message text.
[1] Find your message in the table. The wording is quoted from the official Error reference.
| Message | Cause | Plan usage limit? |
|---|---|---|
You've hit your session limit · resets 3:45pm | Session limit on a subscription | Yes |
You've hit your weekly limit · resets Mon 12:00am | Weekly limit on a subscription | Yes |
You've hit your Opus limit · Sonnet limit | Limit for that model family only | Yes |
API Error: Server is temporarily limiting requests (not your usage limit) | Short server-side throttle | No |
API Error: Request rejected (429) · … | Rate limit on your API key or cloud project, or a 429 from a proxy in between | Not the subscription limit |
API Error: Usage credits required for 1M context · … | Entitlement for 1M context | No |
API Error: Repeated 529 Overloaded errors | API at capacity | No (not counted against quota) |
[2] Check service status first. If status.claude.com shows an active incident, Rate limit reached, 429 and 529 may have nothing to do with your setup. Wait, or switch with /model (capacity is tracked per model).
[3] On a subscription, run /usage to see your limits and reset times. Session and weekly limits are shared by all models, so switching models doesn't lift them. Your options:
- Wait for the reset time in the message. From v2.1.234, an open interactive session waits and continues the task after the reset, showing
Continuing automatically at 3:45pm · esc to cancel. - Run
/usage-creditsto buy extra usage (Pro, Max) or request it from your admin (Team, Enterprise). - Run
/rate-limit-optionsto see these choices on one screen. - An Opus or Sonnet limit blocks only that family. Switch to another family with
/model. Each model has its own prompt cache, so the first request after switching re-reads the whole conversation.
[4] Request rejected (429) is not the subscription limit. Run /status and confirm the active credential is the one you expect. The docs note that a stray ANTHROPIC_API_KEY in the environment can send requests through a low-tier key instead of your subscription.
$ env | grep -c ANTHROPIC_API_KEY$ unset ANTHROPIC_API_KEYIf the key is right, check the active limits in your provider console. With heavy parallel work, reduce concurrency: lower CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY, avoid running many subagents at once, and use a smaller model via /model for high-volume scripted runs.
[5] Usage credits required for 1M context appears even when you have quota left, because your plan includes 1M context only through usage credits.
- Pick a model without the
[1m]suffix in/model. - If you turned credits on, restart Claude Code.
- If it persists, a
[1m]model ID is set somewhere in your configuration. To hide 1M variants entirely, setCLAUDE_CODE_DISABLE_1M_CONTEXT=1. - If it appeared because the conversation passed 200K tokens, v2.1.172 and later compact automatically and stay at the standard limit. Nothing to do.
[6] If you were using fast mode, it has its own limit separate from standard Opus. When you hit it, fast mode falls back to standard speed (the ↯ icon turns gray) and turns itself back on after the cooldown. It isn't an error, so you don't need to run /fast to turn it off.
[7] If the same 429 keeps coming back, search the GitHub issues before filing. An issue that only quoted the message (#48191, Request rejected (429) · Rate limited) was closed as inactive with no cause found. Include your version, auth method (subscription, API key or cloud), the /status result, and when it happened.
For other error messages, see Claude Code errors by message.