Перейти к содержанию

Claude Code

Anthropic открыла песочницу Claude Code под Apache-2.0

4 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →

Anthropic 25 октября открыла под лицензией Apache-2.0 sandbox-runtime (srt), песочницу из Claude Code. Она ограничивает доступ к файлам и сети любому процессу средствами самой ОС, без контейнера, а в Claude Code такая изоляция при внутреннем использовании, по подсчётам Anthropic, на 84% сократила число запросов разрешений. Чтобы запереть в srt локальный MCP-сервер, хватит заменить одну команду в .mcp.json, но проект пока research preview, и API с форматом настроек ещё могут меняться, предупреждают в репозитории Anthropic.

Пакет ставится командой npm install -g @anthropic-ai/sandbox-runtime, после чего любая команда запускается через обёртку: srt \"curl example.com\". Для MCP-сервера в .mcp.json в поле command вместо npx пишется srt, а npx переезжает первым элементом в args. Правила лежат в ~/.srt-settings.json: в блоке filesystem списки denyRead, allowWrite и denyWrite, в блоке network списки allowedDomains и deniedDomains. Сервер, который попробует писать в запрещённую папку, получит EPERM: operation not permitted. Для своих инструментов srt подключается и как библиотека, через SandboxManager.

Что не покрывает /sandbox

Встроенная песочница Claude Code по умолчанию выключена, включается командой /sandbox или настройкой sandbox.enabled и оборачивает только Bash-команды, говорится в документации Claude Code. Файловые инструменты Claude, MCP-серверы и хуки работают за её пределами. Чтобы поставить их за одну границу, документация предлагает запускать сам процесс Claude Code в контейнере, виртуальной машине или в sandbox runtime. srt и есть вариант без контейнера: ограничения действуют на всё дерево процессов, так что их наследуют и дочерние процессы обёрнутой программы.

Что открыто по умолчанию

Без файла настроек srt запускается со встроенными значениями: сети нет, записи за пределами путей по умолчанию нет, читать можно всё. Так что ~/.ssh обёрнутый процесс прочитает, пока путь не попал в denyRead. В Claude Code картина та же: по документации, чтение по умолчанию охватывает почти всю машину, включая ~/.ssh и ~/.aws/credentials.

Чтение и запись устроены зеркально. Для чтения можно запретить широкую область, например /Users, и вернуть внутри неё нужные пути вроде текущей папки: allowRead сильнее denyRead. Исключение - запрет, который точнее разрешения: denyRead: [\"**/.env\"] при allowRead: [\".\"] остаётся в силе. Для записи наоборот, denyWrite сильнее allowWrite, а пустой allowWrite означает, что писать нельзя никуда. С сетью так же: пустой allowedDomains закрывает её целиком.

Сломанный файл настроек srt не прощает. Если он пустой, не читается или не проходит валидацию, srt сообщает об ошибке и выходит, а не откатывается к встроенным значениям: откат выбросил бы вместе со всем остальным правила denyRead, allowRead и правила для учётных данных. Файл, указанный через --settings, к тому же обязан существовать.

Сеть через прокси

Напрямую в сеть обёрнутый процесс не выходит. На Linux srt запускает его через bubblewrap и полностью убирает у него сетевое пространство имён, поэтому весь трафик идёт через прокси на хосте, до которых изнутри можно достучаться только по Unix-сокетам. На macOS профиль Seatbelt для sandbox-exec генерируется на лету и пускает процесс лишь на один порт localhost, где слушают те же прокси. HTTP и HTTPS идут через HTTP-прокси, остальной TCP через SOCKS5, и оба сверяют хост со списками разрешённых и запрещённых доменов, в которых работают маски. Отдельно задаётся, к каким локальным Unix-сокетам процессу можно подключаться.

Кроме того, srt маскирует секреты в переменных окружения и файлах, подписывает запросы AWS SigV4 с замаскированными ключами и в экспериментальном режиме терминирует TLS, чтобы инспектировать HTTPS. На macOS он умеет читать системный журнал нарушений песочницы и сообщать о них в реальном времени.

Тем, кто встраивает srt в свою обвязку для агентов, пригодится флаг --control-fd. Через заранее открытый дескриптор srt принимает новые конфиги, по одному JSON-объекту на строку, и каждая строка заменяет конфиг целиком. На лету меняются только сетевые списки, настройки MITM-прокси и политики SigV4 (последние, если srt стартовал с блоком credentials), со следующего соединения или запроса. Правила файловой системы уже зашиты в профиль Seatbelt, аргументы bubblewrap или ACL на Windows, так что правило, под которым команда должна стартовать, место в файле настроек. Невалидную строку srt отбрасывает и оставляет прежний конфиг, а сама обёрнутая команда на macOS и Linux дескриптор не получает и подсунуть свои правила не может. Для хостов, которые запускают нагрузку в другом месте, есть режим srt proxy: только HTTP-прокси, без дочернего процесса, а пропускать ли запрос, решает отдельный внешний процесс.

Windows пока в альфе

Сборка для Windows запускает процесс под отдельной локальной учётной записью srt-sandbox с токеном, ограниченным на запись, и явными правами NTFS на рабочую папку. Исходящий трафик этой учётной записи режут фильтры Windows Filtering Platform, пропуская только loopback к портам прокси. Учётную запись и общий для всей машины набор фильтров один раз создаёт шаг windows-install с повышенными правами, вспомогательный srt-win.exe идёт в сборках для x64 и arm64.

Инструменты на системном TLS-стеке Schannel в такой песочнице не работают: System32\\curl.exe, Invoke-WebRequest из PowerShell, HttpClient из .NET и winget. Трафик, который за процесс несут системные службы вроде Windows Update, проходит мимо фильтра, как и соединения процесса, который перед созданием сокета ставит на поток другой токен.

Сам Claude Code, по его документации, поддерживает песочницу на macOS, Linux и WSL2, а в нативной Windows выполняет команды без неё.

Claude Code

Пользователь: Claude Code отправлял его email наружу

Пользователь Claude Code пишет, что спросил Claude, кому уходил его email, и услышал: больше 10 раз за месяц, включая SEC. А инструкции Claude Code рядом с адресом запрещают делиться им без разрешения. Вы бы поверили такому ответу модели или сначала проверили бы всё сами?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.