Информативная строка состояния для Claude Code — модель, контекст, лимиты, git, время сессии.
Кроссплатформенная. Одна команда для установки.
| Сегмент | Пример | Описание |
|---|---|---|
| Модель | [Opus 4.6] |
Текущая модель |
| Контекст | ━━━━━━ 25% (50K/200K) |
Прогресс-бар использования контекста с цветовой индикацией |
| 5-часовой лимит | H:78% 1h34m |
Остаток квоты за скользящие 5 часов + время до сброса |
| Недельный лимит | W:87% |
Остаток квоты за скользящие 7 дней |
| Проект | my-app |
Имя текущей директории |
| Git-ветка | git:(main) |
Активная ветка (скрыта вне git-репозиториев) |
| MCP-серверы | 3 MCPs |
Количество MCP-серверов из settings и plugin cache (скрыто при 0) |
| Время сессии | ⏱ 12m |
Продолжительность текущей сессии (определяется по timestamps в JSONL-транскрипте) |
Цветовая кодировка лимитов: 🟢 > 50% — 🟡 20–50% — 🔴 < 20%.
curl -fsSL https://raw.githubusercontent.com/AndyShaman/claude-statusline/main/install.sh | bash# 1. Скачайте скрипт
curl -fsSL https://raw.githubusercontent.com/AndyShaman/claude-statusline/main/statusline.sh -o ~/.claude/statusline.sh
chmod +x ~/.claude/statusline.sh
# 2. Добавьте в ~/.claude/settings.json (или создайте файл):{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
}# 3. Перезапустите Claude Codeunzip claude-statusline.zip
cd claude-statusline
bash install.sh| Пакет | Назначение | macOS | Linux | Windows |
|---|---|---|---|---|
jq |
Парсинг JSON | brew install jq |
sudo apt install jq |
встроен в Git Bash |
python3 |
Расчёт времени | предустановлен | предустановлен | winget install python |
curl |
Запрос к API | предустановлен | предустановлен | встроен в Git Bash |
Claude Code запускает скрипт после каждого сообщения ассистента, передавая на stdin JSON с данными сессии (модель, контекст, пути). Скрипт парсит JSON, получает лимиты из API и выводит форматированную строку с ANSI-цветами.
Сегменты H:78% 1h34m и W:87% показывают остаток вашей квоты Claude Code (Pro/Max подписки).
| Лимит | Расшифровка |
|---|---|
| H (hourly) | Квота за скользящее 5-часовое окно. Сбрасывается постепенно. |
| W (weekly) | Квота за скользящее 7-дневное окно. Сбрасывается постепенно. |
Процент — это остаток (100% = полная ёмкость, 0% = лимит достигнут). Время после H: — когда окно полностью обновится.
┌─────────────────────┐ ┌──────────────────────┐ ┌─────────────────────┐
│ 1. OAUTH-ТОКЕН │────▶│ 2. ЗАПРОС К API │────▶│ 3. ПАРСИНГ │
│ │ │ │ │ │
│ Чтение из защищён- │ │ GET /api/oauth/usage │ │ remaining = 100 - │
│ ного хранилища ОС │ │ Bearer <token> │ │ utilization │
│ (Keychain / Keyring │ │ Кэш на 2 минуты │ │ Цвет по уровню │
│ / Credential Mgr) │ │ │ │ Время до сброса │
└─────────────────────┘ └──────────────────────┘ └─────────────────────┘
Шаг 1 — Когда вы входите через claude login, Claude Code сохраняет OAuth-токен в защищённое хранилище ОС. Скрипт читает его обратно:
{
"claudeAiOauth": {
"accessToken": "coa-abc123...",
"refreshToken": "...",
"expiresAt": "..."
}
}Шаг 2 — Запрос к API Anthropic:
curl -sf "https://api.anthropic.com/api/oauth/usage" \
-H "Authorization: Bearer $token" \
-H "anthropic-beta: oauth-2025-04-20"Ответ API:
{
"five_hour": {
"utilization": 22.5,
"resets_at": "2026-02-28T12:30:00Z"
},
"seven_day": {
"utilization": 13.2,
"resets_at": "2026-03-01T00:00:00Z"
}
}utilization— процент использованной квоты (0–100)resets_at— ISO 8601 время полного сброса окна
Шаг 3 — Расчёт: remaining = 100 - utilization, вычисление оставшегося времени, выбор цвета.
Кэширование — API вызывается не чаще раза в 2 минуты. Кэш: ~/.claude/.usage-cache.json (права 600).
Скрипт автоматически определяет ОС и использует нужный способ чтения токена. Ниже — детали для каждой платформы.
Работает из коробки. Токен хранится в Keychain Access (связка ключей).
# Команда, которую использует скрипт:
security find-generic-password -s "Claude Code-credentials" -wПроверить вручную:
security find-generic-password -s "Claude Code-credentials" -w 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK — token expires:', d['claudeAiOauth'].get('expiresAt', '?'))"Скрипт сначала проверяет файл ~/.claude/.credentials.json. Если файла нет — читает токен через libsecret (GNOME Keyring / KWallet) с помощью secret-tool.
Установка secret-tool:
# Ubuntu / Debian
sudo apt install libsecret-tools
# Fedora
sudo dnf install libsecret
# Arch
sudo pacman -S libsecret# Команда, которую использует скрипт:
secret-tool lookup service "Claude Code-credentials"Проверить вручную:
secret-tool lookup service "Claude Code-credentials" 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK — token expires:', d['claudeAiOauth'].get('expiresAt', '?'))"Headless Linux / SSH (без keyring):
Если keyring недоступен, Claude Code может использовать файловое хранилище. Проверьте:
cat ~/.claude/.credentials 2>/dev/null \
| python3 -c "import sys,json; json.load(sys.stdin); print('OK — file-based credentials found')"Если токен в файле — замените Linux-ветку в fetch_usage():
cred_json=$(cat "$HOME/.claude/.credentials" 2>/dev/null)Скрипт сначала проверяет файл ~/.claude/.credentials.json. Если файла нет — читает токен из Windows Credential Manager через PowerShell.
PowerShell-модуль (если файл credentials отсутствует):
# Запустите PowerShell от администратора:
Install-Module -Name CredentialManager -Force# Команда, которую использует скрипт (из Git Bash):
powershell.exe -NoProfile -Command \
'[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String((Get-StoredCredential -Target "Claude Code-credentials" -AsCredentialObject).Password))'Проверить вручную (из Git Bash):
powershell.exe -NoProfile -Command \
'[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String((Get-StoredCredential -Target "Claude Code-credentials" -AsCredentialObject).Password))' 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK — token found')"Без модуля CredentialManager — проверьте файловый fallback:
cat "$APPDATA/claude/.credentials" 2>/dev/null \
|| cat "$LOCALAPPDATA/claude/.credentials" 2>/dev/nullВ WSL Claude Code ведёт себя как Linux — используйте инструкции для Linux выше.
Если Claude Code установлен на стороне Windows, а statusline запускается из WSL:
# Достать токен из Windows Credential Manager через WSL:
cred_json=$(/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -NoProfile -Command \
'[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String((Get-StoredCredential -Target "Claude Code-credentials" -AsCredentialObject).Password))' 2>/dev/null)| Симптом | Решение |
|---|---|
H: и W: не отображаются |
Токен не найден — проверьте инструкции для вашей платформы |
Показывает H:?% W:?% |
API вернул ошибку — токен мог истечь, выполните claude login |
| Числа не обновляются | Кэш (2 мин) — подождите или удалите ~/.claude/.usage-cache.json |
| Время сессии неверно (Windows) | Убедитесь в актуальной версии скрипта — она конвертирует backslash в путях автоматически |
| Скрипт не запускается | Проверьте jq: echo '{}' | jq . — если ошибка, установите jq |
Принудительное обновление:
rm ~/.claude/.usage-cache.json
# Следующее сообщение в Claude Code вызовет свежий запрос к APIРедактируйте ~/.claude/statusline.sh или используйте встроенную команду Claude Code:
/statusline add cost tracking
/statusline remove git branch
/statusline show only model and context
# Линии (по умолчанию)
bar+="━"
# Блоки
bar+="█" / bar+="░"
# Точки
bar+="●" / bar+="○"bar_len=10 # по умолчанию 6Закомментируйте соответствующую строку parts+=() в конце скрипта.
Если вы используете API-ключ без OAuth:
# Закомментируйте строку ~120:
# usage_data=$(get_usage)rm ~/.claude/statusline.sh ~/.claude/.usage-cache.json
# Удалите ключ "statusLine" из ~/.claude/settings.jsonИли внутри Claude Code: /statusline remove it
@AndyShaman · claude-statusline
A rich statusline for Claude Code — model, context, usage limits, git, session time.
Cross-platform. One command to install.
| Segment | Example | Description |
|---|---|---|
| Model | [Opus 4.6] |
Current model name |
| Context bar | ━━━━━━ 25% (50K/200K) |
Visual progress bar with token count. Green → yellow → red |
| Hourly limit | H:78% 1h34m |
Remaining 5-hour usage quota + time until reset |
| Weekly limit | W:87% |
Remaining 7-day usage quota |
| Project | my-app |
Current directory name |
| Git branch | git:(main) |
Active branch (hidden outside git repos) |
| MCP servers | 3 MCPs |
MCP server count from settings and plugin cache (hidden if 0) |
| Session time | ⏱ 12m |
Session duration (detected from transcript JSONL timestamps) |
Color coding: 🟢 > 50% — 🟡 20–50% — 🔴 < 20%.
curl -fsSL https://raw.githubusercontent.com/AndyShaman/claude-statusline/main/install.sh | bashcurl -fsSL https://raw.githubusercontent.com/AndyShaman/claude-statusline/main/statusline.sh -o ~/.claude/statusline.sh
chmod +x ~/.claude/statusline.shAdd to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
}Restart Claude Code.
| Package | Purpose | macOS | Linux | Windows |
|---|---|---|---|---|
jq |
JSON parsing | brew install jq |
sudo apt install jq |
included in Git Bash |
python3 |
Time calculations | preinstalled | preinstalled | winget install python |
curl |
API requests | preinstalled | preinstalled | included in Git Bash |
The H:78% 1h34m and W:87% segments show remaining Claude Code rate limit quota (Pro/Max subscriptions).
| Limit | Meaning |
|---|---|
| H (hourly) | Rolling 5-hour window quota |
| W (weekly) | Rolling 7-day window quota |
Percentage shows remaining capacity (100% = full, 0% = limit reached). Time after H: shows when the 5-hour window fully resets.
- Read OAuth token from OS credential storage (Keychain / libsecret / Credential Manager)
- Call
GET https://api.anthropic.com/api/oauth/usagewithBearer <token> - Calculate
remaining = 100 - utilization, format time until reset - Cache results for 2 minutes at
~/.claude/.usage-cache.json
| Platform | Storage | Command |
|---|---|---|
| macOS | Keychain Access | security find-generic-password -s "Claude Code-credentials" -w |
| Linux | ~/.claude/.credentials.json → libsecret fallback |
cat ~/.claude/.credentials.json |
| Windows (Git Bash) | ~/.claude/.credentials.json → Credential Manager fallback |
cat ~/.claude/.credentials.json |
| WSL | ~/.claude/.credentials.json |
cat ~/.claude/.credentials.json |
Linux / Windows / WSL: the script checks
~/.claude/.credentials.jsonfirst. If absent, falls back to libsecret on Linux (sudo apt install libsecret-tools) or Credential Manager on Windows (Install-Module -Name CredentialManager -Force).
Verify your token is accessible:
# macOS
security find-generic-password -s "Claude Code-credentials" -w 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK')"
# Linux
secret-tool lookup service "Claude Code-credentials" 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK')"
# Windows (Git Bash)
powershell.exe -NoProfile -Command \
'[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String((Get-StoredCredential -Target "Claude Code-credentials" -AsCredentialObject).Password))' 2>/dev/null \
| python3 -c "import sys,json; d=json.load(sys.stdin); print('OK')"If nothing prints, run claude login to re-authenticate.
| Symptom | Fix |
|---|---|
H: and W: missing |
Token not found — verify with commands above |
Shows H:?% W:?% |
API error — token may be expired, run claude login |
| Numbers seem stuck | Cache is active (2 min) — wait or rm ~/.claude/.usage-cache.json |
| Script won't run | Check jq: echo '{}' | jq . — install if missing |
| Session time wrong (Windows) | Update to the latest version — it converts backslashes via sed automatically |
Edit ~/.claude/statusline.sh directly, or use inside Claude Code:
/statusline add cost tracking
/statusline remove git branch
/statusline show only model and context
rm ~/.claude/statusline.sh ~/.claude/.usage-cache.jsonRemove the statusLine key from ~/.claude/settings.json.
