AI Navigate

claude-statusline: a configurable status line for Claude Code

Dev.to / 3/18/2026

📰 NewsTools & Practical Usage

Key Points

  • Claude-statusline is a new Go-based tool that lets you customize the status line in Claude Code, offering a faster and more maintainable alternative to the default bash script.
  • It is cross-platform (Mac, Linux, Windows) and draws design inspiration from Starship, including presets, format strings, and per-module config.
  • The default status line shows five modules (directory, git_branch, model, cost, and context) with the format "$directory | $git_branch | $model | $cost | $context".
  • There are two optional modules (session_timer and lines_changed) that can be enabled in the configuration, and six built-in presets for themes.
  • The project is hosted on GitHub at felipeelias/claude-statusline and emphasizes speed and a single binary distribution.

Claude Code lets you customize the status line at the bottom of your terminal. The default suggestion is a bash script, which works but gets clunky fast and difficult to maintain for more complex features.

There are other tools out there that solve this (more on that below), but none written in Go. I think Go is the right fit here: fast, compiles to a single binary, and cross-platform out of the box, given my setup uses Mac/Linux/Windows. I’m a big fan of Starship, and it heavily inspired the design: presets, format strings, per-module config and so on.

So I built claude-statusline:

claude-statusline screenshot

What it shows

The default format displays five modules:

format = "$directory | $git_branch | $model | $cost | $context"

  • directory: current working directory, truncated to the last 3 segments
  • git_branch: current branch, with an indicator when you’re inside a git worktree
  • model: which Claude model is running
  • cost: session cost in USD, color-coded by thresholds (yellow at $1, red at $5)
  • context: context window usage as a progress bar with percentage (yellow at 50%, red at 90%)

There are two more modules disabled by default: session_timer and lines_changed. You can enable them in the config.

Themes

claude-statusline ships with 6 built-in presets:

Preset Description Nerd Font
default Flat with pipes, standard colors No
minimal Clean spacing, no separators No
pastel-powerline Pastel powerline arrows Yes
tokyo-night Dark blues with rounded powerline Yes
gruvbox-rainbow Earthy rainbow powerline Yes
catppuccin Catppuccin Mocha powerline Yes

To switch themes, set the preset field in your config:

preset = "tokyo-night"

Preview all of them with mock data:

claude-statusline themes

Making it your own

The config lives at ~/.config/claude-statusline/config.toml. You can start from a preset and override individual modules:

preset = "catppuccin"

[cost]
thresholds = [
  { above = 2.0, style = "yellow" },
  { above = 10.0, style = "red" },
]

[context]
bar_width = 10

Styles support named colors, hex values, 256-color codes, and attributes:

[model]
style = "fg:#11111b bg:#cba6f7 bold"

Rearranging the format string or adding inline styled text also works:

format = "$model | $directory | $git_branch | [$cost](dim)"

Installation

With Homebrew (recommended, keeps updates simple):

brew install felipeelias/tap/claude-statusline

Or with Go:

go install github.com/felipeelias/claude-statusline@latest

Then add it to your Claude Code settings (.claude/settings.json or global):

{
  "statusLine": {
    "type": "command",
    "command": "claude-statusline prompt"
  }
}

Generate a starter config with claude-statusline init, and use claude-statusline test to iterate on your config without running Claude Code.

Alternatives

The awesome-claude-code list has other options worth checking out: