Fix: Rate Limit Exceeded (429)
Error Message:
"429: Too Many Requests" "Rate limit exceeded. Please try again later." "You have exhausted your daily quota." "Request failed: rate_limit_error"
What This Error Means
A 429 response tells you the API refused your request because you sent too many, too fast, or you've burned through your allotted quota for the period. Claude Cowork doesn't buffer or silently retry forever — once the upstream API returns 429, the tool surfaces it to you and halts the current operation. The specific limit you hit determines how long you wait and what you need to change.
Root Cause Analysis
There are three distinct limits that can trigger a 429, and mixing them up leads to wasted time. The first is requests-per-minute (RPM), a burst limit. If you fire off a dozen messages in under 60 seconds — or a sub-agent fan-out sends ten parallel tool calls — you can blow past the RPM ceiling even if your total token usage is low. The second is tokens-per-minute (TPM), which measures payload size rather than count. Pasting a 3,000-line log file into a single message can eat your entire TPM budget in one shot. The third is tokens-per-day (TPD), a hard daily cap tied to your pricing tier. This one doesn't reset until midnight UTC, so no amount of waiting or retrying will fix it today.
A common trap is assuming the error is always RPM. Teams hit 429, wait 60 seconds, retry, and get the same error — because they're actually out of daily tokens. The error string sometimes includes the limit type, but not always. Before you retry anything, check which bucket you've exhausted.
Sub-agent workflows are the worst offender for burst limits. When you ask Claude to "research 20 topics in parallel," each sub-agent makes its own API calls. Twenty agents × three calls each = sixty requests in a few seconds. Even on a generous tier, that trips the RPM guard.
Real-World Scenario
You're refactoring a monorepo and ask Claude to "analyze every package and suggest dependency upgrades." Claude spawns a sub-agent per package — twelve in total. Each one reads package.json, runs npm outdated, and calls the npm registry API. Around the eighth sub-agent, everything stalls. The output shows 429: Too Many Requests repeated across the sub-agent logs. The first seven agents finished fine; the last five never started.
Step-by-Step Fix
Step 1: Identify which limit you hit
Check the error details and your usage dashboard:
# If using the CLI, the error usually prints the limit type:
# "rate_limit_error: requests_per_minute" → RPM (wait 60s)
# "rate_limit_error: tokens_per_day" → TPD (wait until reset)
Open the usage dashboard in your browser and look at the current period's consumption. If TPD is at 100%, you're done for the day unless you upgrade.
Step 2: For RPM/TPM limits — wait and retry with backoff
Wait 60 seconds for RPM, or 90 seconds for TPM. Claude usually retries automatically with exponential backoff, but if the retry chain exhausts itself, restart the task manually:
"I hit a rate limit. Wait 60 seconds, then retry the last operation."
Step 3: For TPD limits — reduce consumption or upgrade
If you've hit the daily cap, your options are:
- Switch to a cheaper model for routine tasks. Haiku consumes fewer "value units" than Sonnet or Opus. Use Haiku for file reads, summaries, and simple edits; reserve Sonnet/Opus for complex reasoning.
- Increase your spend cap. Go to Settings → Billing and raise the monthly limit. This only helps if the 429 is from a self-imposed spending cap, not a platform hard limit.
- Wait for the reset. TPD resets at a fixed time (usually midnight UTC). Check the dashboard for the exact reset countdown.
Step 4: Throttle sub-agent fan-out
If sub-agents caused the burst, reduce parallelism:
"Run the package analysis with at most 3 sub-agents at a time,
not all 12 at once. Wait for each batch to finish before starting the next."
Common Pitfalls
- Retrying immediately without waiting. Each retry consumes another request against your RPM limit, pushing your reset further out. Always wait the full 60 seconds.
- Pasting huge files "just in case." A 50,000-token log dump eats TPM budget you'll need later. Trim logs to the relevant section before sending.
- Assuming the error is temporary. If you get 429 three times in a row after waiting, you're almost certainly hitting TPD, not RPM. Stop retrying and check the dashboard.
- Running multiple Claude sessions simultaneously. Two terminal windows both making API calls share the same quota. One session can starve the other.
Prevention Checklist
- Keep the usage dashboard open during heavy sessions so you spot consumption trends before hitting the wall.
- Default to Haiku for simple tasks (file reads, formatting, grep-style searches) to conserve higher-tier token budget.
- Cap sub-agent parallelism at 3–5 concurrent agents, not 20.
- Trim large pastes — send the last 50 lines of a log, not the whole file.
- Set a mental or calendar reminder for the TPD reset time if you're working late and hit the daily cap.
- If you regularly hit TPD, evaluate whether your plan tier matches your actual usage. Upgrading is cheaper than losing half a workday.