Session permanently stuck on 'Rate limit reached' after transient rate limit
Description
A single Claude Code session gets permanently stuck on "Rate limit reached" after hitting a transient rate limit. The error persists for over an hour. Other concurrent sessions on the same account work fine, indicating the actual rate limit has long since expired but the affected session never recovers.
Environment
- Claude Code version: 2.1.45
- OS: macOS (Darwin 25.3.0)
- Account type: Corporate (with limit bump capability)
- Model: Claude Opus 4.6
Steps to Reproduce
- Have a session that hits a rate limit (likely during heavy tool use / agent work)
- Session begins returning "Rate limit reached" errors
- Wait — error persists indefinitely (observed 1+ hour)
- Open other Claude Code sessions — they work fine on the same account
Key Observations
- Context window was only ~35% full — not a context size issue
/compactalso fails with the same "Rate limit reached" error, so the session cannot self-recover- Other sessions work fine on the same account simultaneously, confirming the actual rate limit has cleared
- Only workaround is
/clear, which loses all session context
Expected Behavior
Session should recover after the rate limit window resets (presumably within minutes). At minimum, /compact should be able to succeed since it would reduce future request sizes.
Actual Behavior
Session is permanently wedged. Every request (including /compact) immediately returns "Rate limit reached." The session never retries successfully, even after 1+ hour.
Suggested Fix
The retry/backoff logic may need a maximum backoff ceiling or a periodic "health check" request that bypasses the backoff state. Alternatively, /compact could be given priority or a separate rate limit bucket since it's a recovery mechanism.
This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗