Session permanently stuck on 'Rate limit reached' after transient rate limit

Resolved 💬 10 comments Opened Feb 18, 2026 by ASutterWork Closed Jun 1, 2026

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

  1. Have a session that hits a rate limit (likely during heavy tool use / agent work)
  2. Session begins returning "Rate limit reached" errors
  3. Wait — error persists indefinitely (observed 1+ hour)
  4. 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
  • /compact also 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.

View original on GitHub ↗

This issue has 10 comments on GitHub. Read the full discussion on GitHub ↗