Sandbox - это техническая граница выполнения, и в Codex она обеспечивается операционной системой, а не одной лишь просьбой к модели. Локальные команды в CLI, IDE-расширении и desktop-приложении выполняются в OS-enforced sandbox. Механизм зависит от платформы: на macOS используется Seatbelt, на Linux и WSL - bubblewrap и seccomp с compatibility-путями, на native Windows - elevated- или более слабая unelevated-реализация. Понимать это важно: сила границы зависит от платформы, и Windows-реализация не равна Linux по строгости.
Внутри sandbox есть защита, которая работает даже там, где запись в целом разрешена. Даже внутри writable root отдельно защищены .git, .agents и .codex. Это не случайность, а осознанная граница: она мешает агенту незаметно менять метаданные репозитория, собственные инструкции и политику. Иначе агент мог бы, имея право писать в проект, переписать правила, по которым сам же и работает, - а это подрыв всей модели доверия изнутри.
Отсюда важное правило про расширение доступа. Если агенту нужен доступ к дополнительному каталогу, его добавляют узко - через --add-dir или профиль, - а не снимают sandbox целиком. Разница принципиальна: узкое расширение открывает ровно то, что нужно задаче, тогда как отключение sandbox открывает всё сразу. Соблазн "просто выключить, чтобы не мешало" велик, но именно он превращает управляемую границу в её отсутствие, а обратимую настройку - в необратимый риск.
Полезно один раз увидеть базовую настройку sandbox целиком. Ниже - режим workspace-write с выключенным сетевым доступом и web_search в cached-режиме. Эта конфигурация разрешает инструмент кэшированного поиска, но не даёт npm, тестам или shell-скриптам выхода в сеть. К этой форме возвращаются, задавая рабочую границу: она показывает, что файловый доступ и сетевой доступ - отдельные оси, и одно не включает другое автоматически.
Сетевая ось требует отдельного внимания, потому что вокруг неё много путаницы. Разрешённый инструмент кэшированного поиска - это не то же самое, что выход в сеть для порождённых команд. Чтобы ограничить уже включённую сеть по назначениям, используют network proxy policy; при этом сам флаг proxy не включает сеть. Это разведение стоит запомнить: включение поиска, включение сети и ограничение сети по доменам - три разных действия, и путать их - значит неверно оценить, что агент реально может отправить наружу.
Полезно один раз свести режимы sandbox в таблицу. Ниже - read-only, workspace-write и danger-full-access: что каждый даёт по файлам и сети и где уместен. read-only - для исследования, аудита и тихого CI; workspace-write - для обычной локальной разработки с записью в workspace, кроме защищённых путей; danger-full-access - без ограничений sandbox, и уже поэтому его выбирают лишь осознанно и в изолированной среде, а не как удобный способ "чтобы всё работало".
Danger-full-access заслуживает отдельной оговорки именно из-за имени. Режим без ограничений sandbox назван так намеренно: он снимает техническую границу целиком, и всё, что дальше защищает вас, - это только approvals и ваше внимание. Его место - в изолированном контейнере или одноразовом окружении, где цена ошибки ограничена, а не на машине с production-доступом. Выбор этого режима - это осознанное решение остаться без технического потолка, а не мелкая настройка ради скорости.
| Mode | Filesystem | Network | Использование |
|---|---|---|---|
| read-only | Чтение разрешённых путей | По умолчанию нет | Exploration, audit, тихий CI |
| workspace-write | Запись в workspace, кроме protected | По умолчанию нет | Обычная локальная разработка |
| danger-full-access | Без ограничений sandbox | Без границы sandbox | Только изолированная среда |
Типичные провалы вокруг sandbox предсказуемы. Считать, что Windows-реализация так же строга, как Linux. Снять sandbox целиком вместо узкого --add-dir, когда нужен один лишний каталог. Решить, что разрешённый кэшированный поиск дал сети тестам и package manager. И включить danger-full-access на машине с реальными правами. Помните, что sandbox обеспечивает ОС и зависит от платформы, расширяйте доступ узко, различайте поиск и сеть, а полный доступ держите для изолированных сред.
sandbox_mode = "workspace-write"
[sandbox_workspace_write]
network_access = false
web_search = "cached"
# cached search разрешён, но npm/tests/shell в сеть не выходят;
# proxy flag сам по себе НЕ включает сеть; защищены .git, .agents, .codex