Справочник по sandbox.json
Настройте поведение песочницы с помощью файла sandbox.json, чтобы управлять сетевым доступом, путями в файловой системе и другими параметрами.
Расположение файлов
Поместите sandbox.json в одно или оба следующих расположения:
| Расположение | Область действия | Приоритет |
|---|---|---|
~/.cursor/sandbox.json | Все рабочие области (для пользователя) | Низкий |
<workspace>/.cursor/sandbox.json | Одна рабочая область (для ��епозитория) | Высокий |
Оба файла необязательны. Если присутствуют оба файла, их настройки объединяются, при этом приоритет имеют настройки для репозитория. Политики администраторов команд Enterprise и встроенные правила безопасности Cursor применяются поверх этих настроек и не могут быть ослаблены ни одним из файлов.
Поля верхнего уровня
Все поля необязательны. Для отсутствующих полей используются указанные ниже значения по умолчанию.
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
type | string | "workspace_readwrite" | Режим песочницы. "workspace_readwrite" предоставляет доступ к чтению и записи в рабочей области. "workspace_readonly" разрешает только чтение. "insecure_none" полностью отключает песочницу. |
additionalReadwritePaths | string[] | [] | Дополнительные пути, к которым Agent может обращаться для чтения и записи. Применяется только при значении type "workspace_readwrite". |
additionalReadonlyPaths | string[] | [] | Дополнительные пути, к которым Agent может обращаться для чтения. |
disableTmpWrite | boolean | false | При значении true отключает доступ на запись по умолчанию к /tmp и системным временным каталогам. |
enableSharedBuildCache | boolean | false | Перенаправляет кэши инструментов сборки (npm, cargo, pip и т. д.) в общий временный каталог, чтобы команды в песочнице и вне её использовали одни и те же кэши. |
object networkPolicy
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
default | "allow" | "deny" | "deny" |
allow | string[] | [] | Разрешённые паттерны. Поддерживаются точные домены, символы подстановки и нотация CIDR. |
deny | string[] | [] | Паттерны для запрета. Имеют наивысший приоритет и всегда блокируют, даже если паттерн также указан в allow. |
Синтаксис шаблонов сети
Массивы allow и deny поддерживают три формата шаблонов:
| Формат | Пример | Соответствует |
|---|---|---|
| Точный домен | "registry.npmjs.org" | Только этому хосту |
| Подстановочный знак | "*.example.com" | Любому поддомену example.com, включая сам example.com |
| CIDR | "10.0.0.0/8" | Любому IP-адресу в этом диапазоне |
Основные правила:
denyвсегда имеет приоритет надallow. Если хост соответствует обоим спискам, он блокируется.- Приватные адреса RFC 1918 (
10.x,172.16.x,192.168.x,127.x) и конечные точки метаданных облачных сервисов (169.254.169.254) по умолчанию блокируются для предотвращения SSRF. - Приватные IPv6-адреса (
::1,fe80::/10,fc00::/7) также блокируются. - Пути URL игнорируются; сопоставление выполняется только по домену или IP-адресу.
Как объединяются политики
При наличии нескольких источников политики объединяются в порядке приоритета:
per-user < per-repo < team-admin < hardcoded(низший) (высший)Правила объединения:
- Пути (
additionalReadwritePaths,additionalReadonlyPaths): объединяются из всех источников. - Списки разрешённых сетевых адресов: объединяются, если не задан allowlist администратора команды; в этом случае он заменяет объединённый список.
- Списки запрещённых сетевых адресов: всегда объединяются.
networkPolicy.default:"deny"имеет приоритет над"allow".- Ограничивающие булевы значения (
disableTmpWrite,networkPolicyStrict): приоритет имеетtrue.
Защищённые пути
Некоторые пути всегда защищены от записи независимо от конфигурации sandbox.json:
.cursor/*.json,.cursor/**/*.json,.cursor/.workspace-trusted.claude/*.json,.claude/**/*.json.vscode/**.code-workspace.git/hooks/**,.git/config,.git/info/attributes.cursorignore
В следующие подкаталоги .cursor можно записывать: rules/, commands/, worktrees/, skills/, agents/.
Пути к SSL-сертификатам и ~/.ssh всегда доступны для чтения.
Переменные среды
Помимо указанной выше конфигурации, Cursor передаёт переменные среды изолированным дочерним процессам, включая CURSOR_SANDBOX, CURSOR_ORIG_UID и CURSOR_ORIG_GID. Полный список и рекомендации по использованию см. в разделе Режимы запуска: переменные среды.
Примеры
Разрешить доступ к определённым доменам
{ "networkPolicy": { "default": "deny", "allow": [ "registry.npmjs.org", "pypi.org", "*.githubusercontent.com" ] }}Сетевой трафик по умолчанию запрещён. Доступны только перечисленные домены.
Разрешить весь сетевой доступ
{ "networkPolicy": { "default": "allow" }}В песочнице разрешён весь исходящий сетевой трафик.
Веб-проект с полным стеком
Проект, в котором Agent должен устанавливать пакеты, загружать образы контейнеров, обращаться к базе данных в локальной сети и читать общий репозиторий design-tokens:
{ "networkPolicy": { "default": "deny", "allow": [ "registry.npmjs.org", "registry.yarnpkg.com", "pypi.org", "files.pythonhosted.org", "*.docker.io", "ghcr.io", "*.googleapis.com" ], "deny": [ "*.internal.corp.example.com" ] }, "additionalReadwritePaths": [ "/home/me/.docker" ], "additionalReadonlyPaths": [ "/opt/shared/design-tokens" ], "enableSharedBuildCache": true}Эта конфигурация позволяет Agent:
- Устанавливать пакеты npm/pip и загружать образы Docker.
- Обращаться к API Google Cloud.
- Блокировать доступ к внутренним корпоративным сервисам.
- Записывать данные в
~/.dockerдля работы с контейнерами. - Читать общий каталог design-tokens (но не изменять его).
- Совместно использовать кэши npm/pip/cargo между изолированными и неизолированными запусками.