← Блог
Engineering

Песочница Codex: режимы, --yolo, Docker и облако

Yura Dubinin
Резюмировать с помощью:

Песочница Codex ограничивает места, куда команды могут записывать данные, и их доступ к сети. Для локальной работы начните с workspace-write; используйте --yolo только во внешней песочнице, поскольку этот флаг отключает и песочницу Codex, и запросы подтверждения.

Мы протестировали Codex CLI 0.162.1 на macOS и в Docker, а также задачу Codex в Lizard Sandboxes. В этом руководстве мы рассмотрим результаты, важные настройки и выбор конфигурации.

Примеры используют протестированные версии. При проверке источников 21 октября 2026 года последним стабильным релизом был 0.163.0. Проверьте установленную версию, прежде чем применять настройки из другого релиза. Смотрите список релизов.

Что защищает встроенная песочница Codex?

Codex применяет ограничения операционной системы к запускаемым командам, включая средства запуска тестов, Git и менеджеры пакетов. Эти ограничения контролируют запись в файлы и доступ к сети. Серверы MCP, коннекторы и браузерные инструменты используют собственные средства контроля. Песочница команд не охватывает все подключаемые инструменты. Смотрите область действия песочницы и средства контроля инструментов в документации OpenAI.

НастройкаЧто она содержитЧто вам нужно контролировать
Встроенная песочница CodexКоманды, на которые действуют правила доступа к файлам и сетиДоступные для чтения файлы, дополнительные инструменты и одобренные исключения
Контейнер DockerПроцессы и файлы внутри контейнераМонтирования хоста, привилегии, учетные данные и сетевую политику
Рабочее пространство в микро-ВМПроцессы агента в ВМ с собственным ядромОбщие файлы, учетные данные и разрешенный доступ к сети

В наших проверках workspace-write на macOS запись в проект прошла успешно, запись в домашний каталог завершилась ошибкой, а .git/ остался доступен только для чтения. Запись в /tmp и $TMPDIR прошла успешно. Чтение ~/.zshrc тоже сработало: workspace-write не ограничивает чтение файлами вашего проекта.

Документация также указывает защиту существующих каталогов .codex, .agents и .aws внутри корневых каталогов с правом записи. Защита распространяется на их содержимое, а защита .git включает связанный gitdir. Мы проверили .git; сведения об остальных защищенных путях взяли из документации OpenAI.

Включение режима песочницы Codex

Запустите интерактивный сеанс в своем проекте:

codex --sandbox workspace-write --ask-for-approval on-request

Эта команда выбирает Auto: изменения в рабочем пространстве и обычные команды могут выполняться; более широкий доступ требует подтверждения. Интерактивный Codex рекомендует Auto для папок под контролем версий и режим только для чтения для остальных. Он может начать в режиме только для чтения, пока вы не подтвердите доверие к папке. При этом codex exec по умолчанию работает только на чтение. Чтобы разрешить изменения:

codex exec --sandbox workspace-write "<task>"

Замените <task> своим запросом. Смотрите настройки интерактивного режима по умолчанию и разрешения exec. Наше руководство по codex exec описывает задачи в скриптах.

На macOS Codex использует Seatbelt. На Linux и WSL2 он использует bubblewrap для изоляции файловой системы и seccomp для фильтрации системных вызовов. bubblewrap стал вариантом по умолчанию в 0.115.0. На Debian или Ubuntu установите его:

sudo apt install bubblewrap

Если bwrap нет в PATH, Codex может использовать встроенную вспомогательную программу, которой нужны непривилегированные пользовательские пространства имен. На Ubuntu 24.04 также может потребоваться профиль AppArmor bwrap-userns-restrict. Следуйте предварительным требованиям.

Нативная Windows поддерживает MXC — рекомендуемый вариант для поддерживаемых сборок Windows 11: 24H2 сборки 26100.9278 или 25H2 сборки 26200.9278 и новее. Старые запасные варианты — elevated и unelevated; WSL2 использует песочницу Linux. Смотрите требования Windows.

Настройка доступа к сети и записи

В workspace-write доступ к сети изначально отключен. Чтобы включить его в конфигурации Codex:

[sandbox_workspace_write]
network_access = true

Для одного запуска используйте -c sandbox_workspace_write.network_access=true. С этой настройкой наша проверка сети вместо ошибки DNS вернула HTTP 200. Она разрешает исходящий доступ; для правил по доменам нужен отдельный сетевой прокси-сервер. Смотрите настройки сети.

Эти настройки контролируют сетевой доступ команд. Запросы Codex к модели и запросы аутентификации идут отдельным путем, поэтому блокировка запроса curl не означает, что CLI не может связаться с моделью. Прокси-сервер также не фильтрует соединения MCP и трафик браузера. Смотрите трафик вне прокси-сервера команд.

Чтобы разрешить запись в еще одну папку, укажите нужный путь с --add-dir:

codex --add-dir <DIR>

Замените <DIR> этой папкой. OpenAI рекомендует добавить каталог, если задаче нужен только он.

Проверка границ перед длительным запуском

Из папки проекта мы выполнили четыре проверки:

codex sandbox -c sandbox_mode="workspace-write" -- sh -c 'touch ./inside && echo inside-ok || echo inside-blocked'
codex sandbox -c sandbox_mode="workspace-write" -- sh -c 'touch ~/codex-probe-outside && echo outside-ok || echo outside-blocked'
codex sandbox -c sandbox_mode="workspace-write" -- sh -c 'curl -sS -m 5 -o /dev/null -w "%{http_code}\n" https://example.com || echo net-blocked'
codex sandbox -c sandbox_mode="workspace-write" -c sandbox_workspace_write.network_access=true -- sh -c 'curl -sS -m 5 -o /dev/null -w "%{http_code}\n" https://example.com || echo net-blocked'

В этом порядке мы получили inside-ok, outside-blocked, net-blocked (после curl: (6) Could not resolve host: example.com) и 200.

Некоторые документы приводят codex sandbox macos|linux. Версия 0.162.1 не принимает эти подкоманды ОС: хост сам выбирает механизм изоляции. Используйте форму без подкоманды, приведенную выше. Это подтверждает исходный код релиза.

Проверьте ограничения и через инструмент оболочки агента. Мы запустили агента так:

codex exec -s workspace-write -c approval_policy="never" \
  --ephemeral --json \
  "Run exactly these three shell commands, one at a time, with your shell tool, and report the exit code and output of each. Do not retry, do not use workarounds, do not ask for approval: 1) touch ./agent-inside  2) touch ~/codex-agent-probe  3) curl -sS -m 5 -o /dev/null -w '%{http_code}' https://example.com"

По этому запросу агент выполнил три команды:

touch ./agent-inside
touch ~/codex-agent-probe
curl -sS -m 5 -o /dev/null -w '%{http_code}' https://example.com

В нашем тесте запись в проект вернула код выхода 0. Запись в домашний каталог завершилась ошибкой Operation not permitted, а curl вернул код выхода 6 и Could not resolve host. Файл в домашнем каталоге не появился. Запуск этих команд в отдельном терминале вне песочницы не проверяет ограничения агента.

Режимы песочницы и политики подтверждения

Режим песочницы задает ограничения команд. Политика подтверждения определяет, когда Codex может запросить выход за их пределы.

Режим песочницыДействие
read-onlyПросмотр файлов; для изменений нужны более широкие разрешения
workspace-writeЧтение файлов, запись в разрешенных корневых каталогах, запуск локальных команд; сеть отключена, пока ее не включат
danger-full-accessСнятие ограничений Codex на файловую систему и сеть

В 0.162.1 интерактивный флаг подтверждения принимает on-request и never. Первый запрашивает подтверждение, когда нужен более широкий доступ; второй отключает запросы, сохраняя выбранные ограничения песочницы. Конфигурация также поддерживает таблицу детальных правил. codex exec по умолчанию использует never и не принимает интерактивный флаг -a. Смотрите варианты подтверждения и настройку exec по умолчанию.

Старые примеры требуют внимания: untrusted убрали в 0.149.0, on-failure устарел, а --full-auto удалили из codex exec в 0.147.0. Наш запуск 0.162.1 отклонил --full-auto. Для задач exec с изменением файлов используйте --sandbox workspace-write.

Что делает режим Codex --yolo?

--yolo — короткая форма --dangerously-bypass-approvals-and-sandbox. Он отключает оба средства контроля, что равнозначно danger-full-access с политикой подтверждения never. OpenAI рекомендует использовать его только в среде с внешней песочницей. Смотрите предупреждение о флаге.

Мы повторили проверку агента с командой:

codex exec --yolo \
  --ephemeral --json \
  "Run exactly these two shell commands, one at a time, with your shell tool, and report the exit code and output of each. Do not retry and do not run anything else: 1) touch ~/codex-agent-probe  2) curl -sS -m 5 -o /dev/null -w '%{http_code}' https://example.com"

Агент выполнил две команды из примера выше: запись в домашний каталог и запрос curl. На этот раз файл появился в нашем домашнем каталоге, а запрос вернул HTTP 200. После проверки мы удалили тестовый файл. Режим Codex yolo дает доступ за пределы проекта.

Lizard и Docker Sandboxes запускают Codex с длинным флагом обхода внутри микро-ВМ. Это соответствует назначению флага: ВМ задает внешнюю границу. Она не защищает файлы внутри ВМ от агента. Docker Sandboxes описывает свою команду Codex по умолчанию; команду Lizard мы наблюдали во время теста.

Запуск Codex в Docker

Мы протестировали этот Dockerfile:

FROM node:22-bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends git python3 ca-certificates curl \
 && rm -rf /var/lib/apt/lists/*
RUN npm install -g @openai/codex@0.162.1
WORKDIR /workspace

Соберите его под именем codex-sandbox-test. Наш проект находился в локальной папке app. CODEX_DIR указывал на отдельную существующую папку с копией данных входа в ChatGPT. Мы выполнили:

docker run --rm \
  -v "$PWD/app:/workspace/app" \
  -v "$CODEX_DIR:/codex-home" \
  -e CODEX_HOME=/codex-home \
  -w /workspace/app \
  codex-sandbox-test codex exec -s workspace-write --ephemeral \
  "Run python3 -m unittest. Fix the failing test with the smallest reasonable change to the code under test, not the test. Run the tests again and report what changed."

В нашем тестовом примере add(a, b) вычитал входные значения. Codex заменил return a - b на return a + b; его запуск тестов и независимый запуск на хосте прошли успешно. Монтирование проекта с правом записи позволило перенести эти изменения на хост.

Песочница Linux также работала в этом стандартном контейнере Docker Desktop без дополнительных привилегий и установленного пакета bubblewrap. Встроенная вспомогательная программа Codex разрешила запись в проект, заблокировала запись в /root с ошибкой Read-only file system и заблокировала доступ к сети.

Этот результат не охватывает все хосты. OpenAI предупреждает, что настройки Docker могут блокировать пространства имен, setuid bubblewrap или операции seccomp, нужные Codex. Если внутренняя песочница не запускается, настройте контейнер как границу изоляции, затем используйте:

codex --sandbox danger-full-access

Сначала проверьте монтирования, привилегии и сетевую политику. Руководство OpenAI по контейнерам предупреждает, что вредоносный проект может отправить наружу все, что доступно внутри dev-контейнера, включая учетные данные Codex.

Аутентификация внутри контейнера

Для автоматизации CODEX_API_KEY передает ключ неинтерактивным процессам Codex. Предоставляйте его только тому запуску, которому он нужен. Чтобы сохранить вход по ключу API из существующей переменной среды:

printenv OPENAI_API_KEY | codex login --with-api-key

Для входа по коду устройства:

codex login --device-auth

Вход по коду устройства нужно включить в настройках аккаунта или рабочего пространства. Другой вариант — скопировать auth.json с машины, где вы уже вошли в систему, как мы сделали в тесте. Обращайтесь с auth.json как с паролем: он содержит токены доступа. При хранении данных входа в связке ключей пригодного для копирования файла может не быть. Смотрите аутентификацию и CODEX_API_KEY.

Контейнеры Docker и Docker Sandboxes различаются

Docker Sandboxes использует отдельный CLI sbx:

sbx run codex ~/my-project

У каждой песочницы свое ядро Linux и отдельный Docker Engine. Прокси-сервер на хосте хранит учетные данные модели вне ВМ и добавляет их в исходящие запросы. Сетевые правила запрещают весь явно не разрешенный трафик. При первом запуске доступны профили Open, Balanced и Locked Down. Balanced разрешает распространенные сайты для разработки; Locked Down требует явного правила для поставщика модели. Смотрите изоляцию, работу с учетными данными и профили.

Для локального запуска нужны macOS Sonoma 14+ на Apple silicon; Windows 11 на Intel/AMD с Windows Hypervisor Platform; либо Ubuntu 24.04+ на x86-64/arm64 с KVM и членством в группе kvm. Docker Desktop не требуется. Запуск локальных песочниц sbx внутри ВМ требует вложенной виртуализации. Смотрите руководство по установке.

Мы не тестировали Docker Sandboxes. Его флаг обхода по умолчанию оставляет файлы смонтированного проекта доступными для записи, включая хуки Git. Проверьте их после запуска.

Когда помогает облачная песочница

Удаленные вычисления помогают, когда задача должна продолжить работу после отключения ноутбука или когда нескольким агентам нужны отдельные рабочие пространства. Передавайте только код и учетные данные, нужные каждой задаче.

Текущая документация Codex Cloud описывает отдельную ВМ для каждой задачи. Переключатель интернета на уровне среды предлагает списки разрешенных менеджеров пакетов и доменов либо неограниченный доступ. Переменные среды поступают прямо в программы; сетевые секреты используют заглушки, которые прокси-сервер заменяет для разрешенных HTTPS-адресов на порту 443. Облачные функции требуют поддерживаемого плана ChatGPT: Plus, Pro, Business или Enterprise. Вход по ключу API их не включает. Мы не тестировали Codex Cloud. Смотрите облачные среды, планы и наше руководство по Codex Cloud.

Lizard Sandboxes запускает задачи в микро-ВМ Firecracker, каждая со своим ядром. Мы продаем Lizard Sandboxes. Мы рекомендуем их, когда нужны удаленные рабочие пространства, которые можно создавать, запускать и приостанавливать через CLI. Для локальной работы начните со встроенной песочницы Codex.

Запуск Codex в Lizard Sandboxes

Установите Lizard CLI, войдите в систему и выберите проект. Подключите подписку ChatGPT:

lizard agents login chatgpt

Или зарегистрируйте ключ API OpenAI:

lizard agents add openai

Проверьте подключение:

lizard agents status

В тесте мы использовали уже подключенную подписку ChatGPT и не повторяли вход.

Создание и копирование проекта

Замените заглушку проекта:

lizard sandbox create --project YOUR_PROJECT_ID --template codex --size small --timeout 3600000 --json

Задайте SB равным полученному ID песочницы, а BUNDLE_DIR — существующей локальной временной папке. Этот тайм-аут дает рабочему пространству один час. Срок жизни по умолчанию — пять минут; команды его не продлевают.

Из локального репозитория:

git bundle create "$BUNDLE_DIR/app.bundle" HEAD
lizard sandbox files put "$SB" "$BUNDLE_DIR/app.bundle" /workspace/app.bundle
lizard sandbox exec "$SB" -- git clone /workspace/app.bundle /workspace/app

Пакет содержит историю коммитов, включая все секреты в коммитах, и исключает незакоммиченные файлы. Проверьте, что вы отправляете.

Запуск задачи

lizard sandbox prompt "$SB" --agent codex --cwd /workspace/app "Run the tests. Fix one failing test with the smallest reasonable change. Report what changed and which tests passed."

Указывайте --agent codex явно. Во время нашего запуска список процессов показал:

codex exec --json --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox -C /workspace/app "<prompt>"

Собственная песочница Codex и подтверждения были отключены; изоляцию обеспечивала микро-ВМ Firecracker. Код внутри нее может получить доступ к учетным данным, доступным процессу. Ограничьте их права. ВМ не скрывает эти учетные данные от агента.

Проверка, скачивание и приостановка

Проверьте diff, повторно запустите тесты проекта и сохраните нужные файлы перед последней командой приостановки:

lizard sandbox exec "$SB" -- git -C /workspace/app status --short
lizard sandbox exec "$SB" -- git -C /workspace/app diff
lizard sandbox files get "$SB" /workspace/app/calc.py ./calc.py.review
lizard sandbox pause "$SB"

В нашем тестовом примере был файл calc.py; при повторении выберите свой измененный файл. Codex исправил ошибку с вычитанием, наш отдельный запуск unittest вывел OK, а скачанный файл совпал с результатом. Мы подтвердили статус paused.

Сохраните результаты до истечения срока. Успешная приостановка останавливает оплату вычислений; стоимость хранения в Persistent Volumes остается отдельной. Подробности жизненного цикла смотрите в кратком руководстве и справочнике CLI песочниц.

Сколько стоит облачное рабочее пространство?

Тарифы Lizard на вычисления на 21 октября 2026 года:

РазмерCPU и памятьЗа час
Small2 vCPU, 4 GB$0.0162
Medium4 vCPU, 8 GB$0.0324
Large8 vCPU, 16 GB$0.0648

Вычисления оплачиваются посекундно во время работы, включая простой. Успешная приостановка останавливает плату за вычисления; хранение в Persistent Volumes оплачивается отдельно.

Lizard Pro стоит $19 в месяц, включая налоги, и включает $19 использования. Дополнительное использование — pay as you go. Новые аккаунты получают семидневный пробный период с $5 использования; нужна карта. Оплата ChatGPT или API OpenAI идет отдельно. Проверьте цены перед запуском.

Частые проблемы настройки

ПроблемаЧто проверить
Нет bwrap или пользовательского пространства именУстановите bubblewrap и проверьте поддержку пространств имен на хосте.
Ubuntu 24.04 все еще блокирует bwrapЗагрузите описанный в документации профиль AppArmor bwrap-userns-restrict.
Exec отклоняет --full-autoИспользуйте --sandbox workspace-write.
Конфигурация отклоняет политику подтверждения untrustedЗамените удаленную политику на on-request; выберите песочницу отдельно.
Сеть не работает в workspace-writeПри необходимости включите sandbox_workspace_write.network_access; проверьте также правила прокси-сервера.
Неверная форма codex sandboxИспользуйте форму 0.162.1 без подкоманды ОС.
Песочница Linux не работает внутри DockerПроверьте нужные функции хоста; настройте изоляцию контейнера перед включением полного доступа.
В Lizard запускается не тот агентПередайте --agent codex.
Задача завершается по истечении срока жизниЗадайте достаточно времени и сохраните результаты до истечения срока; команды его не продлевают.

Что мы протестировали

21 октября 2026 года мы протестировали Codex CLI 0.162.1 из npm на macOS 26.6.2, Apple silicon (arm64), в новом репозитории Git внутри домашнего каталога. Мы проверили команды песочницы и вызовы оболочки агента со входом через ChatGPT, включая сравнение с обходом ограничений.

Тесты Docker использовали Docker Desktop, Docker Engine 28.1.1, arm64 и ядро LinuxKit 6.10. Мы проверили ограничения песочницы и исправление теста Python, затем повторно запустили тест на хосте.

Тесты Lizard использовали Lizard CLI 4.0.65. Шаблон codex включал Codex CLI 0.159.2, Node.js 22.23.2, Python 3.11.2 и git 2.39.5. Мы проверили загрузку пакета, клонирование, выполнение задачи, отдельные тесты, проверку diff, скачивание и приостановку.

Мы не тестировали Docker Sandboxes, Codex Cloud, нативную Windows/WSL2, run_in_container.sh от OpenAI и регистрацию нового аккаунта. Эти проверки охватывают описанные конфигурации и не являются аудитом безопасности.

Какую настройку выбрать?

Используйте workspace-write для локальной работы с известными файлами и инструментами. Выберите Docker для воспроизводимой среды выполнения и проверьте, работает ли там внутренняя песочница Codex. Рассмотрите Docker Sandboxes для локальной изоляции в микро-ВМ и хранения учетных данных на хосте или Codex Cloud для задач внутри ChatGPT.

Выберите Lizard Sandboxes, если вам нужны удаленные рабочие пространства через Lizard CLI. Начните с одного небольшого исправления теста, проверьте diff, скачайте результат и приостановите рабочее пространство.

Разрабатывайте с ИИ. Развёртывайте с Lizard.

Вам не нужна платформенная команда, чтобы выйти в продакшн. Весь ваш облак — в одной команде CLI.

Начать бесплатно
Сервисы
—
Аддоны
—
Развёртывания
—
Запуски Sandboxes
—

Мы используем cookie для основной работы сайта и аналитики. См. нашу политику cookie.