[Bug] Model-specific weekly limits incorrectly blocked by global limit
Resolved 💬 5 comments Opened Dec 1, 2025 by bartsmykla Closed Feb 12, 2026
Bug Description
Bug Report: Model-Specific Limit Not Respected When Switching Models
Summary
When reaching the overall model limits primarily through Opus usage, switching to Sonnet fails even when the Sonnet-specific limit still has significant headroom available. Additionally, after adding funds to the account, Sonnet usage incorrectly charges against the added funds instead of using the available Sonnet-specific limit.
Expected Behavior
- Each model (Opus, Sonnet, Haiku) should have independent usage limits
- When switching from Opus (at limit) to Sonnet (with available headroom), Sonnet should function normally
- Weekly limits should be tracked separately per model
- Added account funds should only be used after model-specific limits are exhausted
- Sonnet should consume its allocated limit before falling back to general account funds
Actual Behavior
- After reaching overall limits via Opus usage
- Switching to Sonnet displays "reached weekly limits" error
- This occurs despite Sonnet-specific limit having substantial remaining capacity
- After adding funds to account and switching to Sonnet:
- Sonnet bypasses its available model-specific limit
- Charges directly against the newly added account funds instead
- Model-specific Sonnet limit remains unused
Steps to Reproduce
- Use Claude Code extensively with Opus model until approaching/reaching usage limits
- Verify Sonnet-specific limit still has significant headroom
- Switch to Sonnet model
- Attempt to use Sonnet
- Observe "weekly limits reached" error despite available Sonnet capacity
- Add funds to account
- Switch to Sonnet and use it
- Observe that usage charges against added funds instead of using available Sonnet limit
Impact
- Unable to utilize available Sonnet capacity when Opus limit is reached
- Forces unnecessary waiting period despite having paid capacity available
- Model-specific limits appear to be incorrectly enforced as global limits
- Added funds are consumed unnecessarily instead of using allocated model limits
- Users effectively lose access to their model-specific capacity allocations
Environment
- Tool: Claude Code CLI
- Models affected: Opus (primary usage) → Sonnet (blocked incorrectly)
- Limit type: Weekly usage limits
- Billing: Account funds added but model-specific limits bypassed
Additional Context
This appears to be a limit enforcement logic bug where:
- The overall limit check takes precedence over model-specific limit checks
- Account funds are prioritized over model-specific allocated limits
- Model-specific capacity is effectively inaccessible in both scenarios
Environment Info
- Platform: darwin
- Terminal: tmux
- Version: 2.0.55
- Feedback ID:
Errors
[{"error":"AxiosError: Request failed with status code 403\n at kj (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:24:1137)\n at Unzip.<anonymous> (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:29:9864)\n at Unzip.emit (node:events:520:35)\n at Unzip.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)\n at EVA.request (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:31:2130)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async Bj2 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2139:5280)","timestamp":"2025-12-01T09:13:30.153Z"},{"error":"AxiosError: Request failed with status code 403\n at kj (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:24:1137)\n at Unzip.<anonymous> (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:29:9864)\n at Unzip.emit (node:events:520:35)\n at Unzip.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)\n at EVA.request (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:31:2130)\n at process.processTicksAndRejections (node:internal/process/task_queues:103:5)\n at async BjA (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2827:37479)\n at async gG9 (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2827:37751)\n at async B (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:2827:38567)","timestamp":"2025-12-01T09:13:30.465Z"},{"error":"AxiosError: Request failed with status code 403\n at kj (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:24:1137)\n at Unzip.<anonymous> (file:///opt/homebrew/lib/node_modules/@anthropic-ai/claude-code/cli.js:29:9864)\n at Unzip.emit (node:events:520:35)\n at Unzip.emit (node:domain:489:12)\n at endReadableNT (node:internal/streams/readable:1701:12)\n at process.processTicksAndRejections (node:internal/process/task_queues:89:21)\n at EVA.request (file:/
Note: Error logs were truncated.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗