Skip to content
Custom Claude Code Status Line

Custom Claude Code Status Line

6 min read

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.

Claude Code statusline v2

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.sh

The 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.1

To uninstall:

./install.sh --uninstall

Configure 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, bash 4+, jq, perl, curl
  • gsed on 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
  • kubectl is 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.sh

The 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.

Last updated on