Что решает песочница
Sandbox позволяет Claude выполнять большинство команд оболочки без остановки на подтверждение. Вместо одобрения каждой команды вручную вы один раз описываете, какие файлы и сетевые домены доступны, а дальше эту границу принудительно соблюдает сама операционная система - для каждой Bash-команды и её дочерних процессов.
Работает на macOS, Linux и WSL2; нативный Windows не поддерживается - на Windows Claude Code нужно запускать внутри дистрибутива WSL2. На macOS ничего дополнительно устанавливать не нужно - изоляция использует встроенный механизм Seatbelt.
Быстрый старт
Команда /sandbox открывает панель с тремя вкладками, плюс отдельная вкладка Dependencies на Linux, если не хватает опционального seccomp-фильтра.
Mode - выбор, как подтверждаются команды в песочнице: auto-allow или обычные разрешения.
Overrides - разрешить ли командам, которые не смогли выполниться в песочнице, откатиться к обычному запуску без изоляции.
Config - просмотр итоговых настроек песочницы.
На Linux и WSL2 нужны два пакета:
sudo apt-get install bubblewrap socatbubblewrap обеспечивает изоляцию файловой системы, socat - прокладывает сетевой трафик через прокси песочницы. Если пакет отсутствует, вкладка Dependencies в /sandbox покажет это явно.
Два режима: auto-allow и обычные разрешения
В обоих режимах песочница применяет одни и те же ограничения по файлам и сети - разница только в том, требуют ли команды внутри песочницы подтверждения.
Auto-allow. Команда, которую можно выполнить в песочнице, запускается и одобряется автоматически, без вопроса. Команды, которые нельзя изолировать (например, им нужен доступ к домену, которого нет в списке разрешённых), откатываются к обычному потоку разрешений - с подтверждением в ручном режиме или проверкой классификатора в auto mode.
Даже в auto-allow продолжают действовать: явные deny-правила, критические пути для rm/rmdir, и содержательные ask-правила вроде Bash(git push *) - они всё равно требуют подтверждения, даже для команд внутри песочницы.
Обычные разрешения. Все Bash-команды проходят стандартный поток подтверждений, даже если они выполняются в песочнице - больше контроля, но и больше запросов.
Что происходит, когда команда не помещается в песочницу
Некоторые команды невозможно выполнить в песочнице вообще - например, инструменты, несовместимые с изоляцией, или те, которым нужен хост, не входящий в разрешённый список. Claude Code сообщает о нарушении в результате заблокированной команды, называя конкретный путь или хост, который отклонила песочница.
Вместо провала задачи Claude Code предлагает запасной вариант: модель анализирует нарушение и может повторить команду с параметром, отключающим песочницу для этого конкретного запуска. Повторная команда выполняется уже без изоляции и проходит через обычный поток разрешений - в ручном режиме это подтверждение, в auto mode - оценка классификатора. Заголовок такого запроса на подтверждение звучит как «Bash command (unsandboxed)», а не просто «Bash command» - так видно, какие команды выполнялись вне песочницы.
Файловая система: что доступно по умолчанию
По умолчанию команды внутри песочницы могут писать только в рабочую папку, директории, добавленные флагом --add-dir или командой /add-dir, и временную папку сессии. Если подпроцессам вроде kubectl, terraform или npm нужна запись за пределами этих границ, доступ расширяется через настройки:
{
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": ["~/.kube", "/tmp/build"]
}
}
}Эти пути проверяются на уровне операционной системы, поэтому им подчиняются все команды внутри песочницы, включая их дочерние процессы. Это рекомендуемый способ дать инструменту доступ к конкретному месту - вместо того, чтобы полностью исключать инструмент из-под песочницы.
Сеть: домены разрешаются по одному
Сетевой доступ идёт через прокси-сервер, который работает отдельно от песочницы. По умолчанию не разрешён ни один домен заранее: при первом обращении команды к новому домену Claude Code запрашивает подтверждение (или отправляет запрос классификатору в auto mode). Если ответить утвердительно, хост остаётся разрешённым до конца текущей сессии; вариант «да, и больше не спрашивать» сохраняет правило в настройках на будущее.
Домены можно разрешить заранее, чтобы вообще не получать запрос:
{
"sandbox": {
"enabled": true,
"network": {
"allowedDomains": ["github.com", "*.npmjs.org"]
}
}
}Ограничения применяются ко всем скриптам, программам и подпроцессам, которые запускает команда, - это касается не только самой команды, но и всего, что она вызывает по цепочке.
Чем песочница отличается от режима разрешений
/sandbox - это не режим разрешений. Режим разрешений решает, выполняется ли вызов инструмента и нужно ли спрашивать подтверждение заранее. Песочница ограничивает то, к чему Bash-команда может обратиться уже после того, как начала выполняться. Оба слоя дополняют друг друга: разрешения проверяются до запуска команды на основе её текста (и, в auto mode, оценки классификатора), а границы песочницы соблюдает сама операционная система на уровне запущенного процесса - независимо от того, что модель собиралась сделать, и даже если разрешённая команда делает больше, чем говорит её название.
Чек-лист
- На Linux/WSL2 установлены bubblewrap и socat
- Команда /sandbox открыта, выбран режим (auto-allow или обычные разрешения)
- Настроен allowWrite для инструментов, которым нужна запись вне рабочей папки
- Домены, к которым команды обращаются регулярно, добавлены в allowedDomains
- Проверено, что критические пути и явные deny-правила по-прежнему требуют подтверждения