# Claude Code Rate Limit Reached: Identify the Limit and Resume

> "Rate limit reached" in Claude Code is usually a session, weekly, or Opus/Sonnet limit. Match the line, then resume in the same session without resending.

- URL: https://blog.laozhang.ai/en/posts/claude-code-rate-limit-reached
- Published: 2026-03-15
- Updated: 2026-10-05
- Author: LaoZhang AI Team (https://blog.laozhang.ai/en/about)
- Topic: Claude Code
- Tags: Claude Code, Rate Limits, Usage Limits, Troubleshooting

---
`API Error: Rate limit reached` means a Claude Code request came back as a rate-limit error (HTTP 429) and the turn ended. On a Pro or Max subscription the cause is usually a session, weekly, or Opus/Sonnet limit, and current Claude Code versions name that limit and its reset time. Find the line on your screen in the table below, then resume in the same session. Let Claude Code wait for the reset, switch model family when only one family is capped, or fix the credential when the 429 came from an API key. Don't keep resending the prompt: Claude Code already retried before it showed you the error.

The messages, commands, and version numbers below follow Anthropic's Claude Code documentation as of October 5, 2026.

## What "API Error: Rate limit reached" means in Claude Code

The bare phrase is still real. The [hooks reference](https://code.claude.com/docs/en/hooks) uses `API Error: Rate limit reached` as the example text for a turn that ended on a `rate_limit` error with `429 Too Many Requests` as the detail. The [errors reference](https://code.claude.com/docs/en/errors) has no entry under that name, though. It lists more specific lines, and each one has a different fix.

So the phrase tells you the category, not the limit. Two facts shape what you do next:

- **The retries already happened.** Claude Code retries temporary failures up to 10 times with exponential backoff before it shows an error, and that includes temporary 429 throttles. While it retries, the spinner shows `Retrying in Ns · attempt x/y`. Pasting the same prompt five more times rarely changes the outcome.
- **The newer behavior depends on your version.** Automatic retry of server throttles for subscription sign-ins arrived in v2.1.199, and auto-continue after a usage limit in v2.1.234. Which builds still print only the bare line isn't documented. If that's all you see, `/status` shows your version.

If the message appeared in Claude.ai chat or in your own API code rather than in Claude Code, [Claude Rate Exceeded Error: Identify the Limit Owner Before You Retry](https://blog.laozhang.ai/en/posts/claude-rate-exceeded-error) covers those surfaces.

## Match the Claude Code limit message to the limit that stopped you

The specific line is the diagnosis. Example times such as `3:45pm` are placeholders from Anthropic's docs; your message shows your own reset time.

| Line on your screen | What stopped you | Next step in the same session |
| --- | --- | --- |
| `You've hit your session limit · resets 3:45pm` | The five-hour session allowance on Pro or Max. It's shared across all models and with claude.ai and the Desktop app. | Wait for the reset and let auto-continue pick the task up. Switching models won't help. `/rate-limit-options` lists wait, usage credits, or upgrade. |
| `You've hit your weekly limit · resets Mon 12:00am` | The weekly allowance across all models. | Same options, but auto-continue won't start on its own when the reset is more than 24 hours away. |
| `You've hit your Opus limit` or `You've hit your Sonnet limit` | Only that model family is capped. | Run `/model` and pick a model from another family. The first request after the switch re-reads the whole conversation with no cache hits. |
| `API Error: Server is temporarily limiting requests (not your usage limit)` | A short server-side throttle. It doesn't touch your plan quota. | Wait a minute, then send a short follow-up. Check status.claude.com if it keeps coming back. |
| `API Error: Request rejected (429) · this may be a temporary capacity issue…` | The rate limit configured for your API key, Amazon Bedrock project, or Google Cloud project. | Run `/status` to confirm which credential is active, then check the provider console and cut concurrency. |
| `API Error: Usage credits required for 1M context · …` | An entitlement check on a `[1m]` model variant. It fires even when your session and weekly allowances have room. | Run `/model` and pick the variant without `[1m]`, or turn on usage credits with `/usage-credits` and restart Claude Code. |
| `You've hit your monthly spend limit · raise it at claude.ai/settings/usage` and the `individual`, `org's`, `team's shared budget`, or `channel's` versions | Your included usage can't cover the request, and usage credits have hit a spend limit. | Raise the limit or ask the admin the message names. If the line also names a plan-window reset time, you can wait for it instead. |
| `spend limit reached (daily; resets …)` | A cap set by the operator of a Claude apps gateway. Claude Code doesn't retry it. | Wait for the named reset, or ask the gateway operator to raise the cap. |
| `Fable limit reached · … the prompt to confirm went unanswered — nothing was sent …` | A usage-credits consent prompt closed unanswered in a Remote Control, background, or teammate session. | Answer the prompt where the session runs, or use `/model` to pick a model that doesn't bill usage credits. |
| `API Error: Rate limit reached` with nothing more specific | A generic `rate_limit` (429) ending. | Run `/usage` and `/status`, then work through the checks in the "16% usage" section below. |

Before a window runs out, Claude Code can warn you with a line such as `You've used 85% of your session limit · resets 3:45pm`. That warning is the cheapest moment to finish the current step or switch to a lighter task.

Two nearby errors aren't limits at all. `API Error: Repeated 529 Overloaded errors` means the API is at capacity for everyone and doesn't count against your quota; see [Claude Code API Overloaded (529): Switch Models or Add a Fallback](https://blog.laozhang.ai/en/posts/claude-code-overloaded-error). If a 500 or 529 cut a task in half, [Claude Code API Error 500 or 529: Resume Without Duplicating Work](https://blog.laozhang.ai/en/posts/claude-code-500-529-rate-limit) covers that recovery.

![Claude Code message-to-action guide for plan windows, model-family caps, API or server limits, 1M entitlement, and spending ceilings](https://blog.laozhang.ai/posts/en/claude-code-rate-limit-reached/img/limit-message-actions.webp)

## Resume the interrupted Claude Code task in the same session

Keep the session open. Don't clear it, don't exit, and don't retype the whole task. Claude Code still holds the conversation and can continue from its own state.

### Session, weekly, or model limit: let auto-continue pick the task up

In an interactive session signed in with a claude.ai subscription, Claude Code v2.1.234 and later waits in the open session and continues the task after the limit resets. It's on by default. The bottom of the session shows:

```text
Usage limit reached · limit resets 3:45pm
Continuing automatically at 3:45pm · esc to cancel
```

At the reset, Claude Code prompts Claude to pick the task up where it stopped. It doesn't resend your last message, so the same instruction doesn't run twice. Permission prompts still apply, which means a continued task can stop on a prompt while you're away. If the task hits the limit again, Claude Code re-arms the wait at most twice in a row and then stops with `Automatic continue stopped after repeated usage-limit hits · /rate-limit-options to try again`.

The wait ends without continuing if you exit Claude Code, switch accounts with `/login`, clear or rewind the conversation, or `/resume` another session. It doesn't restart when you resume the session later. That's the practical reason to leave the terminal alone until the reset.

Claude Code doesn't start the wait by itself in three cases: the reset is more than 24 hours away (a weekly limit can be days out), you're in a Remote Control or agent-team teammate session, or you hit an Opus or Sonnet limit while already running a model from another family. At your own terminal it then opens the usage-limit menu once per reset window. Pick **Wait here, then continue automatically**, or run `/rate-limit-options` to open the menu yourself. Background sessions, `-p` runs, API keys, cloud providers, and usage-based billing get no wait at all, because usage there is metered per request and there is no reset.

To continue before the reset, finish adding usage credits with `/usage-credits`, sign back in after `/upgrade`, or switch models with `/model` during the wait. Claude Code checks whether usage is available and continues right away if it is. It doesn't notice an upgrade or purchase you make in a browser on its own, so send a prompt afterward.

If you don't want work to resume while you're away, turn off **Continue automatically at usage limit** in `/config`, or set `autoContinueAtUsageLimit` to `false`. In the Desktop app's Code tab, the session-limit card has its own **Auto-continue when limits reset** checkbox. The weekly-limit card doesn't, and the Desktop and CLI settings are separate.

### Server throttle or API-key 429: pause, then send one short follow-up

`Server is temporarily limiting requests` and `Request rejected (429)` have no reset to wait for, and the automatic retries are used up by the time you see the line. Wait a minute or two, fix what the table points to, and then send a short prompt such as "continue the previous task from where you stopped." Your earlier messages are still in the conversation, so you don't need to paste the original instruction again.

For an API key, reduce load before you continue: lower `CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY`, run fewer parallel subagents, or move high-volume scripted runs to a smaller model with `/model`. How API key tiers and per-minute limits work is covered in [Claude Rate Exceeded Error: Identify the Limit Owner Before You Retry](https://blog.laozhang.ai/en/posts/claude-rate-exceeded-error).

For CI and other unattended jobs, `CLAUDE_CODE_RETRY_WATCHDOG=1` makes Claude Code retry 429 and 529 capacity errors indefinitely instead of failing after the retry budget. It still fails at once on a 429 that reports a spend limit or exhausted usage credits, so a budget problem doesn't turn into an endless loop.

### Check which edits and commands already ran before a redo

One instruction can turn into many model requests: read a file, run a command, edit, run the tests. When a limit stops one of those requests, the edits and commands from the earlier steps of the same turn have already happened. Claude Code also avoids re-running a request that failed after Claude completed a block of text or a tool call, because that could execute the same tool calls twice.

Subagents follow the same rule. When a rate limit interrupts a foreground subagent that had already produced text, Claude receives that partial output marked as incomplete. If a subagent stopped with `Agent terminated early due to an API error:` followed by a detail, match the detail to the table above. Once it clears, ask Claude to retry the task or resume the subagent.

Before you ask for anything, run `git status` and `git diff`, or scroll through the tool calls in the transcript. Then ask Claude to verify the current state and continue, not to start over. Starting over on top of half-applied edits is how a usage limit turns into duplicated or conflicting changes.

## "Rate limit reached" at 16% usage: causes that aren't your quota

If `/usage` shows room in both the session and weekly windows and the line still blocks every request, a plan window isn't what stopped you. GitHub issue #29579 (opened February 28, 2026, still open) is the well-known case: a Max subscriber got `API Error: Rate limit reached` on every request with 16% session usage. Work through these causes before you reinstall or buy anything.

1. **A `[1m]` model variant.** Opus 4.6 and Sonnet 4.6 reach the 1M-token context window only through a `[1m]` variant. On Pro, both variants need usage credits. On Max, Team, and Enterprise, Opus 4.6 with 1M is included and Sonnet 4.6 with 1M needs usage credits. Current builds say so with `Usage credits required for 1M context`. In #29579, one commenter traced their block to `opus[1m]` being billed as extra usage, and others reported that switching models got them working again. Run `/model` and pick a variant without `[1m]`. If the error persists, a 1M model ID may be set in a settings file that takes priority. Fable 5.1, Fable 5, Sonnet 5 and later, and Opus 4.7 and later run with 1M on every plan with no `[1m]` variant, so this cause only applies if you still run a 4.6 model.
2. **The wrong credential.** `/status` shows the account and sign-in Claude Code is actually using. An `ANTHROPIC_API_KEY` in your environment makes Claude Code use that key instead of your subscription, and a low-tier key hits its own 429s. Unset it in the current shell, remove it from your shell profile, and relaunch `claude`. Run `/login` if you haven't signed in with your subscription yet.
3. **A server throttle or incident.** `Server is temporarily limiting requests` carries "not your usage limit" in the message for exactly this reason. Check [status.claude.com](https://status.claude.com) for an active incident before you change anything locally.
4. **A stale or duplicate install.** Some February 2026 reports describe an old npm-installed CLI shadowing the native build. `/doctor` inside Claude Code checks for duplicate or leftover installs and `PATH` problems, and `claude doctor` from your shell runs a read-only check.
5. **Something tied to the account.** In GitHub issue #33120 (March 2026, closed as completed), the bare line appeared on every Cowork action for one account on several machines. Claude Code and chat on the same account worked, and a different account worked in Cowork. When a failure follows one account across machines, local fixes won't help. Escalate instead.

Avoid fixes that destroy state. One commenter on #29579 deleted their `~/.claude/projects` folder, which holds session transcripts, and the relief didn't last. Buying usage credits doesn't repair an account fault, and reinstalling doesn't change a model selection saved in your settings.

## Evidence to collect before you report a false rate limit

A report that support or the issue tracker can act on answers "which limit, which account, which version" without a follow-up question. Collect this while the error is still happening:

- The exact line, copied as text, with the time and your time zone.
- `/status`: version, model, account, and connectivity.
- `/usage`: both windows and their reset times. A screenshot is fine.
- The model ID from `/model`, including any `[1m]` suffix.
- What you already tried: another model family, signing out and back in, another machine, another account.
- Whether status.claude.com showed an incident at that time.

Remove API keys, tokens, and org IDs before you share any of it.

Send it with `/feedback` inside Claude Code. It sends the transcript and your description to Anthropic and offers to open a prefilled GitHub issue. On Amazon Bedrock, Google Cloud, Microsoft Foundry, and other third-party providers, `/feedback` saves a local archive you can send to your Anthropic account representative instead. Search the [existing Claude Code issues](https://github.com/anthropics/claude-code/issues) first, and add your evidence to a matching issue rather than opening a duplicate.

## Why the Claude Code session limit fills faster than chat

Every request carries the conversation with it: system prompt, project instructions, earlier turns, file contents, and tool output. Claude Code's loop of reads, searches, edits, and test runs sends many of those requests for one instruction, so a short-looking session can draw far more than a chat of the same length. Usage counts against the session and weekly allowances at the same time. One burst of heavy work, such as a large fan-out of parallel subagents, can use up the weekly allowance before the five-hour window resets. Your claude.ai chats and Desktop and IDE sessions draw from the same limits, and Anthropic doesn't publish the windows as hours or prompt counts.

The illustration below shows how one instruction can trigger several requests and how context accumulates; it isn't a measurement of plan limits. On Pro, Max, Team, and Enterprise, `/usage` breaks down what actually counted against your plan.

![Conceptual illustration of one Claude Code instruction triggering read, search, edit, and test requests while system instructions, history, files, and tool output accumulate](https://blog.laozhang.ai/posts/en/claude-code-rate-limit-reached/img/request-context-growth.webp)

The habits that help most are small: `/clear` between unrelated tasks, `/compact` with a focus at natural breaks, Sonnet for most coding, lower effort for routine work, and unused MCP servers turned off. Subagents save context in the main thread, but their requests still count. For a full audit and a plan around the five-hour and weekly windows, see [Claude Code Usage Limits: Check, Audit, and Reduce Token Usage](https://blog.laozhang.ai/en/posts/claude-code-usage-limit-issues).

## Usage credits, a limit reset, or a bigger plan: what each one fixes

Each paid option fixes a different line from the table, and none of them fixes a wrong credential, an account fault, or a stray `[1m]` selection.

- **Usage credits** let a Pro or Max plan keep going past the included limit at standard API rates, up to a monthly spend limit you set in Settings > Usage. `/usage-credits` opens that page; it needs a claude.ai sign-in, not an API key. Credits cover session, weekly, and family limits and the 1M entitlement, and they're what the spend-limit messages refer to. While you draw on them, the prompt cache lifetime drops from one hour to five minutes, so long pauses cost more. [Claude Extra Usage Cost: When Credits Get Expensive and When Max Is Cheaper](https://blog.laozhang.ai/en/posts/claude-extra-usage-cost) works through the numbers.
- **A limit reset** is an occasional benefit that sets the five-hour or weekly limit back to full. Not every account has one. You activate it in Settings > Usage on the web or in the Desktop app; it isn't available in Claude Code in a terminal or IDE. See [Claude Cloud Session Credit vs Usage Credits vs Limit Reset](https://blog.laozhang.ai/en/posts/claude-cloud-session-credit-vs-usage-credits).
- **A bigger plan** raises the base allowance: Max 5x and Max 20x give five and twenty times Pro's per-session usage. [Claude Pro vs Max in 2026: Pricing, Claude Code Limits, and When Max Is Worth It](https://blog.laozhang.ai/en/posts/claude-code-pro-vs-max) compares them.
- **An API key** removes the subscription windows but bills every token and has its own 429 limits. [Claude Code API Billing vs Subscription: API Key, Credits, or Pro/Max?](https://blog.laozhang.ai/en/posts/claude-code-api-key-vs-subscription-billing) covers the switch.

## Questions about Claude Code rate limits and resets

### What happens when Claude Code reaches its usage limit?

Requests stop until the reset time shown in the message. In an interactive subscription session on v2.1.234 or later, Claude Code waits in the open session and continues the interrupted task after the reset, without resending your last message. If only the Opus or Sonnet limit is reached, you can keep working by switching to another model family with `/model`.

### What is the rate limit for Claude Code on Pro and Max?

Pro and Max have two allowances: a session limit that resets every five hours and a weekly limit across all models that resets at a fixed weekly time assigned to your account. Anthropic doesn't publish them as hours or prompt counts. Max 5x and Max 20x give five and twenty times Pro's per-session allowance. An API key follows that key's tier limits instead.

### How do I check my Claude Code rate limit?

Run `/usage`; `/cost` and `/stats` open the same screen. It shows your plan limits and when each resets. `/status` shows version, model, account, and connectivity, not remaining allowance. Pro and Max subscribers can also add the `rate_limits` fields to a custom status line, and the Desktop app shows a usage ring next to the model picker.

### Why is Claude saying rate limit exceeded?

A limit tied to your plan, your API key, or a temporary server throttle rejected the request. Which one depends on where you saw the message. In Claude Code, the table above maps each current line to its limit. For Claude.ai chat and direct API calls, [Claude Rate Exceeded Error: Identify the Limit Owner Before You Retry](https://blog.laozhang.ai/en/posts/claude-rate-exceeded-error) walks through each surface.

## Sources

External pages this guide links to, in the order they appear. Last updated 2026-10-05.

- [hooks reference](https://code.claude.com/docs/en/hooks) (code.claude.com)
- [errors reference](https://code.claude.com/docs/en/errors) (code.claude.com)
- [status.claude.com](https://status.claude.com/) (status.claude.com)
- [existing Claude Code issues](https://github.com/anthropics/claude-code/issues) (github.com)
