Skip to content

Справочное руководство по 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 — это галочки в бланке отправки, уточняющие детали (Ускоренная доставка? С объявленной ценностью? Какой службой доставки?). Действие выбирается одно, а галочек может быть много.

На практике:

bash
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% времени:

bash
# 1. Обычный запуск, вход в интерактивный режим
claude

# 2. Запуск с начальным промптом (сразу отвечает на эту фразу после входа)
claude "Объясни этот проект"

# 3. Запуск без входа в интерактивный режим (headless / режим печати)
claude -p "Объясни эту функцию"

Первые два варианта вам уже знакомы. Третий вариант, claude -p, — это «другой образ жизни» Claude Code, на котором мы сделаем акцент в этой статье. Он не открывает интерфейс чата, а просто печатает ответ в терминал и завершает работу. Он создан специально для скриптов и конвейеров. Подробнее — в разделе 04.

Группа 2: Продолжение разговора (чтобы он не терял память)

Помните, мы говорили в 19-й статье, что каждый новый сеанс для Claude — как «стажер с потерей памяти», он забывает всё, о чем вы только что говорили. Эти две команды лечат амнезию:

bash
# Продолжить последний разговор в «текущей директории»
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 невозможно. Полный процесс выглядит так:

bash
# Даем понятное имя при старте
claude -n "login-refactor"

# Через несколько дней возвращаемся к этой конкретной задаче
claude -r "login-refactor"

Официальное описание --name весьма прямолинейно — заданное имя будет отображаться в списке /resume и в заголовке терминала, после чего вы сможете восстановить сеанс через claude --resume <имя>. Когда у вас 3-4 параллельные задачи, ориентироваться по именам в сотни раз проще, чем по длинным UUID вроде 550e8400-....

Еще одна полезная комбинация: -c и -p можно использовать вместе. claude -c -p "проверь, есть ли ошибки типов" означает «продолжить последний диалог, но в этот раз в headless-режиме: выведи результат и закройся» — он будет помнить контекст прошлого разговора, но не войдет в интерактивный режим. Эта комбинация незаменима в скриптах, когда нужно «разбить задачу на несколько шагов и выполнять их автоматически друг за другом» (пример из раздела 04 построен именно на этом).

Группа 3: Обслуживание и аккаунт

Эту группу вы будете вводить нечасто, но о ней нужно знать:

bash
# Обновиться до последней версии
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 не будет открывать интерфейс чата — он прочитает ваш промпт, сделает работу, выведет результат и закроется без участия человека.

bash
claude -p "За что отвечает модуль auth в этом проекте"

Это переключатель headless (автономного) режима, и он служит фундаментом для всех скриптов и конвейеров. В разделе 04 мы поговорим о нем подробнее.

--model: Какую модель использовать сейчас

Указывает, какую модель использовать в текущем сеансе, переопределяя модель по умолчанию из настроек:

bash
claude --model sonnet
claude --model opus
claude --model claude-sonnet-4-6   # можно указать полное имя

Можно использовать алиасы (sonnet, opus указывают на последние версии) или полные названия моделей. О том, как выбирать модели, мы говорили в 5-й статье, здесь нас интересует только «как временно сменить модель через командную строку».

--permission-mode: С каким режимом разрешений запускать

Определяет, «будет ли Claude спрашивать разрешения перед действиями в этом сеансе». Помните «поводья разрешений» из статьи 20? Этот флаг позволяет натянуть или ослабить их прямо при старте:

bash
claude --permission-mode plan

Официально поддерживаются следующие значения:

Принимает значения default, acceptEdits, plan, auto, dontAsk или bypassPermissions. Переопределяет defaultMode из файла настроек.

Кратко: plan (только планирует, не действует), acceptEdits (автоматически одобряет редактирование файлов), bypassPermissions (пропускает все проверки, использовать с осторожностью) — эти используются чаще всего. О том, какой у них характер и когда их использовать, мы подробно поговорим в следующей статье (статья 35), а здесь вам достаточно знать, что этот флаг позволяет сразу задать нужный режим.

--dangerously-skip-permissions: Флаг со словом "dangerous" (опасно)

Этот флаг стоит выделить отдельно, потому что новички часто о нем спрашивают и часто используют неправильно. Его задача — пропустить все запросы на разрешения. В официальной документации прямо сказано, что он эквивалентен --permission-mode bypassPermissions:

bash
claude --dangerously-skip-permissions

С этим флагом Claude больше не будет останавливаться и спрашивать вас перед редактированием файлов или запуском команд — он будет просто делать всё сам. Само слово dangerously в названии — это предупреждение от Anthropic, что нужно быть осторожным. В 20-й и 21-й статьях мы много говорили о «поводьях разрешений» — этот переключатель равносилен тому, чтобы полностью отпустить поводья.

Здесь нужно обозначить красную линию: используйте его только в изолированных средах, где «если что-то сломается, ничего страшного» — например, в одноразовых контейнерах, тестовых репозиториях или во временных песочницах CI. В реальных проектах, особенно там, где есть доступ к продакшн-данным, даже не прикасайтесь к нему. Если в headless-скриптах вам мешают запросы разрешений, лучше используйте --allowedTools для точечного разрешения конкретных инструментов или --permission-mode acceptEdits, чтобы разрешить только «изменение файлов» — это в разы безопаснее, чем отключать всё разом.

--add-dir: Дать доступ к дополнительным директориям

По умолчанию Claude может читать и изменять файлы только в той директории, из которой он запущен. Флаг --add-dir дает ему доступ к дополнительным папкам:

bash
claude --add-dir ../apps ../lib

Типичный сценарий: ваш проект и зависимая библиотека лежат в разных папках, и вы хотите, чтобы Claude мог работать в обеих. Но обратите внимание на важное предупреждение из документации:

Предоставляет доступ к файлам; большинство настроек .claude/ из этих директорий не будут автоматически обнаружены.

То есть: --add-dir дает только права на чтение и запись файлов, он не загружает конфигурации вроде CLAUDE.md или Skills из этих папок. Не ждите, что добавление директории автоматически подтянет её настройки.

--output-format: Формат вывода результатов

Имеет смысл только в режиме -p, определяет, как будет выглядеть вывод:

bash
claude -p "Сделай саммари проекта" --output-format json

Три опции: text (по умолчанию, обычный текст), json (структурированные данные с ID сеанса, стоимостью и метаданными), stream-json (по одному JSON-событию на строку для стриминга). Если в скрипте вам нужно узнать, «сколько денег ушло» или «какой у сеанса ID», используйте json — в разделе 04 мы покажем, как извлекать эти данные с помощью jq.

--allowedTools / --disallowedTools: Белые и черные списки инструментов

Позволяют заранее разрешить (или запретить) определенные инструменты, чтобы headless-запуск не застрял на запросе разрешения (если скрипт работает без присмотра, любой запрос приведет к его зависанию):

bash
claude -p "Запусти тесты и исправь ошибки" --allowedTools "Bash,Read,Edit"

Инструменты, указанные в --allowedTools, разрешаются без запросов; --disallowedTools работает наоборот. Здесь используется синтаксис правил (см. статью 20), например "Bash(git diff *)" разрешит только команды, начинающиеся с git diff.

Обратите внимание на разницу с --tools--tools полностью удаляет инструмент из контекста модели (он не сможет им воспользоваться вообще), а --allowedTools лишь убирает запрос на разрешение, сам инструмент остается доступным.

Несколько «предохранителей» специально для headless-режима

Эти флаги работают только в режиме -p, но они невероятно полезны для предотвращения выхода скриптов из-под контроля:

bash
# Ограничить максимальное количество раундов, при превышении выйдет с ошибкой (по умолчанию безлимитно)
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), поэтому вы можете работать с ним как с любой утилитой командной строки, используя оператор | для передачи данных:

bash
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 и просим найти опечатки:

json
{
  "scripts": {
    "lint:claude": "git diff main | claude -p \"ты линтер опечаток. для каждой опечатки в этом diff укажи имя_файла:строка на одной строке и суть ошибки на следующей. больше ничего не выводи.\""
  }
}

Теперь достаточно запустить npm run lint:claude. Преимущество подачи diff через конвейер: Claude не нужны разрешения на запуск Bash для самостоятельного чтения diff, вы просто подаете ему уже готовый материал.

Использование jq для обработки структурированного вывода

Если в скрипте вам нужен только текст ответа или ID сеанса, используйте --output-format json вместе с jq (инструментом командной строки для обработки JSON):

bash
# Получить только текст ответа
claude -p "Сделай саммари проекта" --output-format json | jq -r '.result'

Формат json возвращает объект с метаданными — сам текст находится в поле .result, ID сеанса — в .session_id, а также есть total_cost_usd с затраченной суммой. Если вам нужно связать несколько диалогов в скрипте, вы извлекаете session_id и используете --resume:

bash
session_id=$(claude -p "Начни ревью" --output-format json | jq -r '.session_id')
claude -p "Продолжай ревью" --resume "$session_id"

Выдача «временной роли» для пакетного скрипта

При пакетной обработке часто нужно, чтобы Claude принял на себя определенную роль — например, «ты инженер по безопасности, ищешь уязвимости». Флаг --append-system-prompt добавляет эту инструкцию в конец системного промпта по умолчанию. В этом официальном примере diff из PR передается для ревью безопасности:

bash
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 означает, что возникла проблема. Этот код предназначен не для вас, а для «вызывающего скрипта»: с его помощью скрипт понимает, «сработал ли этот шаг и нужно ли продолжать дальше».

В терминале вы можете проверить код выхода последней команды так:

bash
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:

bash
# Если нет авторизации (код не 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):

bash
claude -p "В одном предложении объясни главную разницу между git rebase и git merge"

Ожидаемый результат: Терминал напечатает ответ и сразу вернет командную строку, интерфейс чата не откроется. Если вы увидели ответ и программу завершило = headless режим работает.

Шаг 2: Подключаем к конвейеру и передаем данные

Создаем небольшой файл с ошибкой и передаем его в Claude:

bash
printf 'def add(a, b):\n    return a - b\n' > buggy.py
cat buggy.py | claude -p "В этом коде есть ошибка, укажи ее в одном предложении"

Ожидаемый результат: Claude прочитает код из конвейера и ответит примерно так: «Функция называется add, но на самом деле выполняет вычитание (a - b)». Тот факт, что он ответил на данные, поданные извне, означает, что конвейер работает — он не читал файл самостоятельно, данные вложила ему в рот команда cat.

Шаг 3: Получение структурированного вывода и использование jq

bash
claude -p "В одном предложении опиши язык Python" --output-format json

Ожидаемый результат: Вместо чистого текста выведется массивный блок JSON, в котором есть поля result (текст ответа), session_id, total_cost_usd и т.д. Если у вас установлен jq, попробуйте извлечь только результат:

bash
claude -p "В одном предложении опиши язык Python" --output-format json | jq -r '.result'

Ожидаемый результат: В этот раз распечатается только чистый текст ответа, вся JSON-обертка будет удалена утилитой jq. Именно так скрипты извлекают нужную информацию (ответ или ID) без лишних метаданных.

Шаг 4: Использование кодов выхода для проверки статуса

bash
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 + jqcat ... | 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, но я не объяснял подробно, чем конкретно отличается их поведение, как часто они задают вопросы и когда какой режим лучше включать. В следующей статье мы разберем эти режимы досконально, а заодно научимся переключать их прямо во время общения с помощью горячих клавиш. Подумайте сами: разница между тем, когда ИИ спрашивает разрешения перед изменением каждого файла, и тем, когда он молча переписывает проект и только потом показывает результат — огромна. Как найти баланс между скоростью работы и безопасностью, мы узнаем совсем скоро.


Рекомендуем к прочтению