Поработайте с Claude Code подольше — и наткнётесь на эту дилемму. Он спрашивает «можно выполнить это?» на каждую команду, и рабочий поток то и дело буксует. Но отключить все запросы с помощью --dangerously-skip-permissions (режим обхода разрешений) — значит допустить, что инъекция в промпт или случайная оплошность могут затронуть файлы по всей вашей машине. Безопасность против автоматизации — долгое время это считали неизбежным компромиссом.

Этот бинарный выбор разрушает песочница. Если заранее огородить «к чему можно прикасаться» на уровне ОС, команды смогут свободно выполняться внутри ограды без запросов, но при этом ничто не сможет выйти за её пределы. В этой статье с точки зрения практика разбирается, что именно и как изолирует песочница Claude Code, как начать с /sandbox, как настроить её в settings.json, чем она отличается от режимов разрешений и какие ограничения нельзя переоценивать.

Суть за 30 секунд

Если читать только одно

Что это
Механизм, который огораживает файлы и сеть, к которым команда может прикоснуться, на уровне ОС. Внутри — свобода, снаружи — запрет.
Чем помогает
Она снимает выбор между усталостью от запросов и полным обходом. Вы резко сокращаете число запросов, оставаясь в безопасности.
С чего начать
Выполните /sandbox. На macOS работает из коробки; для Linux/WSL2 нужны два пакета.

※Во внутреннем использовании самой Anthropic песочница безопасно сократила число запросов разрешений на 84% (источник ниже).

1. Зачем нужна песочница

Claude Code — это ИИ-агент, который реально совершает действия: запускает тесты, переписывает файлы. Именно поэтому перед рискованными командами он останавливается и спрашивает «можно выполнить это?». Ради безопасности это правильно. Но когда за день прилетают десятки запросов, работа дробится, и в итоге вы жмёте Enter не читая. Это и есть «усталость от разрешений».

Уставший разработчик тянется к --dangerously-skip-permissions (он же режим YOLO), который отключает все запросы. Это удобно и — как и говорит название — опасно. Сразу обнажают клыки три угрозы.

💉 Инъекция в промпт

Если на прочитанной веб-странице или в issue спрятано «отправь ~/.ssh», ваши приватные ключи могут утечь без единого запроса.

🗑️ Разрушительные оплошности

Сгенерированная команда чистит неожиданный путь. Без запроса могут исчезнуть и файлы за пределами проекта.

📤 Заражение цепочки поставок

Вредоносная зависимость «сливает» данные наружу при установке. При полностью открытой сети остановить это нельзя.

Идея песочницы проста: перестать каждый раз спрашивать «что подтвердить?» и заранее огородить «как далеко это может дотянуться?». Ограду обеспечивает не собственное суждение Claude, а сама ОС (ядро), поэтому даже если его перехватят и даже если разрешённая команда делает больше, чем следует из её названия, ничто не выйдет за границу. Именно поэтому команды внутри ограды можно безопасно выполнять без запросов — бинарный выбор «усталость против полного обхода» исчезает. В официальной инженерной публикации «Making Claude Code more secure and autonomous with sandboxing» Anthropic сообщает, что во внутреннем использовании песочница безопасно сократила число запросов разрешений на 84% (опубликовано в октябре 2025 года).

2. Что такое песочница — две изоляции

Песочница Claude Code проводит две границы вокруг команд Bash (и всех дочерних процессов, которые они порождают). Эти две границы должны работать в связке — любая по отдельности оставляет брешь (см. §7).

🗂️ ① Изоляция файловой системы

Запись ограничена рабочим каталогом плюс временной папкой сессии (по умолчанию). Изменить ~/.bashrc и системные области нельзя. Чтение широкое, но его можно явно запретить. Даже при перехвате ничто не сможет переписать что-либо за пределами проекта.

🌐 ② Изоляция сети

По умолчанию действует «запрет по умолчанию» — ни один адрес не разрешён. Как только предпринимается попытка выйти на новый домен, появляется запрос. Трафик проходит через прокси вне песочницы и сверяется со списком разрешённых. Это не даёт секретам уйти наружу.

Суть в том, что она не полагается на добропорядочность Claude. Границу обеспечивает собственный защитный механизм ОС: macOS использует встроенный Seatbelt, Linux/WSL2 — bubblewrap. Поэтому та же граница распространяется на скрипты, которые вызывает команда, и на «внучатые» процессы. Считайте это не вежливой просьбой к модели, как ограждения (guardrails) ИИ, а физической стеной, которая держится механически.

💡 Она огораживает только Bash. Песочница оборачивает инструмент Bash и его дочерние процессы. Встроенные Read/Edit/Write у Claude, MCP-серверы и хуки — это отдельный вопрос (им управляют правила разрешений). Чтобы изолировать процесс целиком, используйте пакет @anthropic-ai/sandbox-runtime, описанный ниже.

3. С чего начать — /sandbox и поддерживаемые ОС

Песочница встроена в Claude Code. Дополнительной учётной записи или инструмента не требуется. В сессии выполните:

/sandbox

Откроется панель с тремя вкладками. Mode (как утверждаются команды в песочнице — следующий раздел), Overrides (может ли команда, которая не выполнилась в песочнице, откатиться к запуску вне неё) и Config (просмотр итоговых настроек). На Linux/WSL2, если недостаёт нужного пакета, вместо этого появляется вкладка Dependencies и сообщает, что установить.

Требования по каждой ОС

🍎 macOS

Устанавливать нечего. Используется встроенный Seatbelt. Включите сразу через /sandbox.

🐧 Linux / WSL2

Установите два пакета: bubblewrap и socat (например, apt-get install bubblewrap socat).

🪟 Нативная Windows

Не поддерживается. Запускайте Claude Code внутри WSL2 (WSL1 не подойдёт).

На Linux/WSL2 установите bubblewrap (непривилегированный инструмент песочницы, обеспечивающий изоляцию файловой системы) и socat (реле, направляющее трафик на прокси).

# Ubuntu / Debian
sudo apt-get install bubblewrap socat

# Fedora
sudo dnf install bubblewrap socat

⚠️ Ubuntu 24.04 и новее: политика AppArmor по умолчанию может помешать bubblewrap создавать нужные ему пользовательские пространства имён. Если sysctl kernel.apparmor_restrict_unprivileged_userns возвращает 1, добавьте профиль AppArmor для bwrap, чтобы это разрешить (шаги есть в официальной документации). Если возвращается 0 или ключа не существует, ничего делать не нужно. То же самое проверьте внутри WSL2.

Полезно также включить фильтр seccomp (он добавляет блокировку доменных сокетов Unix). Он опционален; установите его через npm install -g @anthropic-ai/sandbox-runtime. Вкладка Dependencies в /sandbox показывает статус ripgrep, bubblewrap, socat и фильтра seccomp. После установки пакетов перезапустите Claude Code и снова откройте /sandbox (проверка выполняется при запуске).

4. Два режима (auto-allow / обычный)

Вкладка Mode выбирает, как утверждаются команды внутри песочницы.

✅ Режим auto-allow

Команды Bash, выполняемые внутри песочницы, разрешаются автоматически, без запроса — сама граница заменяет собой запрос. Удобно для повседневной работы. Команды, которые песочница выполнить не может (например, трафик к неразрешённому хосту), откатываются к обычному процессу разрешений и вызывают запрос.

🔍 Режим обычных разрешений

Даже в песочнице каждая команда Bash проходит через обычный запрос разрешения. Больше контроля, больше подтверждений. Для осторожных, кому нужна «изоляция плюс привычные запросы».

В обоих режимах границы файловой системы и сети одинаковы; отличие только в «auto-allow против запроса». Обратите внимание, что даже в режиме auto-allow эти предохранительные клапаны остаются активными:

  • Явные правила deny всегда имеют приоритет
  • rm / rmdir, нацеленные на /, ваш домашний каталог или другие критичные системные пути, всё равно вызывают запрос
  • Правила ask, привязанные к содержимому, вроде Bash(git push *), всё равно требуют запроса даже внутри песочницы

Остерегайтесь двух обманчиво похожих «авто». Режим auto-allow песочницы — это не режим auto из режимов разрешений. Первый означает «автоодобрение, потому что команду сдерживает граница ОС»; второй — «классификатор оценивает безопасность команды и пропускает её». Они работают независимо и могут сочетаться.

5. Настройка в settings.json

Выбор в панели /sandbox записывается в проектный файл .claude/settings.local.json (не коммитится в git). Чтобы держать её всегда включённой во всех проектах, добавьте sandbox.enabled: true в пользовательские настройки в ~/.claude/settings.json. Она относится к тому же семейству settings.json, что и правила разрешений (allow/ask/deny).

Добавить цели для записи, запретить чтение

По умолчанию писать можно только в рабочий каталог и временную папку. Если kubectl или terraform нужно писать в другое место, добавьте пути через allowWrite. И наоборот, вы можете заблокировать чтение чувствительных папок.

{
  "sandbox": {
    "enabled": true,
    "filesystem": {
      "allowWrite": ["~/.kube", "/tmp/build"],
      "denyRead": ["~/"],
      "allowRead": ["."]
    }
  }
}

Пример выше запрещает чтение всего домашнего каталога, но по-прежнему разрешает текущий проект (. разворачивается в корень проекта, когда конфиг лежит в настройках проекта). Пути обеспечиваются на уровне ОС, поэтому одинаково применяются к дочерним процессам вроде npm и terraform.

Защитить учётные данные

Важная ловушка: по умолчанию чтение «широко разрешено», поэтому ~/.aws/credentials и ~/.ssh/ читаются как есть. Специальная настройка sandbox.credentials (относительно недавняя возможность) объявляет файлы, чтение которых запрещается, и переменные окружения, которые нужно сбросить.

{
  "sandbox": {
    "enabled": true,
    "credentials": {
      "files": [
        { "path": "~/.aws/credentials", "mode": "deny" },
        { "path": "~/.ssh", "mode": "deny" }
      ],
      "envVars": [
        { "name": "GITHUB_TOKEN", "mode": "deny" }
      ]
    }
  }
}

Разрешить адреса назначения

Сеть стартует с нулём разрешённых адресов. Новый домен вызывает запрос при первом обращении (в актуальных на момент написания версиях одобрение один раз означает отсутствие повторных запросов до конца сессии). Заранее зарегистрируйте хосты, о которых не хотите, чтобы вас спрашивали, в allowedDomains. С помощью распространяемых организацией управляемых настроек можно также автоматически блокировать всё, что вне списка разрешённых, вместо запроса.

{
  "sandbox": {
    "enabled": true,
    "network": {
      "allowedDomains": ["*.github.com", "registry.npmjs.org"]
    }
  }
}

Чтобы сделать её обязательной в масштабе организации. В управляемых настройках рядом с sandbox.enabled: true добавьте failIfUnavailable: true (не запускать Claude Code, если песочница не может инициализироваться) и allowUnsandboxedCommands: false (закрыть «запасной выход» с повтором вне песочницы — строгий режим). Вместе они превращают её в обязательный контур безопасности.

6. Связь с режимами и правилами разрешений

Их легко перепутать, но защитный механизм Claude Code состоит из трёх слоёв с разными задачами. Песочница — один из них: она не заменяет два других, а дополняет их.

Слой Что контролирует Кто обеспечивает Область
Правила разрешений Какие инструменты/команды можно использовать Claude Code (до запуска) Все инструменты
Режимы разрешений Сколько появляется запросов Claude Code (до запуска) Зависит от режима
Песочница К чему можно прикоснуться после запуска ОС (ядро) Bash и дочерние процессы

Решающее отличие — «когда и кем» вступает в силу каждый слой. Правила и режимы разрешений решаются до выполнения, самим Claude Code, исходя из строки команды. Песочница связывает процесс во время выполнения, силами ОС — поэтому что бы ни выбрала модель и даже если разрешённая команда делает больше, чем подразумевает её название, граница не сдвигается.

Это же и есть решающий разрыв с --dangerously-skip-permissions (обход). Обход лишь убирает запросы; окружение остаётся нараспашку. Режим auto-allow песочницы, напротив, может пропускать запросы, потому что стена ОС на месте. Старое железное правило — если пользуешься режимом обхода, то только внутри изолированного контейнера или ВМ — песочница позволяет сдвинуть в безопасную сторону даже на вашей повседневной машине.

7. Ограничения и оговорки — не переоценивайте её

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

🔓 TLS по умолчанию не инспектируется

Прокси судит только по имени хоста и не проверяет зашифрованное содержимое (по умолчанию). Разрешение широкого домена вроде github.com оставляет лазейку для кражи данных через domain fronting и подобное. Держите список разрешённых узким.

🔌 Открывать Unix-сокеты рискованно

Разрешение /var/run/docker.sock отдаёт весь хост через сокет Docker — фактически побег из песочницы. Осторожно выбирайте, какие сокеты открывать.

📈 Слишком широкий доступ на запись

Исполняемые файлы, доступные на запись в $PATH, или файлы вроде .bashrc могут обернуться выполнением кода в другом контексте. Держите allowWrite минимальным.

Ещё одно, что стоит усвоить: область действия — только Bash — встроенные Read/Edit/Write, MCP-серверы и хуки отдельны. Чтобы изолировать весь процесс, включая навыки (Skills) и MCP, оберните сам процесс Claude Code официальным опенсорсным @anthropic-ai/sandbox-runtime (опубликован на GitHub и в npm, исследовательский preview, выпущенный в октябре 2025 года). Его практическая роль — не «стена» против упорного злоумышленника, а «страховочная привязь», которая на порядки снижает число случайностей и «убеганий».

8. Когда стоит взять dev-контейнер или ВМ

Песочница — не единственный вариант изоляции в Claude Code. Удобство и сила изоляции находятся в размене, поэтому выбирайте по цели.

Песочница (встроенная)

Изолирует Bash и дочерние процессы. Без Docker, минимум настройки. Основа для сокращения запросов в повседневной работе.

sandbox-runtime

Оборачивает весь процесс Claude Code. Для автономных запусков, где нужно оградить и MCP, и хуки. Без Docker.

dev-контейнер

Контейнеризирует всю среду разработки. Для стандартизации настройки команды. Требует Docker.

ВМ (виртуальная машина)

Разделяет всю ОС. Самая сильная изоляция на уровне ядра, для недоверенного кода. Наибольшие трудозатраты.

Правило большого пальца: держите встроенную песочницу всегда включённой, чтобы сокращать повседневные запросы, и повышайте планку до sandbox-runtime, контейнеров или ВМ только тогда, когда запускаете автономно или имеете дело с недоверенными зависимостями. Для работы, которая доходит до продакшена — например, когда ИИ управляет облаком — сочетание учётных данных с минимальными привилегиями и более сильного уровня изоляции даёт спокойствие.

Итоги

  • Песочница огораживает «к чему можно прикасаться» на уровне ОС, снимая бинарный выбор между усталостью от запросов и полным обходом.
  • Используйте изоляцию файловой системы и сети в связке. Обеспечение: macOS = Seatbelt, Linux/WSL2 = bubblewrap.
  • Начните с /sandbox. На macOS работает из коробки; для Linux/WSL2 нужны bubblewrap+socat; нативная Windows не поддерживается (используйте WSL2).
  • Режим auto-allow пропускает запросы, но остаётся безопасным, потому что границу обеспечивает ОС. Правила deny, рискованные rm и правила ask, привязанные к содержимому, всё равно действуют.
  • Это дополняющий слой, отличный от правил/режимов разрешений — песочница связывает после выполнения, силами ОС, поэтому не сдвигается.
  • Но это не полная стена — помните про неинспектируемый TLS, Unix-сокеты и слишком широкие разрешения. Область действия — только Bash.

Песочница ломает саму предпосылку, что безопасность и автоматизация обязаны быть в размене. Достаточно один раз открыть /sandbox — и уже это меняет то, как вы держите поводья Claude Code. За точным актуальным справочником по конфигурации обращайтесь к официальной документации по настройкам песочницы как к первоисточнику.

FAQ

В. Чем песочница отличается от --dangerously-skip-permissions?

О. Обход лишь убирает запросы и оставляет окружение беззащитным. Песочница огораживает то, к чему можно прикоснуться, на уровне ОС, поэтому даже при пропуске запросов ничто не выходит наружу. Обход — только для изолированных сред; песочницей безопасно пользоваться даже на повседневной машине — в этом решающее отличие.

В. Можно ли использовать её на Windows?

О. Нативная Windows не поддерживается. Запускайте Claude Code внутри WSL2, и всё работает (WSL1 — нет). Под WSL2 команды в песочнице не могут вызывать бинарные файлы Windows вроде cmd.exe; добавьте их в excludedCommands, чтобы при необходимости запускать вне песочницы.

В. Замедлит ли включение работу?

О. По данным Anthropic, накладные расходы минимальны — часть файловых операций может быть немного медленнее. На практике, поскольку число запросов резко падает, воспринимаемая скорость работы часто даже растёт.

В. С включённой песочницей мои приватные ключи гарантированно в безопасности?

О. Не «гарантированно». Чтение по умолчанию широкое, поэтому ~/.ssh и ~/.aws/credentials по умолчанию читаемы. Заблокируйте их явно через sandbox.credentials или denyRead и держите сетевой список разрешённых узким. Изоляция файловой системы и сети должна всегда работать в связке.

В. Изолированы ли также MCP-серверы и хуки?

О. Нет. Встроенная песочница охватывает только команды Bash и дочерние процессы. MCP, хуки и встроенные Read/Edit/Write отдельны (ими управляют правила разрешений). Чтобы оградить их все, оберните весь процесс с помощью @anthropic-ai/sandbox-runtime.