[BUG] `rate_limits` field missing from statusLine JSON for Claude Max 20x plan (oauth/firstParty auth)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
The rate_limits field is completely absent from the JSON payload piped to the statusLine command, even though I am on Claude Max 20x plan and authenticated via OAuth (firstParty).
Changelog v2.1.80 states:
Addedrate_limitsfield to statusline scripts for displaying Claude.ai rate limit usage (5-hour and 7-day windows withused_percentageandresets_at)
The field was previously appearing but stopped being included at some point around late March 2026 (likely correlated with server-side rate limit changes around March 22–23).
Actual statusLine JSON received (top-level keys only):
[
"session_id",
"transcript_path",
"cwd",
"model",
"workspace",
"version",
"output_style",
"cost",
"context_window",
"exceeds_200k_tokens"
]
rate_limits is not present at all (not null, not an empty object — simply absent).
Auth status:
{
"loggedIn": true,
"authMethod": "oauth_token",
"apiProvider": "firstParty"
}
Plan: Claude Max 20x (verified in billing settings at claude.ai)
What Should Happen?
The rate_limits field should be included in the statusLine JSON for claude.ai Max plan users authenticated via OAuth, as documented in the v2.1.80 changelog:
{
"rate_limits": {
"five_hour": {
"used_percentage": 42,
"resets_at": "2026-03-28T15:00:00Z"
},
"seven_day": {
"used_percentage": 15,
"resets_at": "2026-04-03T00:00:00Z"
}
}
}
Error Messages/Logs
No error messages — the field is simply absent from the JSON without any warning.
Steps to Reproduce
- Ensure you are on Claude Max plan and logged in via
claude login(OAuth/firstParty) - Verify with
claude auth status→ should showauthMethod: "oauth_token",apiProvider: "firstParty" - Configure a
statusLinecommand in~/.claude/settings.json:
``json``
{
"statusLine": {
"type": "command",
"command": "python3 -c \"import json,sys; d=json.load(sys.stdin); print(list(d.keys()))\""
}
}
- Start a Claude Code session and observe the statusline output
rate_limitskey is absent from the printed list
To dump full JSON for inspection:
#!/usr/bin/env python3
import json, sys
data = json.load(sys.stdin)
with open('/tmp/statusline_debug.json', 'w') as f:
json.dump(data, f, indent=2)
Claude Model
Sonnet (default)
Is this a regression?
Yes, this worked in a previous version
Last Working Version
Unknown — was working sometime before late March 2026. Likely regressed around v2.1.83–v2.1.85 or due to server-side changes around March 22–23, 2026 (see related issue #38335).
Claude Code Version
2.1.86 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
Possible correlation with server-side changes:
The disappearance of rate_limits from the statusLine payload appears to coincide with the server-side rate limit behavior changes reported around March 22–23, 2026 (see #38335, #38350). It's possible that the same backend change that caused abnormal rate limit consumption also stopped populating the rate_limits field in the statusLine JSON.
Note on organization accounts:
This account is associated with an organization (masashi.ono@upbond.io's organization), but the subscription is a personal Claude Max 20x plan billed via Stripe. It's worth checking whether organization-scoped accounts are being excluded from rate_limits population unintentionally.
Related issues:
- #38335 — Rate limits exhausted abnormally fast since March 23, 2026
- #38350 — Abnormal/inflated rate limit session usage
- #36383 — (closed) Docs missing
rate_limitsfield documentation
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗