Skip to content
Download

DOCS / AGENT PLUGINS

Usage statusline

birch statusline is an optional Claude Code status line that prints a compact usage summary (for example Opus 4.8 · ctx 71% · 5h 34% · 7d 12%) at the bottom of your agent terminal — and simultaneously feeds the same numbers into Birch’s workspace properties panel. It complements the birch-status plugin: hooks carry lifecycle events, the statusline carries live usage. (See AI in Birch for the overall picture.)

The line is composed of up to four segments, joined with ·:

SegmentMeaning
Opus 4.8The model the session is running
ctx 71%How full the context window is
5h 34%5-hour rate-limit window used
7d 12%7-day rate-limit window used

A segment simply drops out when its data is absent. The 5-hour / 7-day windows are reported only on Claude subscription plans.

Open Settings → Claude Code and click Enable usage statusline. Birch then:

  • writes the statusLine entry into ~/.claude/settings.json, preserving every other setting (the file is replaced atomically, so a crash mid-write can’t corrupt it);
  • leaves the rest to Claude Code, which picks up the change automatically.

The button refuses to run when the birch CLI is not on your PATH — install it first with Install birch CLI to PATH on the same pane, then try again.

The statusline payload is the richest live-usage tier Birch receives, and it feeds exactly one surface: the CLAUDE CODE card in workspace properties — model, context fill, and the 5h limit / 7d limit rows. Those rate-limit rows appear only while the statusline is enabled; hooks never carry them.

The dashboard’s AI-usage panel is a separate pipeline: it aggregates your local session transcripts and never reads the statusline. Its Reported cost row currently always shows “Unavailable” — transcripts carry no cost data, and no data source feeds that row yet — never a fabricated zero.

Birch never overwrites a custom statusLine you (or another tool) configured — Enable usage statusline detects it and refuses. To keep your own renderer and feed usage into Birch, fan the same stdin JSON out to birch statusline with tee. For example, if your statusline command is my-statusline, change it to:

terminal
tee >(birch statusline >/dev/null) | my-statusline

birch statusline’s own stdout is discarded here — in this setup it just forwards the payload to Birch while your command keeps rendering the visible line.

You can also add the entry to ~/.claude/settings.json yourself:

json
{
"statusLine": { "type": "command", "command": "birch statusline" }
}

The statusline must live in this user-level slot — Claude Code plugins cannot provide a statusLine, which is why it is configured separately from the birch-status plugin.

There is no disable button — remove the statusLine entry from ~/.claude/settings.json (or restore your previous command) and Claude Code drops the line automatically. Birch stops receiving live usage: the rate-limit rows in workspace properties empty out, while transcript-based statistics are unaffected.