Skip to main content

Claude Code usage monitor — fetches rate limits from Anthropic's API

Project description

ccusage

Claude Code usage monitor. Fetches your real rate limit data from Anthropic's API and displays it in the Claude Code statusline.

Example output

ccusage command:

Plan: max_5x
  Session (5h)         39%  resets 1h26m
  Week (all)           15%  resets 143h26m
  Week (Sonnet)        39%  resets 65h26m
  Extra usage          $0.00 / $1000.00

Claude Code statusline (self-caching — refreshes from API when stale, no daemon needed):

~/projects/myapp [Opus 4.6] 5h:39% 7d:15% son:39% | $1.37 | max_5x | reset:1h26m

Install

uv tool install git+https://github.com/wakamex/ccusage

Then run:

# Check usage once
ccusage

# Run the daemon (keeps usage-limits.json updated)
ccusage daemon

Configure the statusline in ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "ccusage statusline"
  }
}

Commands

Command Description
ccusage Show current usage (colored terminal output)
ccusage json Print raw JSON
ccusage daemon [-i SECS] Run in foreground, refresh every 5 min (customizable)
ccusage statusline Claude Code statusline (self-caching, no daemon needed)
ccusage install Print setup instructions

How Claude Code rate limiting works

Discovered by inspecting Claude Code's bundled cli.js (v2.1.32).

Data sources

Claude Code gets rate limit data from two places:

  1. /api/oauth/usage endpoint — Called by the /status slash command. Returns utilization percentages and reset times for each rate limit bucket. Requires the anthropic-beta: oauth-2025-04-20 header.

  2. Response headers on every API call — Every message response includes headers like:

    • anthropic-ratelimit-unified-{claim}-utilization (0-100 float)
    • anthropic-ratelimit-unified-{claim}-reset (unix timestamp)
    • anthropic-ratelimit-unified-status (allowed / allowed_warning / rejected)
    • anthropic-ratelimit-unified-fallback (available when fallback models are available)
    • anthropic-ratelimit-unified-overage-status / overage-reset
    • anthropic-ratelimit-unified-representative-claim

Rate limit types

Type Key in API response Description
five_hour five_hour Rolling 5-hour session window
seven_day seven_day Rolling 7-day all-models window
seven_day_sonnet seven_day_sonnet Rolling 7-day Sonnet-specific window
seven_day_opus seven_day_opus Rolling 7-day Opus-specific window
overage extra_usage Extra/overage usage (if enabled)

API response format

GET https://api.anthropic.com/api/oauth/usage
Authorization: Bearer <oauth_access_token>
anthropic-beta: oauth-2025-04-20
{
    "five_hour": {
        "utilization": 35.0,
        "resets_at": "2026-02-06T22:00:00+00:00"
    },
    "seven_day": {
        "utilization": 14.0,
        "resets_at": "2026-02-12T20:00:00+00:00"
    },
    "seven_day_sonnet": {
        "utilization": 39.0,
        "resets_at": "2026-02-09T14:00:00+00:00"
    },
    "seven_day_opus": null,
    "seven_day_oauth_apps": null,
    "seven_day_cowork": null,
    "iguana_necktie": null,
    "extra_usage": {
        "is_enabled": true,
        "monthly_limit": 100000,
        "used_credits": 0.0,
        "utilization": null
    }
}

Authentication

The OAuth token lives at ~/.claude/.credentials.json:

{
    "claudeAiOauth": {
        "accessToken": "sk-ant-oat01-...",
        "refreshToken": "sk-ant-ort01-...",
        "expiresAt": 1770412938485,
        "subscriptionType": "team",
        "rateLimitTier": "default_claude_max_5x"
    }
}

The access token expires roughly hourly. Claude Code refreshes it automatically — as long as you have an active Claude Code session, the token stays valid for ccusage to read.

Warning thresholds (from cli.js)

Claude Code shows inline warnings based on these thresholds:

five_hour:  90% utilization when 72% of window has passed
seven_day:  75% at 60%, 50% at 35%, 25% at 15%

Other endpoints found in cli.js

  • /api/oauth/profile — User profile
  • /api/oauth/account/settings — Account settings
  • /api/claude_code/policy_limits — Org policy limits (needs organizationUuid)
  • /api/organization/claude_code_first_token_date — Org onboarding date

Local files Claude Code uses

File Written by Contains
~/.claude/.credentials.json Claude Code OAuth tokens, plan tier
~/.claude/stats-cache.json Claude Code Local usage stats (message counts, token counts per model)
~/.claude/usage-limits.json ccusage daemon Cached API usage data (this tool)
~/.claude/statsig/ Claude Code Feature flags, experiment assignments

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ccusage-0.1.0.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ccusage-0.1.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file ccusage-0.1.0.tar.gz.

File metadata

  • Download URL: ccusage-0.1.0.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccusage-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a97e1fe8ed1bfb45887772b44f791211075cc90cc910a10aa615a5520cea4491
MD5 ead46c927a41ef19b6d991a5e5cd7581
BLAKE2b-256 91c6388ae55706f0d6bd3f9998f9f0fdb564e93ce395e704c89a729d7503ad8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccusage-0.1.0.tar.gz:

Publisher: publish.yml on wakamex/ccusage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ccusage-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: ccusage-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ccusage-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4dbcc8f849f52f9efb58713d849d2d011d3dcb6cceb592f81c66c5589feaac21
MD5 2095a69007023a001f3d1a0ea57d648d
BLAKE2b-256 7baeac42aacc4f57fe19eeae68eef47f59d22a24c8d999099a095ff16c0cad03

See more details on using hashes here.

Provenance

The following attestation bundles were made for ccusage-0.1.0-py3-none-any.whl:

Publisher: publish.yml on wakamex/ccusage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page