
sandbox-runtime v0.0.68
Легковесный инструмент изоляции (песочницы) для принудительного применения ограничений файловой системы и сети к произвольным процессам на уровне ОС, без необходимости в контейнере.
Anthropic Sandbox Runtime (srt)
Легковесный инструмент песочницы для принудительного применения ограничений файловой системы и сети к произвольным процессам на уровне ОС без необходимости в контейнере.
srt использует нативные примитивы песочницы ОС (sandbox-exec в macOS, bubblewrap в Linux) и прокси-фильтрацию сети. Его можно использовать для изоляции поведения агентов, локальных MCP-серверов, bash-команд и произвольных процессов.
Бета-версия исследовательского превью
Sandbox Runtime — это исследовательское превью, разработанное для Claude Code с целью обеспечения более безопасной работы ИИ-агентов. Оно публикуется как раннее превью с открытым исходным кодом, чтобы помочь более широкой экосистеме создавать более безопасные агентные системы. Поскольку это раннее исследовательское превью, API и форматы конфигурации могут меняться. Мы приветствуем отзывы и вклад, чтобы сделать ИИ-агентов безопасными по умолчанию!
Установка
npm install -g @anthropic-ai/sandbox-runtime
Базовое использование
# Network restrictions
$ srt "curl anthropic.com"
Running: curl anthropic.com
<html>...</html> # Request succeeds
$ srt "curl example.com"
Running: curl example.com
Connection blocked by network allowlist # Request blocked
# Filesystem restrictions
$ srt "cat README.md"
Running: cat README.md
# Anthropic Sandb... # Current directory access allowed
$ srt "cat ~/.ssh/id_rsa"
Running: cat ~/.ssh/id_rsa
cat: /Users/ollie/.ssh/id_rsa: Operation not permitted # Specific file blocked
Обзор
Этот пакет предоставляет автономную реализацию песочницы, которую можно использовать как в качестве инструмента CLI, так и в качестве библиотеки. Он разработан с философией безопасности по умолчанию, адаптированной под типичные сценарии использования разработчиками: процессы запускаются с минимальным доступом, и вы явно открываете только те «дыры», которые вам нужны.
Ключевые возможности:
- Сетевые ограничения: контроль того, к каким хостам/доменам можно обращаться по HTTP/HTTPS и другим протоколам
- Ограничения файловой системы: контроль того, какие файлы/каталоги можно читать/записывать
- Ограничения Unix-сокетов: контроль доступа к локальным IPC-сокетам
- Мониторинг нарушений: в macOS — доступ к системному хранилищу журнала нарушений песочницы для оповещений в реальном времени
Пример использования: изоляция MCP-серверов
Ключевой сценарий — изоляция серверов Model Context Protocol (MCP) для ограничения их возможностей. Например, чтобы изолировать MCP-сервер файловой системы:
Без песочницы (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
С песочницей (.mcp.json):
{
"mcpServers": {
"filesystem": {
"command": "srt",
"args": ["npx", "-y", "@modelcontextprotocol/server-filesystem"]
}
}
}
Затем настройте ограничения в ~/.srt-settings.json:
{
"filesystem": {
"denyRead": [],
"allowWrite": ["."],
"denyWrite": ["~/sensitive-folder"]
},
"network": {
"allowedDomains": [],
"deniedDomains": []
}
}
Теперь MCP-серверу будет заблокирована запись в запрещённый путь:
> Write a file to ~/sensitive-folder
✗ Error: EPERM: operation not permitted, open '/Users/ollie/sensitive-folder/test.txt'
Как это работает
Песочница использует примитивы уровня ОС для применения ограничений, действующих на всё дерево процессов:
- macOS: Использует
sandbox-execс динамически генерируемыми профилями Seatbelt - Linux: Использует bubblewrap для контейнеризации с изоляцией сетевого пространства имён
- Windows: Запускает изолированный процесс под выделенной локальной учётной записью
srt-sandbox, с Windows Filtering Platform egress fence, привязанным к SID этой учётной записи, токеном с ограничением записи и явными ACE на рабочем дереве
0d1c612947c798aef48e6ab4beb7e8544da9d41a-4096x2305
Модель двойной изоляции
Для эффективной изоляции необходимы как файловая, так и сетевая изоляция. Без файловой изоляции скомпрометированный процесс мог бы похитить SSH-ключи или другие конфиденциальные файлы. Без сетевой изоляции процесс мог бы выйти из песочницы и получить неограниченный сетевой доступ.
Файловая изоляция применяет ограничения на чтение и запись:
- Чтение (шаблон «сначала запретить, затем разрешить»): По умолчанию доступ на чтение разрешён везде. Вы можете запретить широкие области (например,
/Users), а затем повторно разрешить конкретные пути внутри них (например,.).allowReadимеет приоритет надdenyRead— в отличие от записи, гдеdenyWriteимеет приоритет надallowWrite. ЗаписьdenyRead, которая более конкретна, чем областьallowRead, в которую она попадает (например,denyRead: ["**/.env"]или["./secrets"]приallowRead: ["."]), всё равно остаётся запрещённой. - Запись (шаблон «только разрешить»): По умолчанию доступ на запись запрещён везде. Вы должны явно разрешить пути (например,
.,/tmp). Пустой список разрешений означает отсутствие доступа на запись.
Сетевая изоляция (шаблон «только разрешить»): По умолчанию весь сетевой доступ запрещён. Вы должны явно разрешить домены. Пустой список allowedDomains означает отсутствие сетевого доступа. Сетевой трафик маршрутизируется через прокси-серверы, работающие на хосте:
-
Linux: Запросы маршрутизируются через файловую систему по Unix domain socket. Сетевое пространство имён изолированного процесса полностью удаляется, поэтому весь сетевой трафик должен проходить через прокси, работающие на хосте (прослушивающие Unix-сокеты, которые примонтированы в песочницу)
-
macOS: Профиль Seatbelt разрешает связь только с определённым портом localhost. Прокси прослушивают этот порт, создавая контролируемый канал для всего сетевого доступа
-
Windows: Набор машинных фильтров WFP блокирует исходящие соединения, устанавливаемые процессами, работающими под учётной записью
srt-sandbox, за исключением loopback к диапазону портов прокси. Прокси прослушивают внутри этого диапазона, создавая контролируемый канал для всего сетевого доступа. Фильтры не отслеживают изолированный процесс, который устанавливает другой токен на поток перед созданием сокета, а также трафик, который системная служба передаёт от его имени; см. раздел Windows Известные ограничения
Как HTTP/HTTPS (через HTTP-прокси), так и другой TCP-трафик (через SOCKS5-прокси) опосредуются этими прокси, которые применяют ваши списки разрешённых и запрещённых доменов.
Для получения дополнительной информации об изоляции в Claude Code см.:
- Документация по изоляции Claude Code
- Beyond Permission Prompts: Making Claude Code More Secure and Autonomous