cd /news/developer-tools/claude-code-status-line-for-worktree… Β· home β€Ί topics β€Ί developer-tools β€Ί article
[ARTICLE Β· art-107339] src=github.com β†— pub= topic=developer-tools verified=true sentiment=Β· neutral

Claude Code status line for worktree, branch, context and quota

Terminito, a new open-source tool by developer Artur Lima, adds a status line to Claude Code sessions showing the current worktree, branch, context usage, and quota remaining. The single bash file, installable via Homebrew or git clone, writes a statusLine key into ~/.claude/settings.json and requires no dependencies. It supports bash 3.2+, runs on Windows Git Bash, macOS, and Linux, and includes diagnostic and demo commands.

read3 min views3 publishedAug 22, 2026
Claude Code status line for worktree, branch, context and quota
Image: Michielbdejong (auto-discovered)

A Claude Code status line that tells you, at a glance, which worktree and branch this session is on, and how much context and quota you have left.

  βŽ‡ northwind-service-roster  feat/source-roster-cursor  β—† Opus
  ctx β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–Œβ–‘β–‘β–‘ 68%    5h β–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘ 41% 2h13m    wk β–ˆβ–ˆβ–‘β–‘β–‘β–‘β–‘β–‘β–‘β–‘ 23% 4d

One bash file, no dependencies, and the render path spawns nothing.

brew install arturlimaaa/tap/terminito && terminito install

Without Homebrew β€” and on Windows, where Git Bash is the target:

git clone https://github.com/arturlimaaa/terminito ~/terminito && ~/terminito/terminito install

install

writes the statusLine

key into ~/.claude/settings.json

and keeps a .bak

beside it. Claude Code picks it up on its next message β€” no restart.

Re-running it is a no-op. If you already have a different status line it stops and tells you, rather than overwriting; install --force

replaces it, and install --print

gives you the snippet to paste yourself.

Nothing appearing? terminito doctor

. If everything there is green but the row is still missing, terminito doctor --trace on

answers the one question the checks cannot: whether Claude Code is really invoking it.

Row 1 β€” where you are. βŽ‡

for a linked worktree, β—‰

plus an amber name for the main checkout, because the main checkout is where an accidental commit costs most. The label is the directory basename; the repo name is added only when the directory doesn't already imply it. In the branch, the namespace recedes and the leaf keeps full weight β€” feat/

grey, source-roster-cursor

lit.

Row 2 β€” what you have left. Coloured area is what you have spent, so a fresh session is quiet grey rather than thirty saturated cells announcing that nothing has happened. Half cells (β–Œ

) double the resolution inside ten columns, so 95% and 100% are not the same picture at the end of the scale where you actually act.

The countdown is what makes the quota bar mean anything: 91% 4m

is fine, wait it out β€” 91% 4h51m

means stop and switch model. Same bar, opposite decisions.

The two rows join into one when the terminal is wide enough to hold them.

Command Purpose
terminito
The status line. Reads the payload JSON on stdin.
terminito install
Write the statusLine key into settings.json (--print , --force )
terminito doctor
Diagnose a status line that isn't appearing
`terminito doctor --trace on off`
Record real renders, to prove Claude Code is invoking it
terminito ls
Every session with its worktree, branch and status (--verify checks each PID is alive)
terminito demo
The full colour ramp and every degradation state
Variable Effect
TERMINITO_COLOR
truecolor 256
TERMINITO_NOW
epoch seconds; freezes the reset countdowns
TERMINITO_CEILING
stop the upward .git walk at this directory
TERMINITO_CLOCK
pin a rung of the clock ladder (date , printf )
TERMINITO_MAX_WIDTH
row 1 column budget; 0 disables truncation (default 78)
TERMINITO_NO_TRACE
never write the invocation trace
NO_COLOR
any non-empty value disables colour
CLAUDE_CONFIG_DIR
overrides ~/.claude

bash

3.2+. That is the whole list β€” no jq

, no Node, no Python, and git

is never invoked (it reads .git/HEAD

itself).

Runs on Windows Git Bash, macOS (both stock /bin/bash

3.2.57 and Homebrew bash 5), and Linux. CI runs the same golden files on all three, and asserts that bash 3.2 and bash 5 emit byte-identical output.

On Windows, use forward slashes or

~

in the settings path. Git Bash treats unquoted backslashes as escape characters, soC:\Users\…

arrives with its separators stripped and fails with no visible error at all.

bash tests/run.sh          # goldens, and every command's contract
bash tests/portability.sh  # bash 3.2 scan, BASH_COMPAT=32, the clock ladder
bash tests/perf.sh         # the 300ms debounce budget

Every non-obvious decision here β€” the spawn-free render path, the baked colour ramp, the CP437 glyph subset, the locked lane widths, the 78-column budget β€” has a measurement or a failure behind it. Those are in DESIGN.md, with the benchmarks in bench/.

MIT.

── more in #developer-tools 4 stories Β· sorted by recency
── more on @terminito 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/claude-code-status-l…] indexed:0 read:3min 2026-08-22 Β· β€”