Суть урока
У Claude Code есть два уровня "режимов". Первый — как ты запускаешь Claude (интерактивно, одиночным запросом, через pipe). Второй — сколько контроля ты оставляешь себе во время работы (permission modes).
Ключевые концепции
Режимы запуска CLI: как вызвать Claude из командной строки
- Interactive mode (
claude) — REPL в терминале (терминал — программа для работы с командной строкой), диалог туда-сюда - Print mode (
claude -p "запрос") — один вопрос, один ответ, выход - Pipe mode (
cat file | claude -p "...") — данные на вход через Unix pipe - SDK mode — программный вызов из Python (Питон — язык программирования) / TypeScript (ТайпСкрипт — типизированный JavaScript) кода
Permission modes (сколько контроля)
- Manual (в настройках значение
default, дефолт — стандартное значение по умолчанию) — Claude спрашивает разрешения перед каждым изменением файла и командой - Accept Edits (
acceptEdits) — Claude редактирует файлы сам, но спрашивает перед shell-командами - Plan Mode (
plan) — Claude анализирует и предлагает план, ничего не меняет - Auto Mode (
auto) — работает без обычных вопросов, каждое действие проверяет отдельная модель-классификатор. С версии 2.1.283 это стартовый режим по умолчанию в терминале и VS Code - Don't Ask (
dontAsk) — выполняет только заранее одобренные действия, остальное отклоняет - Bypass Permissions (
bypassPermissions) — никаких проверок вообще (только в изолированных средах!) - Shift+Tab — горячая клавиша переключения между режимами
--allowedTools— whitelist конкретных инструментов
Теория
Часть 1: Режимы запуска CLI
Claude Code можно запустить четырьмя способами. Каждый подходит для разных ситуаций.
Interactive mode (по умолчанию)
Просто набери claude в терминале — откроется интерактивная сессия (REPL). Ты пишешь запрос, Claude отвечает, ты уточняешь, он дорабатывает. Диалог продолжается пока ты не выйдешь (Ctrl+D или /exit).
# Запустить интерактивную сессию
claude
# Запустить с начальным запросом (но остаёмся в диалоге)
claude "объясни структуру этого проекта"Print mode (одиночный запрос)
Флаг --print (или короткая форма -p) меняет поведение: Claude получает запрос, выполняет работу, выводит ответ в stdout и завершает процесс. Никакого диалога.
# Один вопрос — один ответ — выход
claude -p "Сгенерируй UUID v4 на Python"
# С выбором модели
claude -p "Объясни этот код" --model sonnetPipe mode (Unix-конвейер)
Claude Code полностью поддерживает stdin — можно передавать данные через pipe, как любому Unix-инструменту:
# Анализ лога
cat server.log | claude -p "Найди все ошибки ERROR, сгруппируй по типу"
# Code review через pipe
cat src/payment.py | claude -p "Найди security уязвимости"
# Генерация commit message из diff
git diff HEAD | claude -p "Напиши commit message в формате Conventional Commits"Ограничение: через pipe удобно передавать небольшие данные. Для больших файлов лучше указать путь в запросе.
SDK mode (программный вызов)
Для разработчиков — Agent SDK: библиотека для Python и TypeScript, которая запускает тот же агентный цикл, что и Claude Code. Названия пакетов и установка меняются, поэтому актуальную инструкцию смотри в Agent SDK Quickstart.
SDK даёт структурированный ответ, callback'и на tool-вызовы, стриминг токенов (токены — минимальные единицы текста для AI). Подробнее — в уроке Headless Mode и CI/CD и документации Anthropic.
Часть 2: Ключевые CLI-флаги
Перед тем как перейти к permission modes, вот самые важные флаги которые работают в любом режиме:
| Флаг | Что делает | Пример |
|---|---|---|
--model |
Выбрать модель (алиасы sonnet, opus, haiku, fable или полное имя) |
claude -p "..." --model sonnet |
--max-turns |
Ограничить итерации (только print mode) | claude -p "..." --max-turns 3 |
--output-format |
Формат вывода: text, json (JSON — джейсон — формат данных ключ-значение), stream-json |
claude -p "..." --output-format json |
--continue / -c |
Продолжить последний разговор | claude -c |
--resume / -r |
Возобновить конкретную сессию | claude -r "auth-refactor" |
--allowedTools |
Whitelist разрешённых инструментов | claude --allowedTools "Read,Edit" |
--disallowedTools |
Blacklist запрещённых инструментов | claude --disallowedTools "Bash" |
--permission-mode |
Начать в конкретном permission mode | claude --permission-mode plan |
--append-system-prompt |
Добавить инструкции к системному промпту (промпт — текстовый запрос к AI) | claude --append-system-prompt "Пиши на TypeScript" |
--max-budget-usd |
Лимит расходов в долларах (print mode) | claude -p "..." --max-budget-usd 5.00 |
--bare |
Быстрый старт без загрузки hooks (хуки — скрипты-реакции на события)/skills (скиллы — переиспользуемые инструкции)/MCP (эм-си-пи, Model Context Protocol — протокол контекста модели) | claude --bare -p "..." |
--mcp-config |
Подключить MCP-серверы из файла | claude --mcp-config ./mcp.json |
--bare режим — рекомендован для скриптов и CI/CD (си-ай/си-ди, Continuous Integration/Delivery — автоматическая сборка и доставка). Пропускает автозагрузку hooks, skills, субагентов, plugins, MCP серверов, auto memory и CLAUDE.md. Запуск быстрее, результат одинаковый на любой машине.
Часть 3: Permission Modes (режимы разрешений)
Как переключаться между режимами
- В терминале (CLI):
Shift+Tab— циклическое переключениеdefault→acceptEdits→plan. Режимautoвходит в круг, если он доступен;bypassPermissionsпоявляется только если включён отдельно (флаг--allow-dangerously-skip-permissions). Текущий режим виден в строке состояния под полем ввода. - В VS Code (Вэ-эС Код — популярный редактор кода от Microsoft): индикатор режима в панели промпта
- В приложении для компьютера: список режимов рядом с кнопкой отправки (
Cmd+Shift+M);Shift+Tabтам не работает - При запуске: флаг
--permission-mode plan(илиauto,acceptEdits,dontAsk,bypassPermissions; для режима Manual значениеdefaultили алиасmanual) - По умолчанию: настройка
defaultModeвsettings.json
Режим 1: Plan Mode
Что происходит: Claude анализирует задачу и создаёт подробный план. Не выполняет ничего. Ждёт твоего "да" или правок.
Пример вывода Plan Mode:
Контекст: нужно создать LinkedIn-пост Шаги: 1. Прочитать voice-samples.md для понимания тона 2. Создать файл linkedin-post.md в папке outputs/ 3. Написать пост 200-250 слов с хуком в первом предложении 4. Добавить 3-5 хэштегов Файлы которые будут созданы: outputs/linkedin-post.md Файлы которые будут прочитаны: context/voice-samples.md
После просмотра плана выбираешь: «Yes, and use auto mode» (выполнять в auto), «Yes, manually approve edits» (проверять каждую правку) или «No, keep planning» (продолжить планирование). Если auto недоступен, первый вариант называется «Yes, auto-accept edits».
Бонус Plan Mode: можно добавлять комментарии прямо в план. Например написать под пунктом 3 "сделай тон более разговорным" — Claude обновит план и выполнит с учётом правки.
Когда использовать:
- Сложная задача с несколькими шагами
- Первый раз делаешь что-то с незнакомым проектом
- Рискованные операции (миграция данных, большой рефакторинг, mass-edit файлов)
- Нужно объяснить клиенту что именно будет сделано
- Хочешь понять логику Claude до выполнения
Правило из практики: минута планирования экономит 10 минут переделки. Для любой задачи где что-то может пойти не так — сначала Plan Mode.
Режим 2: Manual (значение default, раньше Ask Before Edits)
Название: в интерфейсе Manual, значение в настройках default.
Что происходит: Claude автоматически читает файлы, но перед каждым изменением файла или выполнением shell-команды показывает что собирается сделать и спрашивает подтверждения.
# Запуск в режиме Manual (с версии 2.1.283 новые сессии в терминале стартуют не в нём, а в auto)
claude --permission-mode defaultКогда использовать:
- Работаешь в продакшн-проекте где ошибка дорого стоит
- Первый раз работаешь с чужим кодом или незнакомым проектом
- Хочешь видеть каждый шаг (учёба, аудит, проверка)
- Задача затрагивает критические файлы
- Чувствительная работа с секретами или конфигами
Когда это лишнее:
- Рутинная задача которую делал много раз
- Создание новых файлов с нуля (не редактирование существующих)
- Простые контентные задачи
Режим 3: Accept Edits (в VS Code: Edit automatically)
Официальное название: acceptEdits
Что происходит: Claude создаёт и редактирует файлы без вопросов. Также автоматически выполняет базовые файловые команды (mkdir, touch, mv, cp и подобные). Но более серьёзные shell-команды и сетевые запросы по-прежнему требуют подтверждения.
# Запуск в acceptEdits mode
claude --permission-mode acceptEditsЭто удобный рабочий режим, когда ты сам просматриваешь изменения. Одно нажатие Shift+Tab из Manual.
Когда использовать:
- Понятная задача с хорошо настроенным CLAUDE.md
- Задачи которые делал много раз
- Написание текстов, создание файлов
- Итерации: Claude уже сделал хорошую работу, просишь улучшить
Отличие от Bypass: Accept Edits всё ещё спрашивает перед shell-командами и сетевыми запросами. Bypass не спрашивает никогда.
Режим 4: Auto Mode (AI-контролируемый автопилот)
Официальное название: auto
Что происходит: Claude работает без твоих подтверждений, но каждое действие проверяется отдельной AI-моделью (классификатором безопасности). Если классификатор видит опасное действие — блокирует его автоматически. С версии 2.1.283 auto — стартовый режим по умолчанию в терминале и VS Code; если auto недоступен (модель, настройки организации), сессия стартует в Manual.
# Запуск в auto mode
claude --permission-mode autoТребования для auto mode:
- План: любой (на Team и Enterprise включён по умолчанию, администратор может его отключить). На Pro режим тоже доступен
- Модель: поддерживаемая свежая модель; список зависит от провайдера и меняется. Смотри документацию по режимам разрешений и страницу Актуальное сейчас
- Провайдер: Anthropic API (эй-пи-ай, Application Programming Interface — интерфейс программирования приложений), а также Amazon Bedrock, Google Cloud Agent Platform и Microsoft Foundry
Что классификатор блокирует по умолчанию:
- Скачивание и выполнение кода (
curl | bash, где bash — язык команд Unix-терминала) - Деплой (деплой — развёртывание, публикация в продакшен) в продакшн
- Массовое удаление файлов
- Force push и push в
main - Отправка данных на внешние серверы
Когда использовать:
- Длинные задачи где устал нажимать "Yes" каждые 10 секунд
- Доверяешь направлению работы но хочешь safety net
- Нужна скорость но не готов к полному Bypass
Режим 5: Don't Ask (только заранее одобренное)
Официальное название: dontAsk
Что происходит: Claude может выполнять ТОЛЬКО действия которые ты заранее одобрил в правилах (permissions.allow). Всё остальное автоматически отклоняется без вопросов. Полностью неинтерактивный.
# Запуск в dontAsk mode
claude --permission-mode dontAskКогда использовать:
- CI/CD пайплайны где нет человека
- Нужен строгий контроль что именно разрешено
- Заранее знаешь весь набор операций
Режим 6: Bypass Permissions
Официальное название: bypassPermissions
Что происходит: Claude получает полную автономию. Никаких подтверждений, никаких классификаторов, никаких пауз. Делает ВСЁ что считает нужным. Даже записи в защищённые пути (.git/ — папка git, системы контроля версий кода, .vscode/ и др.) проходят без вопросов.
Как включить:
# Через CLI
claude --permission-mode bypassPermissions
# Короткая форма (тот же эффект)
claude --dangerously-skip-permissionsВ VS Code: Settings → поиск "allow dangerously" → включить опцию. После этого Bypass появится в меню режимов.
Когда использовать:
- Изолированные контейнеры, VM, dev containers без доступа в интернет
- CI/CD пайплайны в sandbox-среде
- Уже проверил план в Plan Mode, хочешь выполнить без прерываний
Когда НЕ использовать:
- На своей основной машине
- С незнакомым кодом
- В продакшн-среде
Схема Plan → выполнение (рекомендуемая):
1. Получил сложную задачу
2. Запустил в Plan Mode → изучил план → добавил правки
3. Одобрил план → Claude предлагает:
- Yes, and use auto mode
- Yes, manually approve edits
- No, keep planning
4. Выбрал подходящий уровень → выполнениеПредупреждение: Bypass не защищает от prompt injection и непреднамеренных действий. Если нужна автономность С безопасностью — используй Auto Mode.
allowedTools: whitelist инструментов
Флаг --allowedTools позволяет точечно разрешить конкретные инструменты в рамках одного запуска, не открывая полный Bypass.
Использование в CLI:
claude --allowedTools "Read,Write,Bash(git commit*)" "сделай коммит всех изменений"Что это даёт:
- Тонкий контроль: разрешить только чтение файлов но не запись
- Разрешить только git-операции но не системные команды
- Позволить web-fetch но не редактирование файлов
Практический пример — ночная рутина:
claude --allowedTools "Read,Bash(curl*)" --print \
"запусти проверку здоровья API и сохрани отчёт"Сравнительная таблица permission modes
| Режим | CLI-название | Что без вопросов | Контроль | Лучший сценарий |
|---|---|---|---|---|
| Plan Mode | plan |
Только чтение | Максимальный | Сложные/рискованные задачи |
| Manual | default |
Только чтение | Высокий | Обучение, продакшн, аудит |
| Accept Edits | acceptEdits |
Чтение + редактирование + базовые команды | Средний | Ежедневная работа |
| Auto Mode | auto |
Всё, но с AI-проверкой | Низкий (AI safety net) | Длинные задачи |
| Don't Ask | dontAsk |
Только заранее одобренное | Жёсткий | CI/CD с контролем |
| Bypass | bypassPermissions |
Абсолютно всё | Нулевой | Только контейнеры/VM |
Типичные сценарии переключения
Сценарий 1: Первое знакомство с задачей
Plan Mode → изучи план → одобри → Accept Edits или Auto ModeСценарий 2: Простая задача с чистым проектом
Accept Edits (acceptEdits) → достаточноСценарий 3: Рискованная операция в продакшн
Plan Mode → изучи план → добавь правки → Manual для выполненияСценарий 4: CI/CD пайплайн
# Вариант А — строгий контроль:
claude -p "..." --permission-mode dontAsk --allowedTools "Read,Bash(git *)"
# Вариант Б — полная автономия в контейнере:
claude -p "..." --dangerously-skip-permissions --max-turns 5Сценарий 5: Длинная задача с множеством файлов
Plan Mode → убедись что список файлов правильный → Auto ModeСценарий 6: Продолжение вчерашней работы
# Продолжить последний разговор
claude --continue
# Возобновить конкретную сессию по имени
claude --resume "auth-refactor"Режимы как управление риском
Режимы — это не удобство, это управление риском. Правило простое:
Чем выше ставки задачи — тем больше контроля.
Исправить опечатку в тексте? Accept edits. Удалить папку с данными клиента? Plan Mode + Manual + три раза перечитай план.
Ставки задачи определяются двумя вопросами:
- Насколько необратимо если что-то пойдёт не так?
- Насколько дорого исправлять ошибку?
Практика
Задание: прокатиться по всем режимам на одной задаче
Возьми одну задачу: "Создай файл outputs/test-post.md с коротким постом о пользе AI для малого бизнеса, 100-150 слов."
- Plan Mode: запусти задачу, изучи план. Добавь комментарий "сделай тон более разговорным". Одобри обновлённый план
- Accept edits: попроси Claude "добавь в конец поста три хэштега" — посмотри как он делает это без вопросов
- Manual: попроси "измени заголовок поста" — посмотри как Claude показывает diff и спрашивает разрешения
- Включи Bypass Permissions в настройках, попроси "создай копию файла с названием test-post-v2.md" — посмотри как он делает без пауз
- Запусти
/context— посмотри сколько токенов ушло на всё это
Цель: прочувствовать разницу между режимами на практике, не теоретически. После этого переключение будет рефлексом.
Инструменты и ресурсы
Shift+Tab— горячая клавиша переключения permission mode--permission-mode— CLI-флаг для выбора режима при запуске--allowedTools— whitelist инструментов (поддерживает wildcard:"Bash(git *)")--disallowedTools— blacklist инструментов-p/--print— запуск без интерактива (print mode)-c/--continue— продолжить последний разговор-r/--resume— возобновить конкретную сессию--model— выбор модели (sonnet,opus,haiku,fableили полное имя)--bare— быстрый старт без загрузки контекста (для скриптов)--max-turns— ограничение итераций в print mode--max-budget-usd— лимит расходов в долларах- Документация: CLI reference и режимы разрешений
Ключевые выводы
4 способа запуска: Interactive (диалог), Print
-p(один запрос), Pipe (данные на вход), SDK (из кода). Для автоматизации — print + pipe. Для работы руками — interactive.
6 permission modes: от максимального контроля (Plan/Default) до нулевого (Bypass). Auto Mode — золотая середина: автономность с AI safety net. Accept Edits — рабочая лошадка на каждый день.
Plan Mode — страховка которая ничего не стоит. Минута на план экономит час на исправление. После одобрения плана Claude сам предлагает в каком режиме выполнять.
Bypass — только для контейнеров. Если нужна автономность на реальной машине — используй Auto Mode. Bypass не защищает ни от чего.
--bareдля скриптов. Когда Claude запускается из скрипта или CI — добавь--bareчтобы он не загружал лишний контекст. Быстрее и предсказуемее.
Следующий урок
→ Токены и управление контекстом — токены, окно контекста и экономика запросов
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс