← Back to News

feature

Jul 21, 2026

Claude Code statusline: context, rate limits, and peak hours at a glance

rclm-hooks-install now ships a live Claude Code statusline by default, and along the way we fixed a bug that silently broke rclm-hooks-uninstall for every provider.

Running rclm-hooks-install now sets up a live statusline in Claude Code, shown at the bottom of every session. It renders your context window usage, five-hour and weekly rate limits (if you're on a Claude.ai subscription), whether you're inside Anthropic's peak-hour window, your active model, current git branch, and lines changed — refreshed automatically as you work, with nothing extra to install or configure.

This ships on by default alongside the rest of rclm-hooks-install. If you don't want it, rclm-hooks-install --no-statusline turns it off, and the opt-out persists across reinstalls the same way --no-compress does.

How it works

Claude Code exposes a statusLine setting that runs an external command and feeds it a JSON payload on every render — new assistant message, /compact, permission-mode changes, or a timer. We added a small entry point, rclm-claude-statusline, that reads that payload and prints one line:

ctx ▰▰▰▱▱ 58%  5h 42% (resets 2h15m)  OFF-PEAK  Sonnet 4.5 (main)  +120/-30

Each segment comes straight from fields Claude Code already computes and hands us — nothing here calls out to a network or requires credentials:

  • Context usage — a bar and percentage, colored green under 70%, yellow up to 90%, red above.
  • Rate limits — five-hour and weekly usage with a reset countdown. This only appears if you're on a Claude.ai Pro/Max subscription — Claude Code doesn't send these fields for API-key billing, and we don't fake them.
  • Peak / off-peak — a plain clock check against Anthropic's published peak window (weekdays, 5–11am Pacific). No API call, just local time math — the same approach the community tool PeakClaude uses for its browser widget.
  • Model and branch — your active model and current git branch, resolved with a fast, fail-silent git rev-parse that never blocks the statusline if you're not in a repo.
  • Lines changed — additions/removals for the session, when Claude Code reports them.

If any field is missing, that segment just doesn't render — you won't see a broken line or a crash. The script always exits cleanly, even on malformed input.

If you already had a custom statusLine configured, the installer backs it up before writing ours, and rclm-hooks-uninstall restores it automatically. We didn't want "try the rclm statusline" to mean permanently losing whatever you had before.

What we deliberately left out

Two things worth being upfront about, since it's easy to assume more than we built.

First, no cost tracking. Some existing tools show a running dollar estimate. Under a subscription there's no real per-token bill to show — Claude Code's own cost field is explicitly documented as an estimate that "may differ from your actual bill," and there's no official published pricing table we could use to build an accurate cumulative view without maintaining our own copy of Anthropic's rates by hand. We'd rather surface the metric that's actually real for subscribers — your rate-limit percentage — than a dollar figure that implies more precision than it has.

Second, Codex CLI gets no equivalent script from us. It doesn't need one: Codex's terminal UI already ships context-used, context-remaining, five-hour-limit, and weekly-limit as built-in status line items, toggled with /statusline inside the Codex CLI itself. rclm-hooks-install --codex now just prints a one-line reminder to turn those on. Building a duplicate renderer against a config surface Codex already owns didn't seem worth it.

A bug we found and fixed along the way

While testing the uninstall path against a realistic install — binaries resolved to their actual path on disk, not a bare command name — we found that rclm-hooks-uninstall wasn't removing anything. Not just for the new statusline: for every hook, on every provider, in any real pip install rclm setup. The matching logic checked whether a hook's command literally started with rclm-, but the installer resolves binaries to absolute paths (like /home/user/.venv/bin/rclm-claude-hooks) whenever it finds them on your PATH, which is the normal case. The check never matched.

That's fixed now — matching is done against the binary's basename instead of the full command string, so uninstall actually removes what was installed. If you've run rclm-hooks-uninstall before and it reported success, it's worth a check: run it again and confirm your ~/.claude/settings.json (or the equivalent for your provider) no longer has rclm-* entries.

Try it and tell us what's wrong

Run rclm-hooks-install and watch the statusline the next time you're in a Claude Code session. If the peak-hours window looks wrong for your timezone, if a segment is missing when you'd expect it, or if the line feels too cluttered, that's useful — tell us. This is a first pass at something that should feel unobtrusive, and it's the kind of feature where a wrong assumption is only obvious once real people are staring at it all day.