feature
Jul 21, 2026rclm-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.
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:
git rev-parse that never blocks the statusline if you're not in a repo.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.
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.
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.
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.