Skip to main content

Command Palette

Search for a command to run...

Начало работы

Справочник по sandbox.json

Настройте поведение песочницы с помощью файла sandbox.json, чтобы управлять сетевым доступом, путями в файловой системе и другими параметрами.

Расположение файлов

Поместите sandbox.json в одно или оба следующих расположения:

РасположениеОбласть действияПриоритет
~/.cursor/sandbox.jsonВсе рабочие области (для пользователя)Низкий
<workspace>/.cursor/sandbox.jsonОдна рабочая область (для ��епозитория)Высокий

Оба файла необязательны. Если присутствуют оба файла, их настройки объединяются, при этом приоритет имеют настройки для репозитория. Политики администраторов команд Enterprise и встроенные правила безопасности Cursor применяются поверх этих настроек и не могут быть ослаблены ни одним из файлов.

Поля верхнего уровня

Все поля необязательны. Для отсутствующих полей используются указанные ниже значения по умолчанию.

ПолеТипПо умолчаниюОписание
typestring"workspace_readwrite"Режим песочницы. "workspace_readwrite" предоставляет доступ к чтению и записи в рабочей области. "workspace_readonly" разрешает только чтение. "insecure_none" полностью отключает песочницу.
additionalReadwritePathsstring[][]Дополнительные пути, к которым Agent может обращаться для чтения и записи. Применяется только при значении type "workspace_readwrite".
additionalReadonlyPathsstring[][]Дополнительные пути, к которым Agent может обращаться для чтения.
disableTmpWritebooleanfalseПри значении true отключает доступ на запись по умолчанию к /tmp и системным временным каталогам.
enableSharedBuildCachebooleanfalseПеренаправляет кэши инструментов сборки (npm, cargo, pip и т. д.) в общий временный каталог, чтобы команды в песочнице и вне её использовали одни и те же кэши.

object networkPolicy

ПолеТипПо умолчаниюОписание
default"allow""deny""deny"
allowstring[][]Разрешённые паттерны. Поддерживаются точные домены, символы подстановки и нотация CIDR.
denystring[][]Паттерны для запрета. Имеют наивысший приоритет и всегда блокируют, даже если паттерн также указан в 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 между изолированными и неизолированными запусками.