Moved. This statusline now lives in the claude-plugins marketplace as the
statuslineplugin. This repo is archived and no longer maintained, the script below is the last standalone version./plugin marketplace add josefheld/claude-plugins /plugin install statusline@josefheldThen let the skill set it up (
"set up my statusline"), or run the installer once:sh ~/.claude/plugins/marketplaces/josefheld/plugins/statusline/scripts/install-statusline.sh
A custom statusline script for Claude Code that displays real-time session information in your terminal: model, context window, cost, both rate limits, git state, session runtime.
🤖 Opus 5 T | 🧠 ██████░░ 75% | 💰 $0.42 | ⏱️ 5h ████░░░░ 45% ↻14:30 | 📁 my-project | 🌿 main +3 ~5 | 🕐 01:23:45
A statusline is not a plugin component, so this could never be a plugin in the usual sense: Claude Code reads it from statusLine in settings.json, and something has to write that entry. The plugin ships an installer that does it.
What the move buys, and what this repo could not offer:
- Updates arrive.
settings.jsonpoints at the script inside the plugin directory, soclaude plugin updatealso updates the script. Thecp ... ~/.claude/statusline-command.shin the old setup below goes stale the moment anything changes here. - Segments are configuration. Which segments appear, and in which order, is
CC_STATUSLINE_SEGMENTS=model,context,cost,gitin front of the command, not a code edit. Plus bar width, the yellow and red thresholds, and the reset time format. - Three bugs are fixed that are still present in the script in this repo:
printfandawkparse62.4throughLC_NUMERIC. In any locale with a decimal comma (de_AT,fr_FR, ...) that is aninvalid number, so the context bar reads0%in red and the cost prints$0,42. Fixed by exportingLC_NUMERIC=Cwhile leavingLC_CTYPEalone, so the bar characters still render.- A payload without
.rate_limitsprinted a literalnull%. %pis an empty string in most non-English locales, turning2:30PMinto a bare2:30. The reset time is 24h by default now.
- A self-check.
test-statusline.shasserts the segment behaviour instead of leaving it to the next session to notice.
Still works if you cloned this repo, and gets no further fixes.
cp statusline-command.sh ~/.claude/statusline-command.sh
chmod +x ~/.claude/statusline-command.sh{
"statusLine": {
"type": "command",
"command": "sh ~/.claude/statusline-command.sh"
}
}Requires jq and git.
Original script by @danielmackay, see danielmackay/claude-code-statusline. Enhanced here with a single-parse jq call, one-line POSIX sh output, thinking mode, effort level, both rate limits with reset times, worktree, active agent and session name.
