Claude Code Statusline

Quota, context, cost, model, and git — live in your Claude Code prompt. Know when the 5h window resets, how deep the weekly limit runs, and what this session costs, without leaving the terminal.

one bash file · 265 tests · deps: jq + curl · no daemon · no telemetry

claude
curl -fsSL https://raw.githubusercontent.com/thevibeworks/claude-code-statusline/main/install.sh | bash

Anatomy of the line

my-project  +131/-16 6m $7.53 fabl5[1m]xh[█░░░░░12%] fb[67%] [MAX|you] 5h[38%@14:00] 7d[55%@2d]
+131/-16 6m $7.53 Session activity. Lines added/removed, API time, session cost — cost flashes its increment (+.37) for a minute after each jump.
fabl5[1m]xh[█░░░░░12%] Model + context. Abbreviated model, 1M-window tag, reasoning-effort badge, context pressure bar. On 1M models the bar also carries the premium-pricing band. After /compact the bar snaps to [░░░░░░0%] and flashes the drop.
fb[67%] Model-scoped weekly quota. When the API carries a per-model weekly limit for the model you're running (Fable here), it hugs the model block. Other models' limits stay hidden — only the one constraining this session is signal.
5h[38%@14:00] 5-hour window. Wall-clock reset time, deliberately not a countdown: the line only re-renders on activity, so @1h38m would decay into a lie during idle gaps. @14:00 stays true in a frozen frame.
7d[55%@2d] 7-day window, forecast-colored. A learned per-weekday burn profile projects whether quota outlasts the window — your heavy Tuesday counts more than a generic average. Red means "at your pace, dry before the reset".
cache~  !net  !429 Truth badges. Prompt-cache health, and stale-data markers that say why a fetch failed (network, rate limit, auth) instead of silently showing old numbers.

Built like it matters

Numbers that don't lie

Wall-clock resets instead of decaying countdowns. A visible [░░░░░░0%] instead of a hidden bar. Stale data is always badged, never passed off as fresh.

Polite to the API

N concurrent Claude Code instances share one cached fetch behind an atomic lock — at most one usage request per account per TTL window. Escalating backoff honors Retry-After.

Works behind TLS inspection

Corporate mitm proxy or a local tracer: it builds a combined CA bundle from NODE_EXTRA_CA_CERTS automatically, so fetches survive where plain curl dies.

Documented wire contract

The observed /api/oauth/usage schema is versioned in-repo and re-synced against CLI captures, so parser changes check against ground truth.

265 tests on one bash file

bats suite covering quota math, lock contention (20-contender single-winner), forecast pacing, ANSI rendering, and the installer. CI on every push.

Nothing running in the background

No daemon, no telemetry, no npm. It runs when Claude Code renders the prompt, reads stdin + one cached API call, prints a line, exits.

What it is not