This document is the authoritative install guide.
- macOS, Linux, WSL, or Windows with Git Bash → use
statusline.sh, orstatuslinepywhen the Python runtime below is installed - Windows through PowerShell or CMD → use
statusline.ps1
Git Bash can also invoke the PowerShell implementation; choose the Bash implementation when its jq dependency is available.
Clone to ~/.claude/statusline/ on Unix, or %USERPROFILE%\.claude\statusline\ on Windows. If that directory already exists and is a git clone of this repo, update it with the fast-forward-only command in Updating instead of re-cloning.
git clone https://github.com/chrisdpurcell/ClaudeCodeStatusLine ~/.claude/statusline
chmod +x ~/.claude/statusline/statusline.sh ~/.claude/statusline/statuslinepy ~/.claude/statusline/statuslinepy-subTo use the Python implementation, install its pinned dependencies into the python3 interpreter that will run statuslinepy, then verify both imports:
python3 -m pip install --user -r ~/.claude/statusline/requirements.txt
python3 -c 'import humanize, rich'git clone https://github.com/chrisdpurcell/ClaudeCodeStatusLine "$env:USERPROFILE\.claude\statusline"Add (or update) the statusLine key in ~/.claude/settings.json (Unix) or %USERPROFILE%\.claude\settings.json (Windows). Merge with existing keys — preserve pre-existing settings and do not overwrite unrelated keys.
{ "statusLine": { "type": "command", "command": "~/.claude/statusline/statusline.sh" } }For the Python implementation, use its extensionless executable instead:
{ "statusLine": { "type": "command", "command": "~/.claude/statusline/statuslinepy" } }To enable the subagent status line with Python, configure subagentStatusLine (preserving any pre-existing custom subagentStatusLine setting if present):
{
"statusLine": { "type": "command", "command": "~/.claude/statusline/statuslinepy" },
"subagentStatusLine": {
"type": "command",
"command": "~/.claude/statusline/statuslinepy-sub"
}
}{
"statusLine": {
"type": "command",
"command": "pwsh -NoProfile -ExecutionPolicy Bypass -File ~/.claude/statusline/statusline.ps1"
}
}If PowerShell 7+ (pwsh) is not installed, fall back to Windows PowerShell 5.1:
{
"statusLine": {
"type": "command",
"command": "powershell -NoProfile -ExecutionPolicy Bypass -File ~/.claude/statusline/statusline.ps1"
}
}
-ExecutionPolicy Bypassis process-scoped — it does not change your machine's PowerShell policy. Without it, a defaultRestrictedorAllSignedpolicy (common on locked-down corporate machines) silently rejects the unsigned script and Claude Code shows no status line with no error.If
~does not resolve in your installation, use an absolute path. On Windows, use a forward-slash path such asC:/Users/your-name/.claude/statusline/statusline.ps1, which works from both Git Bash and PowerShell.
After saving settings.json, start a new session or restart Claude Code if the configuration does not reload immediately.
Update the installed clone to the latest commit on main:
git -C ~/.claude/statusline pull --ff-only origin mainOn Windows PowerShell, use:
git -C "$env:USERPROFILE\.claude\statusline" pull --ff-only origin mainNo settings.json changes are needed — the command paths are stable across main updates.
- Remove
statusLinefromsettings.json. RemovesubagentStatusLineonly if its command points to~/.claude/statusline/statuslinepy-sub. - Delete the clone:
rm -rf ~/.claude/statusline(or the Windows equivalent).
- Claude Code (Pro/Max subscription for rate-limit and extra-usage display)
- Bash implementation (macOS / Linux):
jqandcurl - Python implementation:
curl, Python 3.10.7 or newer, and the exact Rich and Humanize versions inrequirements.txt;jqis not required - Windows: PowerShell 5.1+ (default on Windows 10/11)
gitinPATH(needed to clone or update; optional at runtime, where it enables@branchannotations)
To use the Bash implementation, install jq with the system package manager (brew install jq, apt install jq, etc.).