# Claude Code Status Line
A beautiful, configurable status line for Claude Code that displays workspace info, git status, model name, context usage, worktree and added-directory scope hints, quota limits with timers, and optional API costs.
```
~/projects/app (+2 dirs) [main] * (+150, -25) Opus (effort: high) ctx: 42% (84k/200k) 5h: 23% (2h 15m) 7d: 41% (3d 4h)
```
## ✨ Features
- **📊 Rich Information Display** - Working directory, git branch, model name, reasoning effort, context usage, worktree/scope hints, quota tracking (5h/7d)
- **🎨 Fully Customizable** - Per-section colors, Powerline arrows or custom separators, multiline mode
- **📱 Responsive Design** - Automatically drops or wraps low-priority sections on narrow terminals
- **🔒 No Credentials Needed** - Everything comes from the data Claude Code passes to the statusline; no tokens are read and no network calls are made
- **🚀 Easy Installation** - One command on macOS, Linux and Windows; prebuilt binaries, no Rust toolchain needed
## 🚀 Quick Start
Requires [Node.js](https://nodejs.org) 18 or newer (only to download the prebuilt binary). Same command on macOS, Linux and Windows:
```bash
npx @ndave92/claude-code-status-line@latest setup
```
`setup` copies the binary to `~/.claude/statusline/bin/`, installs the slash commands and sets `statusLine` in `~/.claude/settings.json` (it shows the change and asks first; the previous file is kept as `settings.json.bak`). Then restart Claude Code. Run `/customize-statusline` to choose what it shows.
Run the same command again to update.
**Without Node.js** (needs the Rust toolchain from [rustup.rs](https://rustup.rs); builds from crates.io):
```bash
cargo install claude-code-status-line --locked --root ~/.claude/statusline && ~/.claude/statusline/bin/claude-code-status-line setup
```
On Windows (PowerShell): `cargo install claude-code-status-line --locked --root "$env:USERPROFILE\.claude\statusline"; & "$env:USERPROFILE\.claude\statusline\bin\claude-code-status-line.exe" setup`
Prebuilt binaries cover Linux (x64, arm64), macOS (Intel, Apple silicon) and Windows (x64). Other platforms use the crates.io route.
If the statusline does not appear, make sure Claude Code trusts the workspace. Claude Code will not execute custom `statusLine` commands until the workspace is trusted.
## ⬆️ Upgrading from 1.2.x or earlier
The `/update-statusline` command from 1.2.x and earlier downloads from GitHub releases, which are no longer available. Run the install command once instead:
```bash
npx @ndave92/claude-code-status-line@latest setup
```
`setup` migrates the old install:
- points your existing `statusLine` at the new binary in `~/.claude/statusline/bin/`, keeping `padding` and `refreshInterval` (previous `settings.json` saved as `settings.json.bak`)
- replaces the slash commands with the current ones (your old copies are saved as `<name>.md.bak`)
- removes the old binary from `~/.claude/statusline/` and the unused `quota_cache.json`
- keeps your `~/.claude/statusline/settings.json` and `colors.json`
Then restart Claude Code. From then on, `/update-statusline` works again. Users on 1.3.0 (installed from crates.io) can keep using `/update-statusline`.
## 🆘 Quick Help
| Customize settings | `/customize-statusline` |
| Update to latest version | `/update-statusline` or `npx @ndave92/claude-code-status-line@latest setup` |
| Uninstall completely | `/uninstall-statusline` |
| Check version | `~/.claude/statusline/bin/claude-code-status-line --version` |
| Reinstall slash commands | `~/.claude/statusline/bin/claude-code-status-line --install-commands` |
**Configuration files:**
- `~/.claude/statusline/settings.json` - Feature toggles and settings (created with defaults on first run)
- `~/.claude/statusline/colors.json` - Color customization (created with defaults on first run)
**Quota (5h / 7d):**
- Shown for Claude.ai Pro/Max subscribers, read from the `rate_limits` data Claude Code provides after the first response in a session.
- Hidden for API-key usage, where Claude Code sends no plan limits. Enable the `cost` section instead.
**Keeping countdowns fresh:** Claude Code re-runs the statusline on events. Add `"refreshInterval": 60` to the `statusLine` block in `~/.claude/settings.json` (the installer offers this) to also refresh every minute while idle.
**Debugging:** run with `STATUSLINE_DEBUG=1`, or force a width with `CLAUDE_TERMINAL_WIDTH=120`.
## ⚠️ Known Issues
- **Notification overlap** - Claude Code notifications may obstruct the statusline
- **Powerline characters** - Require a Nerd Font / Powerline-patched font
## 📄 License
MIT License
---
**Made with ❤️ for the Claude Code community**