Справочное руководство по CLI: Команды и все флаги
📚 Навигация по серии: Предыдущая статья 33 Хуки (Hooks) научила вас автоматически «спускать курок» при определенных событиях и ставить защитные барьеры для Claude. В этой статье мы вернемся к самому базовому — сколько различных комбинаций скрывается за строкой
claude, которую вы вводите в терминале. Команды, флаги, конвейеры, коды выхода — всё это мы разберем в одной статье и дадим удобную шпаргалку.
«А после claude можно еще и параметры писать? Я всегда просто набирал голое claude.»
«Конечно, их там полно. Можно сделать скрипт claude -p 'Сделай саммари этого PR', результат сохранится прямо в файл, и даже не придется заходить в интерактивный режим.»
«Подожди... А что за -p? Я смотрел claude --help, но ничего такого не нашел.»
Подобные диалоги случаются часто. Многие используют Claude Code уже несколько месяцев, но продолжают просто писать claude для входа в интерактивный режим, даже не догадываясь, что за этой командой скрываются десятки флагов. И винить их не в чем — в официальной документации прямо сказано: claude --help не перечисляет все флаги. Если вы будете опираться только на --help, вы гарантированно упустите огромный пласт возможностей.
По сути, в предыдущих тридцати с лишним статьях мы крутились вокруг «интерактивного режима»: зашли, поговорили, он сделал работу. Но claude — это прежде всего инструмент командной строки (CLI), а возможности CLI выходят далеко за рамки «открыть интерфейс». Его можно подключать к конвейерам (pipes), встраивать в скрипты и анализировать успешность по коду выхода. Эта статья — подробная «инструкция по применению», где мы разложим по полочкам команды, флаги, конвейеры и коды выхода, чтобы в будущем вы могли просто заглянуть в эту таблицу.
Прочитав эту статью, вы узнаете:
- Список базовых команд
claude: запуск, запуск с начальным промптом, конвейеры, продолжение/восстановление сеанса, обновление, авторизация — для чего нужна каждая. - Самые часто используемые флаги (
-p/--model/-c/--resume/--permission-mode/--add-dirи т.д.) с подробным разбором и полной справочной таблицей. - Headless (автономный) режим и использование конвейеров: как встроить Claude в скрипты, использовать как линтер и обрабатывать его вывод с помощью
jq. - Как читать коды выхода (exit codes): как в скриптах определить, увенчалась ли операция успехом.
- Полный сценарий использования headless-режима: прямой вызов, передача данных через конвейер, получение структурированного вывода, проверка кода выхода.
01 Сначала разберемся в терминах: Команда vs Флаг
Прежде чем смотреть таблицы, давайте закрепим разницу между двумя терминами, которые легко перепутать. Вся строка, которую вы вводите в терминал, состоит из двух вещей: команды (command) и флагов (flags).
Аналогия: отправка посылки. claude — это само действие «отправить»; идущие за ним update или mcp — это подкоманды, говорящие системе, что сегодня вы не отправляете обычную посылку, а хотите «обновиться» или «настроить MCP»; а -p или --model — это галочки в бланке отправки, уточняющие детали (Ускоренная доставка? С объявленной ценностью? Какой службой доставки?). Действие выбирается одно, а галочек может быть много.
На практике:
claude update
claude -p "Объясни эту функцию" --model sonnet- Первая строка:
claude— это программа,update— это команда (определенное действие, которое выполнится, после чего программа закроется). - Вторая строка: после
claudeнет команды, поэтому сразу запускается логика сеанса;-pи--model— это флаги, а"Объясни эту функцию"после-p— начальный промпт для этого запуска.
Почему важно их различать? Потому что в официальной документации они разнесены по разным таблицам, и вам нужно понимать, в какой именно таблице искать нужную информацию. Хотите узнать, «как обновиться / авторизоваться / настроить MCP» — ищите в таблице команд; хотите узнать, «как сменить модель / получить ответ без входа в интерактивный режим / отключить запросы разрешений» — смотрите таблицу флагов.
Есть еще одна приятная деталь: если вы ошибетесь в команде, программа подскажет правильный вариант. Официальная цитата:
Если вы введете неправильную подкоманду, Claude Code предложит наиболее близкое совпадение и завершит работу, не запуская сеанс. Например,
claude udpateнапечатаетDid you mean claude update?.
Опечатка вроде claude udpate случается часто, и программа честно переспросит «вы имели в виду claude update?», вместо того чтобы тупо пытаться запустить сеанс с опечаткой в качестве промпта. Эта мелочь сбережет вам немало нервов.
💡 Краткий итог: Строка делится на две сущности — команда — это конкретное действие (например,
update,mcp, которое выполняется и завершается), а флаги — это настройки-«галочки» (например,-p,--model, корректирующие параметры запуска); при поиске в документации сначала определите, в какой таблице искать.
02 Основные команды: Варианты запуска сеанса
Начнем с команд. В повседневной работе вы будете использовать всего несколько из них. Я разбил их на три группы по назначению и для каждой привел официальный синтаксис.
Группа 1: Запуск сеанса (Самые частые)
Эту группу вы будете использовать 90% времени:
# 1. Обычный запуск, вход в интерактивный режим
claude
# 2. Запуск с начальным промптом (сразу отвечает на эту фразу после входа)
claude "Объясни этот проект"
# 3. Запуск без входа в интерактивный режим (headless / режим печати)
claude -p "Объясни эту функцию"Первые два варианта вам уже знакомы. Третий вариант, claude -p, — это «другой образ жизни» Claude Code, на котором мы сделаем акцент в этой статье. Он не открывает интерфейс чата, а просто печатает ответ в терминал и завершает работу. Он создан специально для скриптов и конвейеров. Подробнее — в разделе 04.
Группа 2: Продолжение разговора (чтобы он не терял память)
Помните, мы говорили в 19-й статье, что каждый новый сеанс для Claude — как «стажер с потерей памяти», он забывает всё, о чем вы только что говорили. Эти две команды лечат амнезию:
# Продолжить последний разговор в «текущей директории»
claude -c
# (--continue - это полное имя, -c - сокращение)
# Восстановить конкретный разговор по ID или имени
claude -r "auth-refactor" "Заверши этот PR"
# (--resume - полное имя, -r - сокращение)Разница между ними в одном слове: «последний» или «конкретный».
-c(--continue): Понимает только «самый последний диалог в текущей директории», не нужно запоминать ID, это самый удобный вариант.-r(--resume): Указывает конкретно, какой диалог нужен — через ID сеанса или имя, заданное ранее с помощью--name. Если не указать, появится интерактивное меню для выбора.
Аналогия: разговор с коллегой. -c — это «давай продолжим то, о чем говорили только что» (по умолчанию имеется в виду последнее обсуждаемое дело, не нужно уточнять); -r — это «давай вернемся к тому вопросу по рефакторингу авторизации со среды» (здесь вы должны четко назвать тему, чтобы собеседник вспомнил контекст).
Хорошая привычка: когда вы работаете над одной задачей, используйте -c, чтобы не запоминать имена; если же вы параллельно ведете несколько задач (тут ищете баг, там пишете тесты), используйте -r для переключения — при условии, что при создании сеансов вы давали им имена через --name (сокращенно -n), иначе разобраться в куче UUID невозможно. Полный процесс выглядит так:
# Даем понятное имя при старте
claude -n "login-refactor"
# Через несколько дней возвращаемся к этой конкретной задаче
claude -r "login-refactor"Официальное описание --name весьма прямолинейно — заданное имя будет отображаться в списке /resume и в заголовке терминала, после чего вы сможете восстановить сеанс через claude --resume <имя>. Когда у вас 3-4 параллельные задачи, ориентироваться по именам в сотни раз проще, чем по длинным UUID вроде 550e8400-....
Еще одна полезная комбинация: -c и -p можно использовать вместе. claude -c -p "проверь, есть ли ошибки типов" означает «продолжить последний диалог, но в этот раз в headless-режиме: выведи результат и закройся» — он будет помнить контекст прошлого разговора, но не войдет в интерактивный режим. Эта комбинация незаменима в скриптах, когда нужно «разбить задачу на несколько шагов и выполнять их автоматически друг за другом» (пример из раздела 04 построен именно на этом).
Группа 3: Обслуживание и аккаунт
Эту группу вы будете вводить нечасто, но о ней нужно знать:
# Обновиться до последней версии
claude update
# Установить / переустановить бинарник на машине (можно указать версию: 2.1.118 / stable / latest)
claude install stable
# Войти в аккаунт Anthropic
claude auth login
# Проверить статус авторизации (авторизован = код выхода 0, нет = код выхода 1)
claude auth statusВозможность указать версию в claude install может спасти в критической ситуации: официально заявлено, что он принимает как конкретные версии вроде 2.1.118, так и теги stable, latest. Представьте: после обновления какое-то поведение изменилось и вам не подходит. Гораздо приятнее откатиться на предыдущую стабильную версию с помощью claude install 2.1.x и подождать фикса, чем сидеть и мучиться.
Запомните фразу «авторизован = код выхода 0, не авторизован = код 1» для claude auth status, мы вернемся к ней в разделе 05 — это стандартный способ проверить в скрипте «а залогинен ли я вообще?».
Для этих команд нужен доступ в интернет. Если доступ к сервисам Anthropic в вашем регионе заблокирован (логин, скачивание обновлений), сначала включите VPN.
💡 Краткий итог: Команды делятся на три группы — запуск сеанса (
claude/claude "промпт"/claude -p), продолжение диалога (-cдля последнего,-rдля конкретного) и обслуживание аккаунта (update/install/auth);-cи-r— два главных лекарства от «потери памяти» сеансов.
03 Самые популярные флаги: Подробный разбор
С командами разобрались, переходим к главному блюду — флагам. Флагов десятки, но в повседневной работе вам понадобятся от силы семь-восемь. Сначала я подробно разберу их, а в разделе 06 дам полную справочную таблицу.
-p / --print: Без интерактива, только результат
Самый важный флаг, без преувеличений. Добавив -p, Claude не будет открывать интерфейс чата — он прочитает ваш промпт, сделает работу, выведет результат и закроется без участия человека.
claude -p "За что отвечает модуль auth в этом проекте"Это переключатель headless (автономного) режима, и он служит фундаментом для всех скриптов и конвейеров. В разделе 04 мы поговорим о нем подробнее.
--model: Какую модель использовать сейчас
Указывает, какую модель использовать в текущем сеансе, переопределяя модель по умолчанию из настроек:
claude --model sonnet
claude --model opus
claude --model claude-sonnet-4-6 # можно указать полное имяМожно использовать алиасы (sonnet, opus указывают на последние версии) или полные названия моделей. О том, как выбирать модели, мы говорили в 5-й статье, здесь нас интересует только «как временно сменить модель через командную строку».
--permission-mode: С каким режимом разрешений запускать
Определяет, «будет ли Claude спрашивать разрешения перед действиями в этом сеансе». Помните «поводья разрешений» из статьи 20? Этот флаг позволяет натянуть или ослабить их прямо при старте:
claude --permission-mode planОфициально поддерживаются следующие значения:
Принимает значения
default,acceptEdits,plan,auto,dontAskилиbypassPermissions. ПереопределяетdefaultModeиз файла настроек.
Кратко: plan (только планирует, не действует), acceptEdits (автоматически одобряет редактирование файлов), bypassPermissions (пропускает все проверки, использовать с осторожностью) — эти используются чаще всего. О том, какой у них характер и когда их использовать, мы подробно поговорим в следующей статье (статья 35), а здесь вам достаточно знать, что этот флаг позволяет сразу задать нужный режим.
--dangerously-skip-permissions: Флаг со словом "dangerous" (опасно)
Этот флаг стоит выделить отдельно, потому что новички часто о нем спрашивают и часто используют неправильно. Его задача — пропустить все запросы на разрешения. В официальной документации прямо сказано, что он эквивалентен --permission-mode bypassPermissions:
claude --dangerously-skip-permissionsС этим флагом Claude больше не будет останавливаться и спрашивать вас перед редактированием файлов или запуском команд — он будет просто делать всё сам. Само слово dangerously в названии — это предупреждение от Anthropic, что нужно быть осторожным. В 20-й и 21-й статьях мы много говорили о «поводьях разрешений» — этот переключатель равносилен тому, чтобы полностью отпустить поводья.
Здесь нужно обозначить красную линию: используйте его только в изолированных средах, где «если что-то сломается, ничего страшного» — например, в одноразовых контейнерах, тестовых репозиториях или во временных песочницах CI. В реальных проектах, особенно там, где есть доступ к продакшн-данным, даже не прикасайтесь к нему. Если в headless-скриптах вам мешают запросы разрешений, лучше используйте --allowedTools для точечного разрешения конкретных инструментов или --permission-mode acceptEdits, чтобы разрешить только «изменение файлов» — это в разы безопаснее, чем отключать всё разом.
--add-dir: Дать доступ к дополнительным директориям
По умолчанию Claude может читать и изменять файлы только в той директории, из которой он запущен. Флаг --add-dir дает ему доступ к дополнительным папкам:
claude --add-dir ../apps ../libТипичный сценарий: ваш проект и зависимая библиотека лежат в разных папках, и вы хотите, чтобы Claude мог работать в обеих. Но обратите внимание на важное предупреждение из документации:
Предоставляет доступ к файлам; большинство настроек
.claude/из этих директорий не будут автоматически обнаружены.
То есть: --add-dir дает только права на чтение и запись файлов, он не загружает конфигурации вроде CLAUDE.md или Skills из этих папок. Не ждите, что добавление директории автоматически подтянет её настройки.
--output-format: Формат вывода результатов
Имеет смысл только в режиме -p, определяет, как будет выглядеть вывод:
claude -p "Сделай саммари проекта" --output-format jsonТри опции: text (по умолчанию, обычный текст), json (структурированные данные с ID сеанса, стоимостью и метаданными), stream-json (по одному JSON-событию на строку для стриминга). Если в скрипте вам нужно узнать, «сколько денег ушло» или «какой у сеанса ID», используйте json — в разделе 04 мы покажем, как извлекать эти данные с помощью jq.
--allowedTools / --disallowedTools: Белые и черные списки инструментов
Позволяют заранее разрешить (или запретить) определенные инструменты, чтобы headless-запуск не застрял на запросе разрешения (если скрипт работает без присмотра, любой запрос приведет к его зависанию):
claude -p "Запусти тесты и исправь ошибки" --allowedTools "Bash,Read,Edit"Инструменты, указанные в --allowedTools, разрешаются без запросов; --disallowedTools работает наоборот. Здесь используется синтаксис правил (см. статью 20), например "Bash(git diff *)" разрешит только команды, начинающиеся с git diff.
Обратите внимание на разницу с --tools — --tools полностью удаляет инструмент из контекста модели (он не сможет им воспользоваться вообще), а --allowedTools лишь убирает запрос на разрешение, сам инструмент остается доступным.
Несколько «предохранителей» специально для headless-режима
Эти флаги работают только в режиме -p, но они невероятно полезны для предотвращения выхода скриптов из-под контроля:
# Ограничить максимальное количество раундов, при превышении выйдет с ошибкой (по умолчанию безлимитно)
claude -p --max-turns 3 "Запрос"
# Остановиться, как только траты на API превысят указанную сумму (в долларах)
claude -p --max-budget-usd 5.00 "Запрос"В --max-turns кроется небольшая ловушка: если забыть добавить его в скрипт, и Claude вдруг зациклится на исправлении ошибки (пытаясь снова и снова), количество раундов начнет стремительно расти, а вместе с ним и ваши расходы, пока за скриптом никто не смотрит. Гораздо безопаснее всегда добавлять --max-turns в пакетные скрипты, устанавливая жесткий лимит на «попытки». Если он превышен — лучше пусть скрипт упадет с ошибкой.
💡 Краткий итог: Запомните эти высокочастотные флаги —
-pдля вывода без интерактива,--modelдля смены модели,--permission-modeдля контроля разрешений,--add-dirдля доступа к другим папкам,--output-format jsonдля структурированного вывода,--allowedToolsдля предварительного одобрения инструментов; в скриптах используйте--max-turns/--max-budget-usdкак предохранители от перерасхода.
04 Headless и конвейеры: Интегрируем Claude в командную строку
Здесь claude -p раскрывается во всей красе. В предыдущих статьях Claude был «окном чата, где вы общаетесь», а теперь он становится «компонентом командной строки, который можно встроить в конвейер» — в него можно передавать данные из других команд, и его результат можно передавать дальше.
Аналогия: рабочее место на конвейере. Интерактивный режим — это как будто вы сидите за столом и вручную делаете деталь за деталью. Headless-режим — это установка Claude прямо на конвейерную ленту: предыдущий этап (например, cat или git diff) подает материал, Claude его обрабатывает, и результат отправляется на следующий этап (запись в файл, передача в jq). Вам не нужно стоять рядом, вся линия работает автоматически.
Конвейер (Pipe): Передача данных на вход
Неинтерактивный режим читает стандартный ввод (stdin), поэтому вы можете работать с ним как с любой утилитой командной строки, используя оператор | для передачи данных:
cat build-error.txt | claude -p 'Кратко объясни основную причину этой ошибки сборки' > output.txtЭта команда делает три вещи: cat выплевывает содержимое лога → конвейер передает его в claude -p → после анализа оператор > записывает результат в output.txt. Никакого интерфейса не появляется, идеально подходит для автоматизации.
Важное официальное ограничение, которое нужно помнить: начиная с версии v2.1.128, лимит данных, передаваемых через конвейер, составляет 10 МБ. Если лимит превышен, Claude Code выдаст понятную ошибку и завершится с ненулевым статусом. Для обработки больших объемов сохраните данные в файл и укажите путь к нему в промпте, не передавайте их через
|.
Использование как проектного линтера
Если обернуть вызов headless-режима в скрипт, Claude превратится в «персонального ревьюера» вашего проекта. Вот типичный пример из официального package.json — передаем git diff и просим найти опечатки:
{
"scripts": {
"lint:claude": "git diff main | claude -p \"ты линтер опечаток. для каждой опечатки в этом diff укажи имя_файла:строка на одной строке и суть ошибки на следующей. больше ничего не выводи.\""
}
}Теперь достаточно запустить npm run lint:claude. Преимущество подачи diff через конвейер: Claude не нужны разрешения на запуск Bash для самостоятельного чтения diff, вы просто подаете ему уже готовый материал.
Использование jq для обработки структурированного вывода
Если в скрипте вам нужен только текст ответа или ID сеанса, используйте --output-format json вместе с jq (инструментом командной строки для обработки JSON):
# Получить только текст ответа
claude -p "Сделай саммари проекта" --output-format json | jq -r '.result'Формат json возвращает объект с метаданными — сам текст находится в поле .result, ID сеанса — в .session_id, а также есть total_cost_usd с затраченной суммой. Если вам нужно связать несколько диалогов в скрипте, вы извлекаете session_id и используете --resume:
session_id=$(claude -p "Начни ревью" --output-format json | jq -r '.session_id')
claude -p "Продолжай ревью" --resume "$session_id"Выдача «временной роли» для пакетного скрипта
При пакетной обработке часто нужно, чтобы Claude принял на себя определенную роль — например, «ты инженер по безопасности, ищешь уязвимости». Флаг --append-system-prompt добавляет эту инструкцию в конец системного промпта по умолчанию. В этом официальном примере diff из PR передается для ревью безопасности:
gh pr diff "$1" | claude -p \
--append-system-prompt "Ты инженер по безопасности. Проверь код на уязвимости." \
--output-format jsonВажно понимать разницу между двумя флагами, не перепутайте их: --append-system-prompt — это «добавить в конец промпта по умолчанию», при этом Claude сохраняет свои навыки программиста и базовые правила безопасности, вы лишь добавляете дополнительные инструкции; а --system-prompt — это «полностью заменить» системный промпт — все знания об инструментах и ограничения безопасности исчезают, вы берете ответственность на себя. В 90% случаев вам нужен append (добавить), а не system-prompt (заменить); полная замена оправдана только тогда, когда личность «помощника-программиста» совершенно не подходит для вашей задачи.
--bare: Быстрый старт в скриптах
Существует флаг, созданный специально для скриптов — --bare (чистый режим). Официальная цитата:
Минимальный режим: пропускает обнаружение hooks, skills, plugins, серверов MCP, автоматической памяти и CLAUDE.md для более быстрого запуска в скриптах.
Проще говоря, обычный claude -p всё равно загружает весь контекст (ваши CLAUDE.md, установленные Skills, настроенные MCP); а --bare пропускает всё это, оставляя только базовые навыки (Bash, чтение и запись файлов). Он запускается быстрее и гарантирует одинаковый результат на любой машине (исключая влияние чьих-то локальных настроек в ~/.claude). Это крайне полезно для CI и скриптов. Официальная документация также утверждает, что в будущих версиях --bare станет поведением по умолчанию для -p, так что привыкать к нему стоит уже сейчас.
Разницу между интерактивным и headless-режимами лучше всего видно в сравнении:
| Особенность | Интерактивный режим (claude) | Headless-режим (claude -p) |
|---|---|---|
| Интерфейс чата | ✅ Есть, вы печатаете команды | ❌ Нет, выводит результат и закрывается |
| Присутствие пользователя | ✅ Вы следите за процессом | ❌ Работает автономно в скрипте |
Поддержка конвейеров (|) | ❌ Нет | ✅ Да, читает stdin, поддерживает перенаправление |
| Запросы разрешений | Останавливается и спрашивает вас | Нужно задать заранее через --allowedTools / --permission-mode |
| Типичные сценарии | Повседневная разработка в диалоге | CI, пакетная обработка, линтер, встраивание в скрипты |
💡 Краткий итог:
claude -pпревращает Claude в компонент командной строки для конвейеров —cat ... | claude -p ... > out.txtдля обработки,--output-format json | jqдля извлечения полей,--bareдля быстрого и чистого старта скриптов; при автономной работе обязательно настраивайте разрешения заранее.
05 Коды выхода (Exit Codes): Как скрипт понимает, успешен ли вызов
Этот раздел короткий, но те, кто пишет скрипты, не могут его проигнорировать.
Аналогия: оценка «сдал / не сдал» на экзамене. В командной строке каждое выполненное действие оставляет после себя «код выхода» — число, где 0 означает успех, а не 0 означает, что возникла проблема. Этот код предназначен не для вас, а для «вызывающего скрипта»: с его помощью скрипт понимает, «сработал ли этот шаг и нужно ли продолжать дальше».
В терминале вы можете проверить код выхода последней команды так:
claude auth status
echo $?Команда echo $? напечатает код выхода (в shell $? — это переменная, хранящая статус завершения предыдущей команды).
В официальной документации приведены конкретные коды выхода. Вот те, которые вам пригодятся:
| Команда / Ситуация | Код выхода | Что означает |
|---|---|---|
claude auth status (залогинен) | 0 | Авторизация активна |
claude auth status (не залогинен) | 1 | Авторизация отсутствует |
claude -p --max-turns N превышен лимит | Не 0 (ошибка) | Превышен лимит раундов, завершение с ошибкой |
| Данные из stdin превышают 10 МБ | Не 0 | Ввод слишком большой, завершение с ошибкой и сообщением |
claude daemon status (супервизор не работает) | 1 | Фоновый процесс управления сеансами не запущен |
Как это применять на практике? Например, в CI вы хотите «проверить, авторизован ли пользователь, и если нет, сразу провалить пайплайн», используя код выхода claude auth status:
# Если нет авторизации (код не 0), выводим ошибку и прекращаем работу
claude auth status || { echo "Не авторизован, остановка"; exit 1; }Оператор || означает «если команда слева завершилась с ошибкой (код не 0), выполнить команду справа». В ежедневных скриптах это бесценно — в начале скрипта прощупываем через claude auth status, и если токен протух, скрипт сразу останавливается и выдает алерт, а не падает на полпути, пытаясь выполнить полезную работу.
Достаточно запомнить простое правило:
0= успех, продолжаем работу; не0= проблема, нужно остановиться. Все команды Claude Code следуют этому правилу, опирайтесь на это число в своих скриптах.
💡 Краткий итог: Коды выхода — это «оценки для скриптов» —
0успех, не0проблема;claude auth statusвозвращает0или1в зависимости от статуса,--max-turnsи превышение лимита в 10 МБ возвращают ненулевые коды. Скрипт реагирует на них через$?или||.
06 Полная таблица флагов: Для справочного использования
В предыдущих разделах мы разобрали самые частые флаги, а здесь — полная сводная таблица из официальной документации, к которой вы всегда можете обратиться. Флагов много, заучивать их не нужно, просто сохраните эту таблицу.
Напоминание (из официальной документации):
claude --helpне выводит все флаги. Если флага нет в--help, это не значит, что он не работает — ориентируйтесь на официальный CLI Reference.
Я сгруппировал их по назначению для удобства поиска:
Запуск и управление сеансами
| Флаг | Сокр. | Описание |
|---|---|---|
--print | -p | Не входить в интерактивный режим, вывести результат и завершиться (база для headless) |
--continue | -c | Продолжить последний диалог в текущей директории |
--resume | -r | Восстановить сеанс по ID/имени, или показать меню выбора |
--name | -n | Задать имя сеансу для удобного восстановления через --resume <имя> |
--fork-session | — | Создать новый ID сеанса при восстановлении, не переиспользуя старый (вместе с -r/-c) |
--session-id | — | Задать конкретный ID сеанса (должен быть валидным UUID) |
Модели и Разрешения
| Флаг | Описание |
|---|---|
--model | Задать модель для текущего запуска (алиас sonnet/opus или полное имя), переопределяет настройки |
--fallback-model | Резервная модель на случай перегрузки/недоступности основной (работает только с -p и фоновыми сеансами) |
--permission-mode | Задать режим разрешений (default/acceptEdits/plan/auto/dontAsk/bypassPermissions) |
--allowedTools | Инструменты, выполнение которых разрешено без подтверждения |
--disallowedTools | Инструменты, которые запрещено использовать |
--dangerously-skip-permissions | Пропустить все запросы разрешений (эквивалентно --permission-mode bypassPermissions, использовать с осторожностью) |
Директории и Конфигурация
| Флаг | Описание |
|---|---|
--add-dir | Предоставить доступ к чтению/записи файлов в дополнительных директориях (конфигурации из них не загружаются) |
--settings | Задать настройки (путь к JSON или инлайн JSON), переопределяет настройки для сеанса |
--setting-sources | Какие источники настроек загружать (user/project/local) |
--mcp-config | Загрузить сервер MCP из JSON-файла или строки |
--bare | Минимальный режим: пропускает hooks/skills/plugins/MCP/память/CLAUDE.md для быстрого запуска скриптов |
Headless вывод и контроль (в основном для -p)
| Флаг | Описание |
|---|---|
--output-format | Формат вывода: text (по умолчанию) / json / stream-json |
--input-format | Формат ввода: text / stream-json |
--max-turns | Лимит раундов (если превышен — ошибка; по умолчанию без ограничений) |
--max-budget-usd | Остановка при достижении указанной суммы расходов API (в долларах) |
--verbose | Подробный вывод логов для каждого раунда |
--append-system-prompt | Добавить пользовательский текст в конец системного промпта |
--system-prompt | Полностью заменить системный промпт пользовательским текстом |
Разное
| Флаг | Сокр. | Описание |
|---|---|---|
--version | -v | Вывести номер версии |
--ide | — | Автоматически подключиться к IDE при старте, если доступна только одна IDE |
--debug | — | Включить режим отладки, можно фильтровать по категориям (например, "api,mcp") |
Эта таблица покрывает 99% ваших потребностей. Если вам нужны совсем редкие флаги (работа с фоновыми сеансами, командами агентов, удаленным управлением), обратитесь к официальной странице CLI Reference — это самый полный справочник. Моя задача — дать вам удобную шпаргалку.
💡 Краткий итог: Ищите нужный флаг по категориям (Запуск / Модели / Директории / Headless / Разное); помните, что
--helpпоказывает не всё, доверяйте официальному CLI Reference. В таблице есть самое необходимое, экзотика — в официальной документации.
07 Практика: Подключаем claude -p к конвейеру в терминале
Читать таблицы — одно, а сделать своими руками — другое. Давайте запустим headless-режим в терминале, не заходя в интерактивный интерфейс, и прочувствуем, каково это — использовать Claude как «утилиту командной строки». Мы используем минимальные примеры без привязки к сложным проектам.
Для этого требуется подключение к интернету и немного кредитов API (каждый вызов
-p— это реальный запрос). Если доступ к API заблокирован, используйте VPN.
Шаг 1: Самый простой вызов с флагом -p
В любой директории терминала введите (не в сессии claude):
claude -p "В одном предложении объясни главную разницу между git rebase и git merge"Ожидаемый результат: Терминал напечатает ответ и сразу вернет командную строку, интерфейс чата не откроется. Если вы увидели ответ и программу завершило = headless режим работает.
Шаг 2: Подключаем к конвейеру и передаем данные
Создаем небольшой файл с ошибкой и передаем его в Claude:
printf 'def add(a, b):\n return a - b\n' > buggy.py
cat buggy.py | claude -p "В этом коде есть ошибка, укажи ее в одном предложении"Ожидаемый результат: Claude прочитает код из конвейера и ответит примерно так: «Функция называется add, но на самом деле выполняет вычитание (a - b)». Тот факт, что он ответил на данные, поданные извне, означает, что конвейер работает — он не читал файл самостоятельно, данные вложила ему в рот команда cat.
Шаг 3: Получение структурированного вывода и использование jq
claude -p "В одном предложении опиши язык Python" --output-format jsonОжидаемый результат: Вместо чистого текста выведется массивный блок JSON, в котором есть поля result (текст ответа), session_id, total_cost_usd и т.д. Если у вас установлен jq, попробуйте извлечь только результат:
claude -p "В одном предложении опиши язык Python" --output-format json | jq -r '.result'Ожидаемый результат: В этот раз распечатается только чистый текст ответа, вся JSON-обертка будет удалена утилитой jq. Именно так скрипты извлекают нужную информацию (ответ или ID) без лишних метаданных.
Шаг 4: Использование кодов выхода для проверки статуса
claude auth status
echo $?Ожидаемый результат: Если вы авторизованы, echo $? напечатает 0; если нет — 1. Это число и есть сигнал для скрипта «продолжать или нет» — пример с claude auth status || ... в разделе 05 базируется на нем.
Выполнив эти 4 шага, вы вручную прошли весь процесс: «Разовый вызов → Передача через конвейер → JSON + jq → Коды выхода». Вся автоматизация с Claude Code, будь то скрипты, пайплайны CI или планировщики, строится из комбинации этих элементов.
💡 Краткий итог: Четыре шага к освоению headless — вызов
-pдля быстрого ответа, конвейерcat | claude -pдля передачи данных,--output-format json | jqдля извлечения нужных полей,auth status+$?для проверки статуса. Это фундамент для любой автоматизации.
08 Итоги
В этой статье мы подробно разобрали команду claude, которую вы вводите каждый день — мы перешли от банального «просто написать claude и нажать Enter» к глубокому пониманию команд, флагов, конвейеров и кодов выхода.
Кратко по ключевым темам:
| Ваша цель | Что использовать | Главная мысль |
|---|---|---|
| Понимать синтаксис | Команды (что делать) и Флаги (как делать) | update/mcp — команды, -p/--model — флаги |
| Запуск и продолжение | claude / -c / -r | -c продолжает последний, -r — конкретный по ID/имени |
| Запуск без интерактивного чата | -p (--print) | База для headless, основа всех скриптов и конвейеров |
| Изменение настроек на лету | --model / --permission-mode | Переопределяет настройки только на один запуск |
| Встраивание в скрипты | Конвейер + --output-format json + jq | cat ... | claude -p ... | jq создает автоматическую линию |
| Проверка успешности скрипта | Коды выхода | 0 = успех, не 0 = проблема. Обработка через $? или || |
| Поиск флага | Сводная таблица 06 / Документация | --help скрывает часть параметров, сверяйтесь с официальной таблицей |
Теперь вы должны уметь: Глядя на строку вида claude xxx --yyy, точно понимать, что из этого команда, а что флаг; знать, когда использовать -c, а когда -r для возобновления диалога; уметь применять -p в связке с конвейерами и jq для автоматизации задач в скриптах, опираясь на коды выхода для обработки ошибок; и понимать, что за исчерпывающим списком флагов нужно обращаться к официальной странице CLI Reference, а не к --help. Понимание CLI — это водораздел между восприятием Claude Code как «просто умного чата» и использованием его как «мощного строительного блока в рабочих процессах разработки».
Те, кто раньше только и делал, что печатал голое claude, изучив -p и пайплайны, смогут автоматизировать рутинные проверки кода — и почувствуют, как Claude пересел из кресла «штурмана-помощника» на конвейерную ленту сборочного цеха. Ради этого момента и была написана эта статья.
Следующая статья: 35 «Управление и режимы (Modes and Control)» — в этой статье я часто упоминал флаг --permission-mode, позволяющий выбирать между plan, acceptEdits, bypassPermissions, но я не объяснял подробно, чем конкретно отличается их поведение, как часто они задают вопросы и когда какой режим лучше включать. В следующей статье мы разберем эти режимы досконально, а заодно научимся переключать их прямо во время общения с помощью горячих клавиш. Подумайте сами: разница между тем, когда ИИ спрашивает разрешения перед изменением каждого файла, и тем, когда он молча переписывает проект и только потом показывает результат — огромна. Как найти баланс между скоростью работы и безопасностью, мы узнаем совсем скоро.