[BUG] "Usage limit reached" hard-stop fires below the displayed 5-hour ceiling (~95%, not 100%)
Preflight
- This is a single bug report (the related "overload mislabeled as quota" concern is being
raised separately as a comment on #56633, not duplicated here).
- Primary evidence is the Plan-usage screenshot described below; flagged as such.
What's Wrong?
The client displayed a red "Usage limit reached · Resets at 5:10 PM" banner and blocked
the session, while the Plan-usage panel in the same view showed the 5-hour limit at 95%
— visibly short of 100%. A hard stop at 95% is either a premature enforcement threshold or a
display/enforcement mismatch near the ceiling. Either way the user was denied service they had
not exhausted.
Evidence (screenshot)
The usage panel and the block appeared simultaneously:
- Context window: 62.7k / 200.0k (31%)
- 5-hour limit: 95% · resets 57m (red bar, not full)
- Weekly · all models: 41%; Sonnet only: 19%
- Banner: "Usage limit reached · Resets at 5:10 PM"
- Banner (concurrent): "Server is temporarily limiting requests"
The 5-hour bar is clearly below 100%, yet the hard-stop banner fired.
Note on the client's own wording
The client already has a correct, distinct string for transient overload — observed
verbatim in #59520 as Server is temporarily limiting requests (not your usage limit) · Rate. So the client is capable of distinguishing the two conditions, which makes a quota
limited
hard-stop firing at 95% (concurrent with the overload banner) look like a threshold or
classification problem rather than a genuine quota exhaustion.
Expected vs Actual
- Expected: a "usage limit reached" hard stop corresponds to 100% of the relevant bucket.
- Actual: the hard stop fired at 95%.
Asks
- Reconcile the displayed 5-hour percentage with the value that triggers the hard stop.
- If a sub-100% safety buffer is intentional, document it and show the effective ceiling
rather than a percentage the user can exceed without reaching 100%.
Related issues reviewed — why this is distinct
- #50321 (open), #51219 (closed,
stale), #50473 (closed,stale) — also "usage
limit fired while the bar shows headroom," but in each the bar is far from the ceiling
(0–28% consumed), pointing at stale-enforcement / tier-gate causes that do not fit a
~5%-from-ceiling case. This report is specifically about a near-100% trigger threshold.
- #56633 (open,
stale), #25770 (closed), #53586 (open,stale) — the
overload-mislabeled-as-quota class. That is a separate concern, contributed as a comment on
#56633 rather than duplicated here.
- #57296 (open) — HTTP 400 "prompt is too long" mislabeled as usage limit; a different
underlying error (context overflow), same misclassification surface.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
Periodic verification — June 2026
Checked against Claude Code v2.1.185 (latest release as of 2026-06-21).
Reproduction test: ℹ️ Not testable this run — no usage rate limit is currently active, so the displayed-vs-actual ceiling gap (~95% vs 100%) cannot be observed this run.
Release notes through v2.1.185: no mention of a fix to the usage-limit hard-stop threshold (
area:cost).This comment is posted automatically to prevent stale-bot closure (threshold: 28 days inactive). Reporter (@blwfish) will close upon confirming resolved.
Periodic verification — August 2026
Checked against Claude Code v2.1.220 (latest release as of 2026-08-01).
Reproduction test: ℹ️ Not testable this run — the account is not currently rate-limited, so the hard-stop threshold cannot be observed against the displayed ceiling.
Release notes through v2.1.220: no mention of a fix.
Note: this issue was auto-labeled
staleon 2026-07-19 with no maintainer response at any point.This comment is posted automatically every ~10-20 days to prevent stale-bot closure. Reporter (@blwfish) will close upon confirming resolved.
Periodic verification — August 2026
Checked against Claude Code v2.1.238 (latest release as of 2026-08-21).
Reproduction test: ℹ️ Not testable this run — the account is not currently rate-limited, so the displayed ceiling cannot be compared against the actual hard-stop point.
Release notes through v2.1.238: no mention of a fix for the threshold discrepancy itself. Two adjacent entries worth noting, neither of which addresses it:
CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION=truenot keeping prompt suggestions on when your account is near, but not over, its usage limit" — same near-vs-over boundary region, different symptom.This comment is posted automatically every ~20 days to prevent stale-bot closure (threshold: 28 days). Reporter (@blwfish) will close upon confirming resolved.