Статус-строка Claude Code: настройка через /statusline (2026)
Превратите низ терминала в живую панель — модель, индикатор окна контекста, ветка git, папка и расходы. Двенадцать иллюстрированных шагов от встроенной команды /statusline до аккуратной цветной полосы, плюс исправления на случай, если строка не показывается.
Коротко
- /statusline встроен в Claude Code. Запустите его, опишите желаемую полосу одним предложением — и агент statusline-setup напишет скрипт и пропишет блок statusLine в ~/.claude/settings.json за вас.
- На Windows агент предложит три пути: конвертировать ваш профиль PowerShell, указать конфиг WSL или Git Bash либо собрать свежий дефолт с пользователем, каталогом, моделью и использованием контекста.
- Скрипт читает один JSON-документ из stdin — model.display_name, workspace.current_dir, context_window.used_percentage, cost.total_cost_usd и другие поля. Что выведет echo, то и станет полосой; ANSI-цвета и несколько строк — пожалуйста.
- Всё считается локально и не тратит токены. Обновления срабатывают по событиям сессии (или каждые N секунд с refreshInterval), а /statusline clear сносит всё, если нужен чистый лист.
How to Set Up a Custom Status Line in Claude Code CLI to Track API Costs and Context Usage (2026)
Канал:ProgrammingKnowledge23:32
Claude Code最該裝的不是Skill,是這個腳本|彩色進度條、費用、git 分支一眼看完
Канал:YAHA學堂8:44
Your Claude Code Terminal Should Look Like This (Status Line Setup)
Канал:Leon van Zyl9:02
How to Add a Custom Status Line in Claude Code on Windows 11 (Project-Level Setup)
Канал:Devtamin7:27
Status line — Claude Code documentation
Документация:code.claude.com
Шаги 1–4 записаны в Windows PowerShell, шаги 5–12 на macOS; статичные кадры взяты только из чистых записей экрана — кадры с веб-камерой автора или вшитыми оверлеями не использовались.
Советы по настройке — назвать операционную систему, держать скрипт глобальным и в отдельном файле, требование jq и приём с debug-файлом — из двух дополнительных видео, указанных выше. Имена полей и поведение обновления в углублённых разделах следуют официальной документации строки состояния.
Разбор /statusline — 12 иллюстрированных шагов
Запускаем /statusline и поручаем подключение Claude
- 1
Запустите Claude Code в терминале
Запустите claude в PowerShell, терминале или любой другой оболочке. Свежая сессия показывает только приветственный бокс и пустой промпт — полосы под строкой ввода, где будет жить статус-строка, не существует, пока в ~/.claude/settings.json не появится блок statusLine.

Свежая сессия Claude Code v2.1.83 в Windows PowerShell — приветственный бокс, пустой промпт, строки состояния ещё нет.Смотреть на 0:22 - 2
Введите команду /statusline
Меню слэш-команд описывает её прямо: настроить UI строки состояния Claude Code. Нажмите Enter. Встроенная команда понимает естественный язык, так что скрипт вручную писать не придётся — хотя править то, что она сгенерирует, никто не запрещает.

Автодополнение представляет /statusline как команду, настраивающую UI строки состояния Claude Code.Смотреть на 0:32 - 3
Ответьте на вопросы агента настройки
Эстафету принимает отдельный агент statusline-setup. На Windows он сообщит, что стандартный конфиг оболочки не найден, и предложит три пути: вставить PS1-профиль для конвертации, указать конфиг WSL или Git Bash либо взять свежий дефолт с пользователем, каталогом, моделью и использованием контекста. Все три заканчиваются одним и тем же блоком в settings.json.

Три варианта агента для Windows: конвертировать PS1, указать свой конфиг или начать с разумного дефолта.Смотреть на 1:20 - 4
Проверьте записанные конфиг и скрипт
Закончив, агент печатает превью полосы — имя пользователя, каталог, ветка git, модель, процент контекста — и точно называет места: конфиг в ~/.claude/settings.json, скрипт в ~/.claude/statusline-command.sh. На macOS и Linux тот же поток может вместо запуска с нуля конвертировать ваш существующий промпт из .zshrc или .bashrc.

Настройка подтверждена: превью hardik | ~/Dev/project | main | Claude Opus 4.6 | ctx:42% и оба пути к файлам.Смотреть на 3:06
Описываем желаемую полосу простыми словами
- 5
Попросите именно ту полосу, что нужна
/statusline можно перезапускать сколько угодно и описывать полосу одним предложением: покажи имя модели и процент контекста с прогресс-баром. Запросы на других языках тоже работают — команда по сути промпт для агента. Каждый новый запрос перезаписывает тот же скрипт, а не наслаивает дубликаты.

Одна фраза на человеческом языке — имя модели плюс прогресс-бар процента контекста — вот и весь интерфейс.Смотреть на 1:07 - 6
Наблюдайте за работой инструмента statusline-setup
Claude Code вызывает встроенный инструмент statusline-setup: он читает текущие ~/.claude/settings.json и скрипт строки состояния, затем переписывает их. Собственная карточка Claude резюмирует функцию: настроить пользовательскую панель статуса для наблюдения за окном контекста, расходами и git-статусом.

Инструмент statusline-setup за работой: читает настройки и скрипт, на ховере — описание функции.Смотреть на 1:12 - 7
Познакомьтесь с новой полосой
По завершении агент повторяет дизайн — имя модели жирным бирюзовым, двадцатисимвольный бар контекста, зелёный до 49%, жёлтый с 50% и красный с 80% — а полоса уже живёт внизу терминала. Перезапуск не нужен; просите правки в той же сессии.

Резюме агента над живой полосой Opus 4.6 (1M context) с показателем 2% контекста.Смотреть на 1:27
Читаем сгенерированный скрипт
- 8
По stdin приходит один JSON-документ
Откройте сгенерированный скрипт — ~/.claude/statusline.sh на macOS и Linux или вариант .ps1 / statusline-command.sh на Windows. При каждом обновлении Claude Code передаёт JSON-снимок сессии в стандартный ввод скрипта. Сгенерированный Bash парсит его через jq: .model.display_name, .workspace.current_dir, .cost.total_cost_usd, .cost.total_duration_ms и .context_window.used_percentage.

Парсер: пять jq-чтений из stdin, затем BAR_COLOR выбирается по порогам контекста 90% и 70%.Смотреть на 5:46 - 9
Что выведете через echo — то и будет полоса
Хвост скрипта — чистая презентация: расходы форматированы printf, миллисекунды превращены в минуты и секунды, по одному echo на строку статус-полосы — модель с папкой и веткой git в первой, бар, процент, расходы и таймер во второй. ANSI-цвета приветствуются, и каждый лишний echo просто добавляет строку.

Две строки echo — две строки полосы: модель с каталогом и веткой, затем бар, процент, расходы и таймер.Смотреть на 6:13 - 10
Тем же способом добавьте git
Данные git — в одном вызове subprocess: git rev-parse --git-dir определяет репозиторий, git branch --show-current даёт имя ветки, git diff --cached --numstat и --numstat считают staged и изменённые файлы. Сгенерированные примеры красят staged-счётчик зелёным, изменённый — жёлтым — дешёвая страховка, если держите несколько сессий Claude Code на разных ветках.

GIT_STATUS собран из счётчиков staged и modified, окрашен в зелёный и жёлтый ANSI-кодами.Смотреть на 5:01
Блок — ваш: очистка, перезапись, несколько строк
- 11
Всё висит на одном блоке settings.json
Загляните в ~/.claude/settings.json — вся функция умещается в одном объекте statusLine: type "command" плюс команда для запуска — в этой конфигурации bash ~/.claude/statusline-command.sh. Запустите /statusline clear, и агент удалит блок; опишите новую полосу — он перепишет его. Сработает и проектный .claude/settings.json, если нужна полоса на отдельный репозиторий.

Дифф после /statusline clear: блок statusLine покидает settings.json, готовый быть переписанным.Смотреть на 1:41 - 12
Дальше — больше: несколько строк с расходами, длительностью и ссылками на репозиторий
Строки складываются бесплатно, поэтому многолинейный пример из официальной документации печатает кликабельную ссылку на репозиторий через OSC 8 escape-последовательности, а второй строкой — бар контекста, расходы сессии в формате printf '$%.2f' и прошедшие минуты с секундами. Пороги, проценты rate-limit, режим vim — просите любую комбинацию и итерируйте, пока панель не устроит.

Пример с комментариями: OSC 8-ссылка на репозиторий в первой строке; бар, расходы и длительность во второй.Смотреть на 7:31
stdin JSON, который получает ваш скрипт строки состояния
Claude Code вызывает скрипт, передавая JSON-снимок сессии через стандартный ввод. Вот поля, которые стоит знать, по официальной документации — упомяните любое в предложении для /statusline, и агент подключит их сам:
- 1Базовое о сессии — session_id, transcript_path, cwd и version, плюс session_name и prompt_id после отправки первого промпта.
- 2model.id и model.display_name — активная модель Claude, с которой полоса обычно и начинается.
- 3workspace.current_dir, workspace.project_dir и workspace.added_dirs, плюс workspace.git_worktree и repo.owner / repo.name, если папка принадлежит хостинговому репозиторию.
- 4context_window.used_percentage и remaining_percentage — used считает входные токены, создание и чтение кэша, но не выходные.
- 5context_window.current_usage раскладывает это на input_tokens, output_tokens, cache_creation_input_tokens и cache_read_input_tokens; до первого вызова API и сразу после /compact там null.
- 6cost.total_cost_usd, cost.total_duration_ms, cost.total_api_duration_ms, cost.total_lines_added и cost.total_lines_removed — для полос в стиле «траты и темп».
- 7На планах Pro/Max — rate_limits.five_hour и rate_limits.seven_day с used_percentage и resets_at (для шлюзовых подключений появляется пара spend_limit) — каждое окно может отсутствовать независимо, предусмотрите проверку.
- 8Бонусом — exceeds_200k_tokens, fast_mode, effort.level, thinking.enabled, output_style.name, vim.mode, agent.name, pr.number / pr.url / pr.review_state и семейство worktree.*.
Имена полей следуют официальной документации строки состояния; там же готовые скрипты для Bash, Python и Node.js, вариант для Windows PowerShell и рецепт кэширования git для медленных машин.
Устранение неполадок: строка не видна, врёт или отстаёт
Почти любой сбой статус-строки сводится к одной из пяти причин. Все они чинятся в той же сессии — переустановка не нужна.
- 1Не показывается вовсе — сначала проверьте ~/.claude/settings.json на сломанный JSON; в одной из записей Windows-настройка молчала, пока в пути команды не поправили лишний символ и не перезапустили сессию. Полоса также прячется, пока открыт запрос разрешений, и скрипты не запустятся, пока workspace не доверен.
- 2Пустая полоса без ошибок — скрипт завершился с ненулевым кодом или ничего не вывел. Запустите вручную, например echo '{"model":{"display_name":"Opus"}}' | bash ~/.claude/statusline.sh, и прочитайте вывод; claude --debug тоже пишет stderr скрипта в лог.
- 3Работает только в одном проекте — блок попал в проектный .claude/settings.json вместо домашнего каталога. Перенесите в ~/.claude/settings.json, и полоса появится в каждом проекте.
- 4Цифры выглядят неверно — скорее всего, скрипт читает не то поле. Попросите Claude сбросить сырой stdin JSON в debug-файл, прочитайте его и поправьте поле; записанная macOS-сессия починила свой процент ровно так.
- 5Скрипт есть, но на macOS или Linux ничего не рисует — не установлен jq. Поставьте (brew install jq, sudo apt install jq или Windows-эквивалент), затем попросите Claude обновить строку состояния, чтобы скрипт сгенерировался с её учётом.
Как часто обновляется полоса (и чего это стоит)
Скрипт запускается один раз в начале сессии, затем при каждом событии: новое сообщение ассистента, завершение /compact, смена режима разрешений или vim-режима, правка самой команды, сброс окна rate-limit или истечение тёплого кэша промптов. Обновления дебаунсятся на 300 миллисекунд, а запущенный прогон отменяется, если пришёл более новый.
Обновления событийные, поэтому в простое — скажем, пока ждёте долгий прогон субагента — полоса может затихнуть. Добавьте refreshInterval в блок statusLine, чтобы перезапускать скрипт каждые N секунд для данных, привязанных ко времени. Всё это не касается API: скрипт считается локально и не тратит токены, а каждая лишняя строка echo рисуется отдельной строкой.
Для любителей покрутить есть ещё две ручки: hideVimModeIndicator прячет встроенный текст -- INSERT --, если скрипт сам рисует vim-режим, а отдельная настройка subagentStatusLine даёт субагентам собственные строки в панели агента.
