[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

  1. Use Claude Code extensively with Opus model until approaching/reaching usage limits
  2. Verify Sonnet-specific limit still has significant headroom
  3. Switch to Sonnet model
  4. Attempt to use Sonnet
  5. Observe "weekly limits reached" error despite available Sonnet capacity
  6. Add funds to account
  7. Switch to Sonnet and use it
  8. 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:

  1. The overall limit check takes precedence over model-specific limit checks
  2. Account funds are prioritized over model-specific allocated limits
  3. 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.

View original on GitHub ↗

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