Флаг Codex CLI --sandbox применяется для ограничения возможностей среды, в которой агент выполняет команды и работает с файлами. С его помощью можно запустить Codex в режиме только чтения, разрешить изменения внутри рабочей папки или полностью снять ограничения песочницы. Короткий аналог этого параметра — -s.
Песочница определяет границы действий агента: что он может прочитать, какие файлы изменить и насколько свободно взаимодействовать с системой.
Это не просто техническая настройка «для продвинутых пользователей». От выбранного режима зависит безопасность проекта, удобство автоматизации и количество запросов на подтверждение. Если выбрать слишком строгий режим, Codex не сможет выполнить полезную задачу. Если сразу использовать максимально широкие права, можно случайно разрешить изменения, которых вы не ожидали. Поэтому важно понимать, чем отличаются режимы read-only, workspace-write и danger-full-access, а также как --sandbox связан с подтверждениями команд.
- Как использовать флаг --sandbox
- Режим read-only
- Режим workspace-write
- Режим danger-full-access
- Когда применять разные режимы
- Примеры использования
- Анализ нового проекта без изменений
- Поиск потенциальных ошибок
- Исправление исходного файла
- Добавление нового теста
- Подготовка миграции базы данных
- Обновление документации
- Рефакторинг в отдельной ветке
- Работа с инструментом за пределами проекта
- Проверка команды перед выполнением
- Генерация отчёта о diff
- Чем отличается --sandbox от похожих команд и параметров
- --sandbox и --ask-for-approval
- --sandbox и --full-auto
- --sandbox и --cd
- --sandbox и Git
- Типичные ошибки
- Ошибка: перепутать режим с флагом без значения
- Ошибка: выбрать danger-full-access для обычного редактирования
- Ошибка: ожидать, что read-only сам внесёт исправления
- Ошибка: считать песочницу заменой резервной копии
- Краткая памятка
Как использовать флаг --sandbox
В базовом виде параметр передаётся при запуске Codex CLI после имени команды. Например, режим только чтения задаётся так:
codex --sandbox read-only
Для короткой формы используется тот же режим, но вместо полного имени указывается ключ -s:
codex -s read-only
Флаг принимает значение режима. Сам по себе он не является переключателем вида «включить или выключить песочницу»: необходимо указать, насколько строгими должны быть ограничения.
| Полная форма | Короткая форма | Назначение |
|---|---|---|
--sandbox read-only |
-s read-only |
Только чтение файлов и анализ проекта |
--sandbox workspace-write |
-s workspace-write |
Изменение файлов в разрешённой рабочей области |
--sandbox danger-full-access |
-s danger-full-access |
Запуск с максимально широким доступом |
В большинстве сценариев разработки разумной отправной точкой считается workspace-write. Он позволяет агенту редактировать проект, но не даёт ему без необходимости полный доступ ко всей системе. Если задача требует только объяснения кода, поиска ошибок или аудита, лучше начать с read-only.
Чем шире права, тем меньше препятствий для автоматизации — и тем выше цена случайной ошибки.
Режим можно указывать вместе с другими параметрами запуска. Например, можно одновременно выбрать песочницу и попросить Codex начать работу с конкретной задачей:
codex --sandbox workspace-write "Добавь тесты для модуля авторизации"
| Задача | Рекомендуемый режим | Почему |
|---|---|---|
| Прочитать незнакомый проект | read-only |
Изменения не требуются |
| Исправить ошибку в коде | workspace-write |
Нужно редактировать файлы проекта |
| Обновить зависимости | workspace-write или более широкий режим |
Зависит от ограничений среды и менеджера пакетов |
| Работать с системными файлами | danger-full-access |
Требуется доступ за пределами рабочей папки |
Режим read-only
После этого подзаголовка важно отдельно разобрать самый безопасный режим, поскольку именно его часто выбирают для первого знакомства с проектом. В режиме read-only Codex может анализировать доступные материалы, но не должен вносить изменения в файлы.
Он подходит для code review, объяснения архитектуры, поиска потенциальных ошибок, составления плана миграции и диагностики. Такой режим особенно удобен перед началом незнакомой работы: сначала можно попросить агента изучить проект, а уже затем перезапустить его с правом записи.
codex --sandbox read-only "Проанализируй структуру проекта и назови основные риски"
| Что обычно разрешено | Что обычно недоступно |
|---|---|
| Чтение исходного кода | Сохранение изменений в проекте |
| Поиск файлов и зависимостей | Автоматическое исправление файлов |
| Подготовка рекомендаций | Создание или удаление артефактов |
| Анализ конфигурации | Изменение конфигурации |
Режим workspace-write
Это практический рабочий режим для большинства задач разработки. Он разрешает записывать изменения в рабочую область, поэтому Codex может создавать файлы, редактировать исходный код, обновлять тесты и формировать отчёты внутри проекта.
При этом действие режима зависит от того, какая директория считается рабочей и какие дополнительные ограничения применяются конкретной конфигурацией CLI. Не следует воспринимать название как обещание, что абсолютно любой путь на компьютере станет доступен для записи.
codex --sandbox workspace-write "Исправь ошибку в обработчике платежей и добавь регрессионный тест"
| Тип работы | Подходит ли workspace-write |
Комментарий |
|---|---|---|
| Редактирование исходников | Да | Основной сценарий режима |
| Создание тестов | Да | Тестовые файлы создаются в проекте |
| Изменение файлов за пределами проекта | Не всегда | Может потребоваться другой режим |
| Опасные системные операции | Не следует считать разрешёнными | Нужна отдельная оценка риска |
Режим danger-full-access
Название намеренно звучит тревожно: это сигнал, что ограничения песочницы существенно ослаблены или сняты. Такой режим может быть необходим для специальных сценариев, но использовать его «на всякий случай» не стоит.
Он оправдан, когда задача действительно выходит за пределы проекта: например, требуется работа с системным инструментом, глобальной конфигурацией или каталогом, который не относится к текущей рабочей области. Перед запуском стоит проверить команду, текущую директорию и содержимое переменных окружения.
codex --sandbox danger-full-access "Настрой системный инструмент согласно инструкции проекта"
| Преимущество | Цена | Как снизить риск |
|---|---|---|
| Меньше ограничений | Выше вероятность нежелательного изменения | Запускать только для конкретной задачи |
| Доступ к внешним путям | Можно затронуть чужие данные | Проверить рабочую директорию |
| Удобство системной настройки | Ошибочная команда может иметь широкий эффект | Использовать резервные копии и контроль изменений |
Когда применять разные режимы
Выбор значения --sandbox лучше связывать не с уровнем доверия к Codex как таковому, а с конкретной задачей. Даже надёжный инструмент может неверно понять контекст, выбрать не тот файл или предложить слишком широкое изменение.
Безопасный режим — это не тот, который запрещает всё, а тот, который даёт ровно необходимые права.
Для последовательной работы удобно использовать ступенчатый подход:
- Начать с
read-onlyи попросить Codex изучить проект. - Проверить план изменений и уточнить спорные места.
- Перезапустить с
workspace-write, если нужны правки внутри проекта. - Переходить к
danger-full-accessтолько при явной необходимости.
| Ситуация | Первый выбор | Следующий шаг |
|---|---|---|
| Нужно понять чужой код | read-only |
Перейти к записи только после согласования плана |
| Нужно исправить локальную ошибку | workspace-write |
Проверить diff и тесты |
| Нужно изменить системную настройку | Сначала read-only |
Использовать широкий доступ точечно |
| Нужно запустить опасную миграцию | Подготовить план без записи | Выполнять после резервного копирования |
Для командной работы важно учитывать и содержимое репозитория. В проекте могут находиться секреты, локальные настройки, файлы с персональными данными и скрипты, меняющие инфраструктуру. Чем ценнее данные, тем сильнее должна быть привычка начинать с анализа без записи.
| Тип проекта | Осторожность | Практическая рекомендация |
|---|---|---|
| Учебный репозиторий | Средняя | Можно использовать workspace-write с проверкой diff |
| Коммерческий сервис | Высокая | Начинать с анализа и работать в отдельной ветке |
| Проект с инфраструктурой | Очень высокая | Не давать широкий доступ без плана и резервной копии |
| Каталог с персональными данными | Максимальная | Ограничить область работы и исключить лишние файлы |
Примеры использования
Ниже собраны практические сценарии, в которых значение --sandbox меняется в зависимости от цели. Каждый пример показывает не только синтаксис запуска, но и разумный контекст применения.
Анализ нового проекта без изменений
Если вы впервые открыли репозиторий и хотите получить обзор архитектуры, начинать с записи не нужно. Режим чтения не позволит случайно изменить файл во время исследования.
codex -s read-only "Опиши структуру проекта, точки входа и основные зависимости"
Поиск потенциальных ошибок
Для аудита можно попросить Codex проверить обработку исключений, работу с вводом пользователя или подозрительные места в запросах. Сначала полезно получить список проблем, а не сразу поручать их исправление.
codex --sandbox read-only "Найди потенциальные уязвимости и объясни, как их проверить"
Исправление исходного файла
Когда проблема понятна и требуется изменить код внутри рабочей области, подходит workspace-write. После выполнения обязательно проверьте список изменённых файлов.
codex -s workspace-write "Исправь обработку пустого ответа API и обнови связанные тесты"
Добавление нового теста
Создание тестов — типичный случай, когда агенту нужно право записи, но полный системный доступ не нужен.
codex --sandbox workspace-write "Добавь тесты для граничных значений функции calculateTotal"
Подготовка миграции базы данных
Сначала можно поручить подготовить миграционный файл и проверить его содержимое. Это снижает риск немедленного запуска изменения в базе.
codex -s workspace-write "Создай миграцию для добавления индекса, но не запускай её"
| Этап | Режим | Что проверяется |
|---|---|---|
| Проектирование миграции | read-only |
Схема и существующие ограничения |
| Создание файла миграции | workspace-write |
SQL и обратимость изменений |
| Запуск миграции | Отдельное подтверждение | Окружение, резервная копия и цель подключения |
Обновление документации
Документация обычно не требует широких прав. Codex может изучить код, а затем изменить README или отдельные файлы документации в рамках проекта.
codex --sandbox workspace-write "Обнови README: добавь актуальные команды установки и запуска"
Рефакторинг в отдельной ветке
Безопаснее выполнять заметные изменения не в основной ветке, а в отдельной. Сам параметр --sandbox не заменяет контроль версий, но хорошо сочетается с такой практикой.
git switch -c refactor-parser codex -s workspace-write "Выполни рефакторинг парсера без изменения публичного API"
Работа с инструментом за пределами проекта
Иногда задача связана с каталогом или инструментом, который не входит в текущую рабочую область. В такой ситуации сначала нужно убедиться, что расширение доступа действительно необходимо.
codex --sandbox danger-full-access "Проверь конфигурацию внешнего инструмента и предложи безопасное исправление"
Проверка команды перед выполнением
Если вы сомневаетесь в последствиях команды, попросите Codex сначала объяснить её действие в режиме чтения. Такой подход полезен для скриптов очистки, миграций и автоматизации развёртывания.
codex -s read-only "Изучи scripts/cleanup.sh и объясни, какие файлы он может удалить"
Генерация отчёта о diff
Перед слиянием изменений можно поручить агенту проверить уже подготовленный diff. Здесь не требуется разрешать новые записи.
codex --sandbox read-only "Проверь текущий diff и составь список функциональных и стилевых рисков"
| Пример | Рекомендуемый режим | Ожидаемый результат |
|---|---|---|
| Анализ архитектуры | read-only |
Описание структуры и рекомендации |
| Исправление ошибки | workspace-write |
Изменённые файлы и тесты |
| Создание документации | workspace-write |
Обновлённые текстовые файлы |
| Системная настройка | danger-full-access |
Изменения за пределами проекта |
Чем отличается --sandbox от похожих команд и параметров
Путаница возникает потому, что безопасность запуска складывается не из одного переключателя. Песочница, подтверждения, рабочая директория и контроль версий решают разные задачи. Один параметр ограничивает доступ, другой спрашивает разрешение, а третий помогает откатить изменения.
--sandbox и --ask-for-approval
Эти параметры часто воспринимают как взаимозаменяемые, но это не так. --sandbox задаёт технические границы доступа, а --ask-for-approval определяет, когда Codex должен спрашивать пользователя перед выполнением действий.
codex --sandbox workspace-write --ask-for-approval on-request "Исправь ошибку и покажи план перед рискованными командами"
| Параметр | Главный вопрос | Пример смысла |
|---|---|---|
--sandbox |
Что агент технически может сделать? | Может ли он записывать в рабочую область |
--ask-for-approval |
Когда нужно спросить пользователя? | Нужно ли подтверждение перед командой |
--sandbox и --full-auto
Автоматический режим обычно меняет поведение подтверждений и делает выполнение более самостоятельным. Он не должен автоматически означать снятие ограничений песочницы. Поэтому нельзя рассуждать так: «раз включён автоматический режим, значит, доступ открыт ко всему».
codex --full-auto --sandbox workspace-write "Выполни безопасные правки и запусти доступные тесты"
Комбинацию следует проверять по документации конкретной версии CLI, потому что детали автоматического поведения могут развиваться. Практический принцип остаётся прежним: отдельно оценивайте права и отдельно — необходимость подтверждения.
--sandbox и --cd
Параметр смены рабочей директории определяет, с какого каталога начинается работа. Он не является заменой песочнице. Можно перейти в нужный проект и всё равно запустить Codex в режиме только чтения или, наоборот, с правом записи.
codex --cd ./backend --sandbox workspace-write "Исправь обработчик ошибок в сервисе"
| Настройка | Что меняет | Чего не меняет |
|---|---|---|
--cd |
Начальную рабочую директорию | Уровень доступа сам по себе |
--sandbox |
Границы чтения и записи | Содержимое проекта и ветку Git |
--sandbox и Git
Git отвечает за историю изменений, ветки и возможность сравнить состояние проекта. Песочница отвечает за ограничения действий во время текущего запуска. Они дополняют друг друга, но не заменяют.
git switch -c codex-review codex --sandbox workspace-write "Обнови код, затем перечисли все изменённые файлы"
| Инструмент | Основная функция | Ограничение |
|---|---|---|
--sandbox |
Ограничивает доступ агента | Не создаёт историю изменений |
| Git | Хранит историю и diff | Не запрещает команду до её выполнения |
| Резервная копия | Позволяет восстановить данные | Не предотвращает ошибку заранее |
Типичные ошибки
Ошибки при работе с --sandbox чаще связаны не с синтаксисом, а с неверной моделью безопасности. Пользователь либо ожидает от строгого режима невозможного, либо даёт слишком широкие права для простой задачи.
Ошибка: перепутать режим с флагом без значения
У --sandbox должно быть значение. Запуск без режима может привести к ошибке разбора аргументов или к неожиданному использованию настроек по умолчанию.
codex --sandbox "Проверь проект" Правильно: codex --sandbox read-only "Проверь проект"
Ошибка: выбрать danger-full-access для обычного редактирования
Если нужно изменить файлы внутри проекта, чаще всего достаточно workspace-write. Полный доступ ради исправления одной функции — это примерно как открывать сейф ломом, чтобы достать карандаш.
codex --sandbox danger-full-access "Переименуй одну переменную" Безопаснее: codex --sandbox workspace-write "Переименуй одну переменную"
Ошибка: ожидать, что read-only сам внесёт исправления
В режиме только чтения Codex может подробно описать проблему, но не обязан сохранять изменения. Это ограничение является его назначением, а не неисправностью.
codex -s read-only "Найди ошибку и предложи патч"
Затем, после проверки:
codex -s workspace-write "Внеси согласованный патч"
Ошибка: считать песочницу заменой резервной копии
Ограничения доступа снижают риск, но не отменяют необходимость Git, резервного копирования и проверки diff. Даже разрешённое изменение в рабочей области может оказаться логически неверным.
git status git diff codex --sandbox workspace-write "Исправь проблему только в модуле billing"
| Ошибка | Последствие | Как исправить привычку |
|---|---|---|
Нет значения у --sandbox |
Команда не запускается или ведёт себя не так, как ожидалось | Всегда указывать режим явно |
| Сразу выбран полный доступ | Избыточная область потенциальных изменений | Начинать с минимально достаточного режима |
От read-only ждут записи |
Изменения не появляются | После анализа перезапустить с записью |
| Нет проверки diff | Ошибки обнаруживаются слишком поздно | Проверять статус и изменения после работы |
Краткая памятка
Флаг --sandbox помогает выбрать границы, в которых Codex CLI будет выполнять задачу. Полная форма читается лучше, короткая удобна для повседневной работы: --sandbox и -s означают одно и то же.
| Нужно сделать | Команда |
|---|---|
| Только изучить проект | codex -s read-only |
| Изменить файлы проекта | codex -s workspace-write |
| Получить максимально широкий доступ | codex -s danger-full-access |
Перед запуском задайте себе три вопроса:
- Нужно ли Codex менять файлы или достаточно анализа?
- Ограничивается ли задача текущей рабочей областью?
- Проверены ли текущая директория, ветка Git и возможные последствия команд?
| Проверка | Что сделать | Зачем |
|---|---|---|
| Режим | Выбрать минимально достаточное значение | Снизить область риска |
| Рабочая директория | Проверить путь и проект | Не изменить чужой каталог |
| Git | Создать ветку и посмотреть diff | Сохранить контроль над правками |
| Подтверждения | Настроить подходящий режим согласования | Не запускать рискованные действия вслепую |
Главное правило простое: для анализа используйте read-only, для обычной разработки — workspace-write, а danger-full-access оставляйте для редких задач, которым действительно нужен выход за пределы рабочей области. Такой подход не мешает Codex быть полезным и одновременно не превращает каждую команду в лотерею с системными файлами.
