Custom Claude Code Status Line
Claude Code has a fully customizable status line. You point it at a shell script, it pipes in session data as JSON, and your script renders whatever you want. I’ve been iterating on mine for a while; the current version is v2.1.1 and now lives in a public repo: codeberg.org/vtmocanu/cc-statusline.
The v2 layout uses two lines with diagonal corner cuts and width-synchronized lines. Each session gets a unique color from a 12-color palette (hashed from the session ID), so when I have multiple sessions open, I can tell them apart at a glance.

Line 1 (project-colored background): session topic, folder, git branch + status, Kubernetes context
Line 2 (black background): model + effort level, elapsed time, context window bar, 5h/7d API quota bars with reset times, Claude service status icon
All meters are color-coded: green under 50%, gold 50-80%, coral 80%+.
Install
The statusline lives in a public repo on Codeberg: vtmocanu/cc-statusline. Clone it and run the installer:
git clone https://codeberg.org/vtmocanu/cc-statusline.git
cd cc-statusline
./install.shThe installer extracts the chosen ref via git archive (so it never mutates your working tree), copies the scripts into ~/.local/share/cc-statusline/, and prints the JSON snippets to paste into ~/.claude/settings.json.
To pin a specific release:
./install.sh --version v2.1.1To uninstall:
./install.sh --uninstallConfigure Claude Code
After running the installer, paste the snippets it prints into ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "bash ~/.local/share/cc-statusline/statusline.sh"
},
"hooks": {
"UserPromptSubmit": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "/Users/you/.local/share/cc-statusline/hooks/session-topic-capture.sh"
}
]
}
]
}
}The UserPromptSubmit hook is optional: it’s the bit that calls Claude Haiku to generate the per-session “Project: Focus” topic label. If you don’t want that, just leave the hook out and the statusline will skip the topic block.
Restart Claude Code. The topic appears after your first prompt (it runs async, so it shows on the second render).
Requirements
- macOS or Linux,
bash4+,jq,perl,curl gsedon macOS (brew install gnu-sed), used by the optional session-topic hook- A Nerd Font v3+ in your terminal for the powerline corners and icons
- Claude Code v2.1.80+ for native rate-limit data
kubectlis optional (used to display the current context)
The installer checks for these and tells you what’s missing.
Updating
cd /path/to/cc-statusline
git pull
./install.shThe installer detects the previous install and reports the upgrade transition (upgraded v2.0.1 -> v2.1.1).
Source, issues, contributions
Everything is on Codeberg: vtmocanu/cc-statusline. The repo has a CI pipeline (shellcheck + a JSON-fixture test harness), a CHANGELOG.md, and a KNOWN_ISSUES.md for limitations. Issues and pull requests welcome.
Adapting It
Each segment in statusline.sh is independent. Fork the repo, edit the bits you want, and run your own copy via bash /path/to/your/fork/statusline.sh in settings.json. If you build something interesting on top of it, open an issue or PR — I’d love to see it.