Что решает песочница

Sandbox позволяет Claude выполнять большинство команд оболочки без остановки на подтверждение. Вместо одобрения каждой команды вручную вы один раз описываете, какие файлы и сетевые домены доступны, а дальше эту границу принудительно соблюдает сама операционная система - для каждой Bash-команды и её дочерних процессов.

Работает на macOS, Linux и WSL2; нативный Windows не поддерживается - на Windows Claude Code нужно запускать внутри дистрибутива WSL2. На macOS ничего дополнительно устанавливать не нужно - изоляция использует встроенный механизм Seatbelt.

Быстрый старт

Команда /sandbox открывает панель с тремя вкладками, плюс отдельная вкладка Dependencies на Linux, если не хватает опционального seccomp-фильтра.

Mode - выбор, как подтверждаются команды в песочнице: auto-allow или обычные разрешения.
Overrides - разрешить ли командам, которые не смогли выполниться в песочнице, откатиться к обычному запуску без изоляции.
Config - просмотр итоговых настроек песочницы.

На Linux и WSL2 нужны два пакета:

Ubuntu / Debian
sudo apt-get install bubblewrap socat

bubblewrap обеспечивает изоляцию файловой системы, 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 нужна запись за пределами этих границ, доступ расширяется через настройки:

.claude/settings.json
{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": ["~/.kube", "/tmp/build"]
    }
  }
}

Эти пути проверяются на уровне операционной системы, поэтому им подчиняются все команды внутри песочницы, включая их дочерние процессы. Это рекомендуемый способ дать инструменту доступ к конкретному месту - вместо того, чтобы полностью исключать инструмент из-под песочницы.

Сеть: домены разрешаются по одному

Сетевой доступ идёт через прокси-сервер, который работает отдельно от песочницы. По умолчанию не разрешён ни один домен заранее: при первом обращении команды к новому домену Claude Code запрашивает подтверждение (или отправляет запрос классификатору в auto mode). Если ответить утвердительно, хост остаётся разрешённым до конца текущей сессии; вариант «да, и больше не спрашивать» сохраняет правило в настройках на будущее.

Домены можно разрешить заранее, чтобы вообще не получать запрос:

.claude/settings.json
{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"]
    }
  }
}

Ограничения применяются ко всем скриптам, программам и подпроцессам, которые запускает команда, - это касается не только самой команды, но и всего, что она вызывает по цепочке.

Чем песочница отличается от режима разрешений

/sandbox - это не режим разрешений. Режим разрешений решает, выполняется ли вызов инструмента и нужно ли спрашивать подтверждение заранее. Песочница ограничивает то, к чему Bash-команда может обратиться уже после того, как начала выполняться. Оба слоя дополняют друг друга: разрешения проверяются до запуска команды на основе её текста (и, в auto mode, оценки классификатора), а границы песочницы соблюдает сама операционная система на уровне запущенного процесса - независимо от того, что модель собиралась сделать, и даже если разрешённая команда делает больше, чем говорит её название.

Чек-лист

Настройка Bash sandbox
  1. На Linux/WSL2 установлены bubblewrap и socat
  2. Команда /sandbox открыта, выбран режим (auto-allow или обычные разрешения)
  3. Настроен allowWrite для инструментов, которым нужна запись вне рабочей папки
  4. Домены, к которым команды обращаются регулярно, добавлены в allowedDomains
  5. Проверено, что критические пути и явные deny-правила по-прежнему требуют подтверждения
Работает ли песочница на Windows?
Нативно нет. На Windows Claude Code нужно запускать внутри дистрибутива WSL2 - песочница поддерживает macOS, Linux и WSL2, но не нативный Windows.
Нужно ли что-то устанавливать на macOS?
Нет, на macOS изоляция использует встроенный в систему механизм Seatbelt. Дополнительные пакеты требуются только на Linux и WSL2 (bubblewrap и socat).
Чем auto-allow отличается от auto mode?
Это разные механизмы. Auto-allow - режим самой песочницы: команды, которые умещаются в её границы, выполняются без вопроса. Auto mode - отдельный режим разрешений, где решения принимает модель-классификатор. Они работают независимо друг от друга и могут сочетаться.
Что произойдёт, если команде нужен хост, которого нет в allowedDomains?
Claude Code запросит подтверждение на первое обращение к этому домену (или отправит решение классификатору в auto mode). Если ответить утвердительно с опцией «не спрашивать снова», домен останется разрешённым для будущих сессий.
Может ли команда выполниться в обход границ песочницы?
Ограничения соблюдает операционная система на уровне процесса, а не только правила Claude Code, - это касается и всех дочерних процессов команды. Полностью обойти границу можно только явным отключением песочницы для конкретной команды, которое проходит через обычный поток разрешений и требует отдельного подтверждения.
Что делать, если нужный инструмент вообще не запускается в песочнице?
Claude Code сообщает о причине блокировки, называя конкретный путь или хост, и может автоматически повторить команду уже без изоляции - такой повторный запуск проходит через обычный поток подтверждений, а не через песочницу.
← Все статьи блога