Claude Code Error 429: 'Server Is Temporarily Limiting Requests' and 'Request Rejected (429)' Explained
Claude Code shows a 429 in two different ways. 'API Error: Server is temporarily limiting requests (not your usage limit)' is a short server-side throttle on a claude.ai subscription; 'API Error: Request rejected (429)' is the rate limit of your API key, Bedrock or Vertex project. Which one you have, why it is not your usage limit, what Claude Code already retried, and how to fix each.
Claude Code error 429 means a rate limit refused the request, and Claude Code shows it in two ways. API Error: Server is temporarily limiting requests (not your usage limit) is a short server-side throttle on a claude.ai subscription or gateway sign-in. API Error: Request rejected (429) is a 429 on an Anthropic API key, Amazon Bedrock, Google Vertex AI or Microsoft Foundry project, usually that key's rate limit. Neither is your plan's usage limit.
On Claude Code v2.1.199 or later, a temporary 429 has already been retried up to 10 times (the default) before you see it. The fix depends on which line you have: for the first, wait and run fewer subagents and sessions at once; for the second, check which credential /status shows and the limits on that key or project.
Last reviewed 15 November 2026 against the Claude Code 2.1.325 build (message strings read from the npm package), the installed Claude Code 2.1.302 on my Windows machine, which contains the same two 429 messages and the same fallback sentence (check below), and the official error reference. I have not triggered a real 429 on my own account; the real-world reports below come from GitHub.
Which Claude Code 429 message do you have?
Claude Code turns an HTTP 429 into different messages depending on how you sign in and what the response carries. A claude.ai subscription or gateway sign-in gets Server is temporarily limiting requests (not your usage limit) for a throttle and You've hit your session limit for a real plan limit; an API key or cloud provider gets Request rejected (429).
| What you see | Who sees it | What it is | First thing to do |
|---|---|---|---|
API Error: Server is temporarily limiting requests (not your usage limit) | claude.ai subscription, or a gateway | A short server-side throttle, not your quota | Wait, then run fewer subagents and sessions at once |
API Error: Request rejected (429) · this may be a temporary capacity issue. If it persists, check https://status.claude.com. | Anthropic API key, Amazon Bedrock, Google Vertex AI, Microsoft Foundry | The rate limit on that key or project | /status to confirm the credential, then check its limits |
You've hit your session limit · resets 3:45pm (also weekly, Opus, Sonnet) | claude.ai subscription | Your plan's usage quota | Wait for the reset, /usage, usage credits or a limit reset |
You've hit your monthly spend limit · raise it at ... | Plans with usage credits | The spend limit on your usage credits | Raise it in Settings > Usage or wait for the window shown |
spend limit reached · resets Dec 1 | Claude apps gateway | The gateway operator's spend cap | Wait for the date or ask the operator; Claude Code does not retry it |
API Error: Request rejected (429) · Too Many Requests | Anyone behind a proxy or gateway | A proxy's own 429 page; its title follows the · | Check that proxy's or gateway's rate limits |
In the 2.1.325 build the first two lines come from one place: Claude Code checks whether you are signed in with a claude.ai subscription or a gateway, and picks "Server is temporarily limiting requests (not your usage limit)" if you are and "Request rejected (429)" if you are not. After the · it prints the server's own message, or the "this may be a temporary capacity issue" sentence when there is none. Here "gateway" means Claude Code pointed at an LLM gateway or a Claude apps gateway instead of Anthropic's API directly. That is why developers on GitHub quote extra text such as · Rate limited or · Type 2b rate limited. Please try again later. at the end.
The tools site's Request rejected (429) page has the same message as a quick lookup.
What does "Server is temporarily limiting requests (not your usage limit)" mean?
API Error: Server is temporarily limiting requests (not your usage limit) means the server applied a short-lived throttle that has nothing to do with your plan quota. Claude Code knows it is not your usage limit because the 429 arrives without the quota headers a real plan-limit response carries. Since Claude Code v2.1.199 it is retried automatically before you see it, whichever way you sign in.
API Error: Server is temporarily limiting requests (not your usage limit)The words (not your usage limit) in the message are the important part. If you had run out of your plan, Claude Code would say You've hit your session limit · resets 3:45pm or You've hit your weekly limit instead; see Claude limit reset for those.
What developers report in the main GitHub issue, #53915 (open since April 2026, 69 comments as of 15 November 2026), none of which Anthropic has confirmed:
- It comes with parallel work. Two Max subscribers say it starts when they run a team of subagents, one of them with several sessions on different machines at once.
- It can last hours. The original report describes three hours of it after "just a couple of seconds of use", on Windows 11 in VS Code's integrated terminal; another developer had it "for the whole day".
- Switching models or effort did not reliably help. Some lowered effort to medium and were still throttled; one suggested switching to a 1M-context model variant, which is not a general fix.
- Usage seemed to climb anyway. Several people say their usage meter rose while every request failed. Anthropic does not document that a rejected request counts, so treat this as reported, not confirmed, and stop resending in a loop.
What to do:
- Wait a minute and send the message again. On v2.1.199 or later Claude Code has already retried it up to 10 times, so pressing Enter repeatedly only adds requests.
- Cut parallel work: fewer subagents, fewer Claude Code sessions at the same time, especially across machines on the same account.
- Check status.claude.com. During an incident, such as the 13 November 2026 outages, the throttle is not about you.
- For unattended runs, set
CLAUDE_CODE_RETRY_WATCHDOG=1so Claude Code keeps waiting it out instead of failing (below).
What does "Request rejected (429)" mean?
API Error: Request rejected (429) is how Claude Code shows a 429 when it is not signed in with a claude.ai subscription or a gateway. Usually it is the rate limit on your Anthropic API key, Amazon Bedrock, Google Vertex AI or Microsoft Foundry project; it can also be a temporary capacity throttle or a proxy's own 429. The sentence after the · names where to check service status for your provider.
API Error: Request rejected (429) · this may be a temporary capacity issue. If it persists, check https://status.claude.com.The trailing sentence changes with your setup. In the 2.1.325 build it reads "If it persists, check your Amazon Bedrock service status." on Amazon Bedrock, and names Google Vertex AI or Microsoft Foundry the same way on those (the docs call Vertex AI "Google Cloud's Agent Platform"), and with a custom ANTHROPIC_BASE_URL it names your gateway host. If a proxy or load balancer answered with its own HTML 429 page, the text after the · is that page's title, usually Too Many Requests; before v2.1.281 Claude Code printed the whole page.
What to do:
- Run
/statusand check the credential. The Claude Code error reference calls this out first: a strayANTHROPIC_API_KEYin your environment can route Claude Code through a low-tier API key instead of your subscription. On Windows, my own habit is to check both the current shell and the user environment variables; on my machineANTHROPIC_API_KEYis unset in both. The API key checker tells you whether a key is valid. - Check the limits on that key or project. For Anthropic API keys, the rate limits page explains tiers and per-workspace caps; Bedrock and Vertex AI quotas live in the AWS and Google Cloud consoles.
- Lower concurrency. Many parallel subagents multiply requests per minute. For high-volume scripted runs, the docs also suggest switching to a smaller model with
/model. - Ask for a higher tier if you hit it during normal use.
Is a 429 the same as hitting my usage limit?
No. A claude.ai plan limit is also delivered as a 429, but it carries quota headers, and Claude Code shows it as You've hit your session limit, You've hit your weekly limit, You've hit your Opus limit or You've hit your Sonnet limit, each with a reset time. Only those messages mean your plan ran out.
| Message | Plan quota? | Retried? | Ends when |
|---|---|---|---|
Server is temporarily limiting requests (not your usage limit) | No | Yes, up to 10 times | The throttle lifts, usually soon |
Request rejected (429) | No, the key's or project's rate limit | Yes, if temporary | The rate-limit window passes |
You've hit your session limit · resets 3:45pm | Yes | No, it waits for the reset | The reset time shown |
You've hit your monthly spend limit | Spend limit on usage credits | No | You raise it, or the window shown resets |
spend limit reached · resets Dec 1 | Gateway operator's cap | No (x-should-retry: false) | 00:00 UTC on that date, or the operator raises it |
If you see a real plan limit, Claude limit reset covers what a reset refills, and the usage limit reached page on the tools site lists the variants.
Does Claude Code retry a 429 automatically?
Yes. Claude Code retries temporary 429 throttles up to 10 times with exponential backoff before showing the error, and while it does, the spinner shows Retrying in Ns · attempt x/y after a rate-limit label. A gateway's spend-limit 429 is the exception: it is not a throttle and is not retried.
Since v2.1.199 this includes throttles on a claude.ai subscription; before that, a subscription session failed the turn on the first one, and only API key and Enterprise sign-ins retried. You can change the behaviour with environment variables (full list on the Claude Code settings reference):
| Variable | Default | What it does for a 429 |
|---|---|---|
CLAUDE_CODE_MAX_RETRIES | 10 | Number of retry attempts. Lower it in scripts to fail faster; capped at 15 unless the watchdog is on |
CLAUDE_CODE_RETRY_WATCHDOG | unset | Set to 1 for CI and other unattended runs: retries 429 and 529 capacity errors indefinitely. Fails at once when a standard-speed request gets a 429 that reports a spend limit or exhausted usage credits |
CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS | unset | Caps how long each request waits out 429 and 529 errors under the watchdog, for example 1800000 for 30 minutes. Requires v2.1.295 or later |
# Unattended run that waits out 429s for up to 30 minutes per request
export CLAUDE_CODE_RETRY_WATCHDOG=1
export CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS=1800000
claude -p "run the test suite and fix failures"On Windows PowerShell, use $env:CLAUDE_CODE_RETRY_WATCHDOG = "1" instead of export. Don't use the watchdog in an interactive session where you would rather know about the throttle and cut parallel work.
Claude Code 429 vs 529: what's the difference?
In Claude Code, a 429 means a rate limit refused the request: a short server-side throttle on a subscription, or the limit on your API key, cloud project or gateway. A 529 means the model is overloaded for everyone. Claude Code retries both, except a gateway's spend-limit 429. A 529 is never your plan's usage limit; a 429 is only when the message says You've hit your session limit or You've hit your weekly limit.
| 429 | 529 | |
|---|---|---|
| Final message | Server is temporarily limiting requests (not your usage limit) or Request rejected (429) | Repeated 529 Overloaded errors |
| Cause | Rate limit on your session, key, project or gateway | The model is at capacity |
| Helps | Fewer parallel subagents and sessions, a higher-tier key | Waiting, or /model to switch model |
| Details | This page | Claude Code 529 Overloaded |
How the 429 messages changed
| Version | Change |
|---|---|
| 2.1.76 (March 2026) | Developers reported API Error: Rate limit reached (#34413); that wording is not in 2.1.302 or 2.1.325 |
| By April 2026 | API Error: Server is temporarily limiting requests (not your usage limit) reported (#53915) |
| v2.1.186 | CLAUDE_CODE_MAX_RETRIES capped at 15 |
| v2.1.199 | Subscription sessions retry the server throttle instead of failing on the first one; with the watchdog on, other transient errors retry up to 300 times and an explicit CLAUDE_CODE_MAX_RETRIES is no longer capped at 15 |
| v2.1.239 | The watchdog stops retrying a 429 that reports a spend limit or exhausted usage credits |
| v2.1.281 | A proxy's HTML 429 page shows only its title after the ·, not the whole markup |
| v2.1.295 | CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS added |
| 2.1.325 (published 13 Nov 2026, checked 15 Nov) | Both 429 messages and the fallback sentence present in the linux-x64 build; API Error: Rate limit reached absent |
Versions from v2.1.186 on come from the error reference and the environment variable docs.
This is the check I ran against the Claude Code 2.1.302 installed on my Windows machine (Git Bash), counting how often each message appears in the program file:
EXE="$LOCALAPPDATA/Microsoft/WinGet/Packages/Anthropic.ClaudeCode_Microsoft.Winget.Source_8wekyb3d8bbwe/claude.exe"
for s in 'Server is temporarily limiting requests (not your usage limit)' 'Request rejected (429)' 'this may be a temporary capacity issue.' 'API Error: Rate limit reached'; do
printf '%s => ' "$s"; grep -a -c -F "$s" "$EXE"
doneServer is temporarily limiting requests (not your usage limit) => 2
Request rejected (429) => 2
this may be a temporary capacity issue. => 2
API Error: Rate limit reached => 0The old API Error: Rate limit reached wording is gone; the two current messages and their fallback sentence are there.
Key takeaways
- Claude Code error 429 is a rate limit, shown as 'API Error: Server is temporarily limiting requests (not your usage limit)' on a claude.ai subscription or gateway, or 'API Error: Request rejected (429)' with an API key, Bedrock, Vertex AI or Foundry.
- Neither is your plan's usage limit. A real plan limit says 'You've hit your session limit' or 'You've hit your weekly limit' with a reset time.
- Claude Code has already retried a temporary 429 up to 10 times before you see it, so resending in a loop only adds requests.
- For the server throttle: wait, run fewer subagents and sessions at once, and check status.claude.com.
- For Request rejected (429): run /status to confirm the credential (a stray ANTHROPIC_API_KEY is a common cause), then check that key's or project's rate limits.
- For unattended runs, CLAUDE_CODE_RETRY_WATCHDOG=1 waits out 429s, and CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS caps the wait.
FAQ
Frequently asked questions
What does Claude Code error 429 mean?
HTTP 429 means Too Many Requests: something between Claude Code and the model refused the request because of a rate limit. Claude Code shows it in two forms. 'API Error: Server is temporarily limiting requests (not your usage limit)' is a short server-side throttle for claude.ai subscription and gateway sign-ins. 'API Error: Request rejected (429)' is the rate limit of your Anthropic API key, Amazon Bedrock, Google Vertex AI or Microsoft Foundry project.
Is 'Server is temporarily limiting requests' my usage limit?
No. The message says so in brackets: 'not your usage limit'. Claude Code shows it when a 429 arrives without the quota headers that a real plan-limit response carries. When you really hit your plan's limit, Claude Code says 'You've hit your session limit' or 'You've hit your weekly limit' with a reset time instead.
How do I fix 'API Error: Server is temporarily limiting requests (not your usage limit)'?
Wait a minute and send the message again, because Claude Code (v2.1.199 or later) has already retried it up to 10 times. If it keeps coming back, run fewer subagents and Claude Code sessions at the same time, since several developers on GitHub report it while running agent teams or parallel sessions, and check status.claude.com for an incident.
How do I fix 'API Error: Request rejected (429)'?
Run /status and confirm the active credential is the one you expect; a stray ANTHROPIC_API_KEY can send requests through a low-tier key instead of your subscription. Then check the key's or project's rate limits in the Claude Console, Amazon Bedrock or Google Cloud console, request a higher tier if needed, and run fewer parallel subagents.
Does Claude Code retry a 429 automatically?
Yes. Claude Code retries temporary 429 throttles up to 10 times with exponential backoff before showing the error, and shows 'Retrying in Ns · attempt x/y' while it waits. CLAUDE_CODE_MAX_RETRIES changes the count. CLAUDE_CODE_RETRY_WATCHDOG=1 retries 429 and 529 errors indefinitely for unattended runs. A gateway's spend-limit 429 is not retried.
What is the difference between a 429 and a 529 in Claude Code?
In Claude Code, a 429 means a rate limit refused the request: a short server-side throttle on a subscription, or the limit on your API key, cloud project or gateway. A 529 means the model is overloaded for everyone, and after repeated failures Claude Code shows 'Repeated 529 Overloaded errors'. A 529 is never your plan's usage limit; a 429 is only when the message says 'You've hit your session limit' or 'You've hit your weekly limit'.
Does a 429 error use up my Claude usage?
Anthropic does not document that a rejected request counts against your plan. Several developers in the main GitHub issue (#53915) report their usage meter rising while they kept getting 'Server is temporarily limiting requests', but Anthropic has not confirmed it. Stop resending in a loop and wait instead.
What was 'API Error: Rate limit reached' in Claude Code?
It was an older wording, reported on Claude Code 2.1.76 in March 2026 (GitHub #34413). Current builds, including 2.1.302 and 2.1.325, no longer contain it; they show 'Server is temporarily limiting requests (not your usage limit)' or 'Request rejected (429)' instead.
Why do I get a 429 with 'Too Many Requests' after the dot?
A proxy, load balancer or gateway between Claude Code and the API answered with its own HTML 429 page, and Claude Code shows that page's title after the '·'. The limit is on that proxy or gateway, not on Anthropic's API, so check its rate limit settings or ask whoever runs it.
If the model itself is overloaded rather than you being limited, see Claude Code 529 Overloaded. If Claude Code asks you to log in instead, see Claude Code not logged in. Every other Claude Code error is in the Claude Code troubleshooting hub.
References
- Error reference: Server is temporarily limiting requests, Request rejected (429), Automatic retries (Claude Code docs)code.claude.com · accessed 2026-11-15
- Environment variables: CLAUDE_CODE_MAX_RETRIES, CLAUDE_CODE_RETRY_WATCHDOG (Claude Code docs)code.claude.com · accessed 2026-11-15
- Rate limits (Claude API docs)platform.claude.com · accessed 2026-11-15
- [BUG] API Error: Server is temporarily limiting requests (not your usage limit) · Rate limited (anthropics/claude-code issue #53915)github.com · accessed 2026-11-15
- [BUG] API Error: Rate limit reached (anthropics/claude-code issue #34413, Claude Code 2.1.76)github.com · accessed 2026-11-15
- @anthropic-ai/claude-code 2.1.325 (npm), message strings read from the linux-x64 buildnpmjs.com · accessed 2026-11-15
Last reviewed November 15, 2026
Tahir Nazir
Senior AI Engineer & Full-Stack Lead
5+ years shipping AI-powered products — RAG pipelines, agentic workflows, and MCP tooling. Top Rated on Upwork with a 100% job success score.
More about Tahir →Related articles
Claude Code 529 Overloaded: What It Retries For You, and What It Won't
A 529 isn't your usage limit and doesn't touch your quota. Claude Code already retried ten times before it told you. The useful question is which failures it retries automatically, which it deliberately doesn't, and the one environment variable that stops an unattended run dying on a transient capacity blip.TroubleshootingAI Engineering9 min readClaude Limit Reset: The Free Full Reset, /limit-reset and What Each Reset Refills
Anthropic gave every Pro, Max, Ultra and Team account one free full reset to use before 10 December 2026. What each kind of Claude limit reset refills, where the 'Reset for free' button is, why your weekly reset day doesn't move, and why Claude Code can answer 'Unknown command: /limit-reset'.How-toAI Engineering22 min readClaude Code 'Not Logged In · Please Run /login' and 'Login Expired': What Each Means and the Fix
Claude Code says 'Not logged in · Please run /login' when the session has no credential it can use, and 'Login expired · Please run /login' when renewing your claude.ai login failed and the login was cleared. Since 2.1.318 there is a third: 'Login reached its time limit'. What each one means, how to check when your login ends, why Claude Code keeps logging you out, and how to stay signed in for scripts with claude setup-token.TroubleshootingAI Engineering20 min read
Follow along
New posts land here first. Follow along by RSS, or get in touch if you are building something similar.