[BUG] rate_limits absent from statusLine JSON for Claude Max plan (v2.1.156, Windows)
Following up on #40094 (auto-closed for inactivity; the bot invited a fresh referencing issue). The bug still reproduces on the latest CLI.
Setup
- Claude Code 2.1.156
- Windows 11
- Claude Max subscription (firstParty/OAuth)
Repro
Captured the raw statusLine stdin across multiple renders during an active session. Top-level keys observed:
session_id, transcript_path, cwd, effort, model, workspace, version,
output_style, cost, context_window, exceeds_200k_tokens, fast_mode, thinking
rate_limits is never present — not once.
The data exists server-side
GET https://api.anthropic.com/api/oauth/usage (header anthropic-beta: oauth-2025-04-20, bearer token from ~/.claude/.credentials.json) returns:
{
"five_hour": { "utilization": 9, "resets_at": "..." },
"seven_day": { "utilization": 5, "resets_at": "..." }
}
So the quota data is available — it simply isn't surfaced in the documented statusLine rate_limits field.
Likely root cause
Per community analysis (jarrodwatts/claude-hud#348): Claude Code builds the rate_limits object from anthropic-ratelimit-unified-5h-* / -7d-* response headers, and only includes it in stdin when at least one window has data. For Max-tier accounts those unified headers don't appear to be returned, so the internal cache stays empty and rate_limits never reaches the statusLine payload.
This breaks third-party statuslines (e.g. ClaudeHUD) which — per the documented contract — now rely solely on stdin rate_limits and intentionally dropped the OAuth fallback for compliance reasons.
Ask
Ensure rate_limits is populated in the statusLine stdin for Max-tier subscribers, consistent with the v2.1.80 changelog and the documented statusLine contract.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗