Флаг Codex CLI —ask-for-approval (-a): как настроить подтверждение действий

Флаг Codex CLI --ask-for-approval применяется для управления тем, когда Codex должен спрашивать разрешение пользователя перед выполнением команд. Его короткий аналог — -a. Это не просто переключатель «спрашивать или не спрашивать»: флаг задаёт модель поведения агента в терминале — от осторожного режима для непроверенных команд до полностью автоматического выполнения.

Правильный режим подтверждений — это баланс между безопасностью и скоростью. Чем самостоятельнее вы позволяете Codex действовать, тем внимательнее нужно относиться к рабочей директории, правам процесса и содержимому команд.

Флаг особенно полезен, когда Codex работает с файловой системой, запускает тесты, устанавливает зависимости или выполняет shell-команды. В одних проектах важно подтверждать потенциально опасные действия вручную, в других — не прерывать длинный автоматический сценарий из-за каждого безобидного шага. Ниже разберём синтаксис, доступные значения, практические сценарии, отличия от похожих параметров и типичные ошибки.

Как использовать

Флаг передаётся при запуске 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 стоит оставлять для сценариев, где среда заранее ограничена и не требует интерактивного участия.

CIO-NAVIGATOR