Флаг Codex CLI --ask-for-approval применяется для управления тем, когда Codex должен спрашивать разрешение пользователя перед выполнением команд. Его короткий аналог — -a. Это не просто переключатель «спрашивать или не спрашивать»: флаг задаёт модель поведения агента в терминале — от осторожного режима для непроверенных команд до полностью автоматического выполнения.
Правильный режим подтверждений — это баланс между безопасностью и скоростью. Чем самостоятельнее вы позволяете Codex действовать, тем внимательнее нужно относиться к рабочей директории, правам процесса и содержимому команд.
Флаг особенно полезен, когда Codex работает с файловой системой, запускает тесты, устанавливает зависимости или выполняет shell-команды. В одних проектах важно подтверждать потенциально опасные действия вручную, в других — не прерывать длинный автоматический сценарий из-за каждого безобидного шага. Ниже разберём синтаксис, доступные значения, практические сценарии, отличия от похожих параметров и типичные ошибки.
- Как использовать
- Когда применять
- Примеры использования
- Первый запуск в незнакомом репозитории
- Короткая форма флага
- Работа с локальными тестами
- Автоматический запуск после ошибки
- Автономный локальный рефакторинг
- Запуск в контейнере
- Автоматизация без интерактивного терминала
- Проверка доступных параметров
- Проверка короткого алиаса
- Безопасная подготовка перед автономным режимом
- Чем отличается от…
- --ask-for-approval и --sandbox
- --ask-for-approval и --full-auto
- --ask-for-approval и --dangerously-bypass-approvals-and-sandbox
- --ask-for-approval и настройки конфигурационного файла
- Типичные ошибки
- Ошибка: передан флаг без значения
- Ошибка: использовано неподдерживаемое значение
- Ошибка: ожидание, что never отключит все ограничения
- Ошибка: запуск в неправильном каталоге
- Ошибка: использование интерактивного режима в CI
- Краткая памятка
Как использовать
Флаг передаётся при запуске Codex CLI в формате --ask-for-approval <режим> или с коротким именем -a <режим>. Значение после флага обязательно: без него программа не поймёт, какую стратегию подтверждений нужно использовать.
Флаг отвечает именно за политику запроса разрешений, а не за то, какие команды Codex считает технически возможными. Даже в осторожном режиме команда может быть разрешена, а в автоматическом режиме она всё равно будет ограничена другими механизмами безопасности и настройками среды.
Наиболее распространённые значения — untrusted, on-failure, on-request и never. Их названия описывают не тип команды, а момент, когда Codex должен остановиться и обратиться к пользователю.
| Значение | Короткий смысл | Когда появляется запрос | Общий уровень автономности |
|---|---|---|---|
untrusted |
Спрашивать для непроверенных действий | Перед командами, которые требуют отдельного разрешения | Низкий |
on-failure |
Спрашивать после отказа или ошибки | Когда команда не выполнилась в обычном режиме | Средний |
on-request |
Разрешать модели запрашивать подтверждение | Когда Codex считает действие требующим согласования | Средне-высокий |
never |
Не задавать вопросы о подтверждении | Дополнительный запрос не показывается | Высокий |
В разных версиях Codex CLI набор допустимых значений и детали поведения могут немного меняться. Поэтому перед использованием в рабочем окружении полезно проверить локальную справку через codex --help. Это особенно важно в командах автоматизации, где ошибка в названии режима остановит весь процесс.
| Форма записи | Пример | Особенность |
|---|---|---|
| Полное имя | --ask-for-approval on-request |
Лучше читается в скриптах и документации |
| Короткое имя | -a on-request |
Удобно вводить вручную |
| Без значения | --ask-for-approval |
Обычно приводит к ошибке разбора аргументов |
| С неизвестным значением | --ask-for-approval always |
Зависит от версии, но чаще всего команда завершается с ошибкой |
Когда применять
Выбор режима зависит не только от личных предпочтений, но и от цены ошибки. Если Codex работает над учебным проектом в отдельной папке, можно позволить ему больше самостоятельности. Если же открыт репозиторий с важными данными, рабочими ключами или доступом к удалённым системам, подтверждения становятся дополнительным барьером.
Безопасность определяется не только флагом, но и контекстом запуска. Один и тот же режим может быть разумным в временной копии проекта и слишком рискованным в каталоге с рабочими конфигурациями.
Режим untrusted подходит для первого знакомства с Codex, незнакомого репозитория и ситуаций, когда вы хотите видеть потенциально опасные действия до их запуска. Это хороший выбор для диагностики: пользователь сохраняет контроль, а агент всё же может выполнять безопасную часть работы без постоянных остановок.
on-failure удобен, когда нормальные команды нужно запускать без лишних вопросов, но при возникновении отказа важно вмешательство человека. Например, тесты могут выполняться автоматически, а повторная попытка с расширенными правами должна быть явно подтверждена.
| Сценарий | Предпочтительный режим | Почему | Что проверить заранее |
|---|---|---|---|
| Знакомство с новым проектом | untrusted |
Меньше риск неожиданных изменений | Текущий каталог и состояние Git |
| Локальная разработка и тесты | on-request |
Codex сам запрашивает согласование для особых шагов | Какие команды меняют файлы или окружение |
| Длинный автономный рефакторинг | on-failure |
Обычный поток не прерывается без необходимости | Есть ли резервная копия и чистый Git-статус |
| Изолированный CI-подобный запуск | never |
Процесс не может ждать интерактивного ответа | Права контейнера, секреты и область изменений |
Режим never оправдан главным образом в контролируемой среде: контейнере, временной рабочей копии, тестовом стенде или заранее подготовленном автоматическом сценарии. Запускать его в домашнем каталоге или рядом с ценными файлами без дополнительных ограничений — плохая идея. Автоматизация не должна превращаться в лотерею с удалением нужной директории.
| Фактор | Низкий риск | Высокий риск |
|---|---|---|
| Расположение проекта | Временная копия или контейнер | Домашний каталог или рабочий сервер |
| Доступ к секретам | Секреты отсутствуют | Есть токены, ключи, файлы .env |
| Возможность отката | Git-коммит или резервная копия | Изменения нельзя быстро восстановить |
| Цена ошибки | Сломался локальный тестовый проект | Повреждены данные или опубликован секрет |
Примеры использования
Ниже приведены практические сценарии от самого осторожного до полностью автоматического. В каждом случае важно понимать не только саму команду, но и причину выбора конкретного режима.
Первый запуск в незнакомом репозитории
Если вы впервые открыли проект и пока не знаете его скрипты, зависимости и структуру, начните с осторожной политики untrusted.
codex --ask-for-approval untrusted
Такой запуск позволяет изучить предложения Codex и вручную контролировать действия, которые могут оказаться неожиданными для конкретного проекта.
Короткая форма флага
Короткий аналог -a удобен в интерактивной работе, когда команду приходится вводить много раз.
codex -a untrusted
В документации команды проекта лучше использовать полное имя: оно понятнее человеку, который не знаком с сокращениями Codex CLI.
Работа с локальными тестами
Для проекта, где Codex должен запускать тесты и при необходимости просить разрешение на нестандартные действия, можно выбрать on-request.
codex --ask-for-approval on-request
Это компромиссный вариант: обычные шаги не требуют постоянного ручного подтверждения, но модель может остановиться перед операцией, которую считает чувствительной.
Автоматический запуск после ошибки
Режим on-failure полезен для сценариев, где сначала нужно дать команде выполниться стандартным способом, а вмешательство пользователя требуется только после отказа.
codex -a on-failure
Перед этим убедитесь, что вы понимаете, какие повторные действия могут быть предложены после ошибки: например, запуск с другими параметрами или обращение к ресурсам, недоступным в обычном режиме.
Автономный локальный рефакторинг
Если проект сохранён в отдельной копии, а изменения легко откатить через Git, on-failure позволяет не прерывать длинную серию безопасных операций.
codex --ask-for-approval on-failure
Перед запуском полезно проверить состояние репозитория и убедиться, что в нём нет незакоммиченных изменений, которые нельзя потерять.
Запуск в контейнере
Изолированный контейнер — один из немногих случаев, когда уместен максимально автономный режим never.
codex --ask-for-approval never
Безопасность здесь обеспечивается не отсутствием опасных команд, а границами контейнера: ограниченной файловой системой, правами пользователя и отсутствием ненужных секретов.
Автоматизация без интерактивного терминала
Если процесс запускается в среде, где невозможно показать вопрос пользователю и получить ответ, интерактивная политика может привести к зависанию. В таком случае применяют never, но только после подготовки окружения.
codex -a never
Для CI или планировщика задач отдельно проверьте тайм-ауты, логирование и возможность отменить процесс.
Проверка доступных параметров
Перед использованием флага в конкретной установленной версии можно посмотреть локальную справку Codex CLI.
codex --help
Это помогает обнаружить изменения в названиях режимов, синтаксисе и расположении параметров.
Проверка короткого алиаса
Если вы сомневаетесь, поддерживает ли текущая версия сокращение -a, проверьте описание параметров в справке.
codex --help | grep ask-for-approval
Команда grep есть не во всех оболочках, поэтому в Windows может понадобиться просмотреть вывод вручную или использовать подходящий аналог поиска.
Безопасная подготовка перед автономным режимом
До включения never полезно создать контрольную точку в Git и убедиться, что Codex запущен именно в нужной папке.
git status
git add -A
git commit -m "checkpoint before Codex run"
codex --ask-for-approval never
Коммит не заменяет резервную копию, но существенно упрощает сравнение и откат изменений, если результат окажется не таким, как ожидалось.
| Цель | Команда | Ожидаемое поведение |
|---|---|---|
| Осторожное знакомство | codex -a untrusted |
Подтверждения для непроверенных действий |
| Баланс автономности | codex -a on-request |
Запрос по решению модели |
| Работа после отказов | codex -a on-failure |
Вмешательство при ошибочном сценарии |
| Неинтерактивный запуск | codex -a never |
Подтверждения не запрашиваются |
Чем отличается от…
Флаг --ask-for-approval часто путают с другими настройками запуска. Причина проста: все они так или иначе влияют на самостоятельность агента. Однако политика подтверждений, режим sandbox и разрешение на опасные действия — разные уровни управления.
--ask-for-approval и --sandbox
--ask-for-approval отвечает на вопрос «нужно ли спросить пользователя», а --sandbox — «какие границы доступа есть у процесса». Подтверждение не расширяет автоматически права файловой системы и не отменяет ограничения песочницы.
| Параметр | Что регулирует | Пример вопроса |
|---|---|---|
--ask-for-approval |
Момент запроса согласия | «Нужно ли спросить перед действием?» |
--sandbox |
Ограничения среды выполнения | «К каким файлам и ресурсам есть доступ?» |
--ask-for-approval и --full-auto
Режим с названием вроде --full-auto обычно объединяет несколько настроек для автономной работы. Флаг --ask-for-approval изменяет только стратегию подтверждений и потому даёт более точный контроль.
| Свойство | --ask-for-approval |
--full-auto |
|---|---|---|
| Основная задача | Настроить запросы разрешений | Включить широкий автономный сценарий |
| Гибкость | Можно выбрать конкретный режим | Часть настроек задаётся комплексно |
| Удобство диагностики | Легче понять причину поведения | Нужно учитывать несколько встроенных решений |
--ask-for-approval и --dangerously-bypass-approvals-and-sandbox
Если в версии Codex присутствует параметр с таким названием, он предназначен для обхода подтверждений и песочницы. Это принципиально более опасный механизм: он не просто выбирает момент вопроса, а отключает защитные барьеры.
| Характеристика | --ask-for-approval |
Опасный обход |
|---|---|---|
| Назначение | Настройка политики подтверждений | Принудительное отключение защит |
| Рекомендуемое применение | Повседневная работа с контролем | Только строго изолированные эксперименты |
| Цена ошибки | Зависит от выбранного режима | Может быть очень высокой |
--ask-for-approval и настройки конфигурационного файла
Командная строка задаёт политику для конкретного запуска, а конфигурационный файл может использоваться для постоянных значений. Когда они конфликтуют, обычно приоритет получает явно переданный аргумент командной строки, но точное правило нужно проверить в документации вашей версии.
| Способ настройки | Плюс | Минус | Когда выбрать |
|---|---|---|---|
| Флаг в команде | Видно прямо в журнале запуска | Нужно указывать каждый раз | Разовые и критичные операции |
| Конфигурационный файл | Удобно для постоянной политики | Настройку можно забыть | Стабильное локальное окружение |
| Скрипт-обёртка | Можно добавить проверки | Сложнее сопровождать | Командная автоматизация |
Типичные ошибки
Большинство проблем связано не с самим флагом, а с неверным пониманием его значения. Пользователь видит слово «approval» и ожидает универсальную защиту, хотя политика подтверждений — лишь один слой общей безопасности.
Ошибка: передан флаг без значения
Запись codex --ask-for-approval неполна: после флага необходимо указать режим. В зависимости от версии CLI программа покажет ошибку разбора или напоминание о допустимых значениях.
codex --ask-for-approval # Правильно: codex --ask-for-approval on-request
Ошибка: использовано неподдерживаемое значение
Не стоит придумывать значения вроде always, safe или yes, если их нет в локальной справке. Названия режимов должны точно соответствовать версии Codex CLI.
codex -a always # Сначала проверьте: codex --help
Ошибка: ожидание, что never отключит все ограничения
never означает отсутствие интерактивных запросов подтверждения. Он не обязан отключать песочницу, права операционной системы, сетевые ограничения или другие политики безопасности.
| Ожидание | Что происходит на самом деле |
|---|---|
| «Codex сможет сделать абсолютно всё» | Подтверждения не запрашиваются, но другие ограничения могут сохраниться |
| «Любая ошибка будет проигнорирована» | Технические ошибки и запреты среды никуда не исчезают |
| «Результат всегда будет безопасным» | Ответственность за окружение и последствия остаётся у пользователя |
Ошибка: запуск в неправильном каталоге
Даже самый осторожный режим не спасёт от невнимательности, если Codex запущен не в том репозитории. Перед автономной работой проверьте текущий путь и состояние Git.
pwd
git status
codex -a on-request
В Windows вместо pwd можно использовать команду cd без аргументов или соответствующий инструмент оболочки.
Ошибка: использование интерактивного режима в CI
Если процесс не умеет отвечать на вопросы, режим с подтверждениями может зависнуть или завершиться по тайм-ауту. Для автоматизации выбирают не просто never, а заранее изолированную и проверенную среду.
# Рискованный подход: codex -a on-request # Для подготовленного неинтерактивного окружения: codex -a never
Краткая памятка
Флаг --ask-for-approval помогает настроить степень участия человека в действиях Codex CLI. Полная форма лучше подходит для документации и скриптов, короткая -a — для быстрого ручного запуска.
| Если вам нужно… | Рассмотрите режим |
|---|---|
| Контролировать незнакомые и потенциально рискованные действия | untrusted |
| Разрешить обычную работу и вмешиваться после отказов | on-failure |
| Позволить Codex самому выбирать моменты для запроса | on-request |
| Запустить заранее подготовленный неинтерактивный процесс | never |
Перед запуском проверьте каталог, Git-статус, наличие секретов и возможность отката. Для новой версии CLI сверяйтесь с выводом codex --help, поскольку детали доступных режимов могут изменяться.
| Проверка | Зачем она нужна |
|---|---|
| Версия и справка Codex | Убедиться в поддержке флага и значений |
| Текущий каталог | Не изменить случайно другой проект |
| Состояние Git | Понимать, какие изменения уже были до запуска |
| Секреты и права | Снизить последствия ошибочной команды |
| Резервная копия или коммит | Быстро восстановить рабочее состояние |
Главное правило простое: чем выше автономность, тем лучше должна быть изоляция. Для повседневной разработки чаще всего разумны untrusted, on-failure или on-request, а never стоит оставлять для сценариев, где среда заранее ограничена и не требует интерактивного участия.

