Разрешения и sandbox: как безопасно запускать Codex

Coding agent ценен тем, что может действовать, но действие создаёт риск. В Codex этот риск ограничивают две разные настройки: sandbox задаёт техническую границу доступа, а…

Краткий ответ

Coding agent ценен тем, что может действовать, но действие создаёт риск. В Codex этот риск ограничивают две разные настройки: sandbox задаёт техническую границу доступа, а approval policy определяет, когда требуется подтверждение пользователя.

Coding agent ценен тем, что может действовать, но действие создаёт риск. В Codex этот риск ограничивают две разные настройки: sandbox задаёт техническую границу доступа, а approval policy определяет, когда требуется подтверждение пользователя. Нельзя считать подтверждение заменой изоляции или наоборот.

Две независимые границы

Sandbox отвечает на вопрос «что процесс вообще может прочитать, изменить или вызвать». Approval policy отвечает на вопрос «какие выходы за обычный рабочий сценарий нужно согласовать».

Типичные режимы sandbox:

Для version-controlled проекта официальная документация рекомендует начинать с ограниченной автоматической работы внутри workspace и подтверждать выход за её пределы. Для неизвестной папки или первичного аудита разумен read-only.

Выбирайте минимально достаточный доступ

Задача «объясни архитектуру» не требует записи. Исправление компонента требует workspace-write, но обычно не требует доступа ко всей домашней директории. Установка пакета или обращение к сети может потребовать отдельного разрешения в зависимости от конфигурации.

Перед расширением доступа проверьте:

1. какое конкретное действие заблокировано; 2. почему оно необходимо для критерия готовности; 3. можно ли достичь результата внутри текущей границы; 4. какие данные станут доступны после расширения; 5. можно ли разрешить одну команду вместо постоянного изменения режима.

Запрос «дайте полный доступ, чтобы не мешало» не объясняет необходимость и маскирует архитектурную проблему рабочего процесса.

Как оценивать запрос подтверждения

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

Безопасный запрос агента должен объяснять, какое действие требуется и почему без него нельзя продолжить. Если аргументы слишком широкие, попросите сузить команду.

Внешний контент как недоверенный ввод

Репозиторий, issue, веб-страница или вывод инструмента могут содержать инструкции, пытающиеся изменить поведение агента. Это prompt injection. Текст из внешнего источника следует воспринимать как данные для анализа, а не как новое разрешение.

Практические меры:

Безопасный сценарий для незнакомого репозитория

1. Открыть проект в read-only.
2. Проверить Git status, инструкции и команды сборки.
3. Попросить карту точек входа и внешних интеграций.
4. Не запускать найденные скрипты установки автоматически.
5. После проверки доверия разрешить запись только в workspace.
6. Подтверждать сеть или внешние действия по одному назначению.
7. Перед завершением просмотреть diff и результаты тестов.

Для критичной среды добавьте контейнер или отдельную тестовую учётную запись. Sandbox снижает риск, но не превращает недоверенный код в безопасный.

Упражнение: матрица доступа

Для четырёх задач — объяснение кода, исправление теста, обновление зависимости и production-миграция — запишите:

Если для всех задач получился одинаковый полный доступ, пересмотрите предположения: требования у этих сценариев различаются.

Частые вопросы

Можно ли отключить подтверждения, но оставить sandbox?

Да, approval policy и sandbox настраиваются отдельно. Режим без запросов не расширяет сам по себе файловые границы, однако заблокированное действие тогда не сможет попросить исключение и завершится ошибкой.

Делает ли workspace-write любой проект безопасным?

Нет. Код внутри workspace может быть ценным, а разрешённая команда может менять файлы, запускать процессы или использовать доступные данные. Нужны Git, проверка команд, минимальные секреты и осознанное доверие к репозиторию.

Когда допустим danger-full-access?

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

Что важно запомнить

https://yadro-code.ru/lessons/without-university/codex-agent-workflows/codex-agent-05