Skip to main content

Command Palette

Search for a command to run...

开始使用

sandbox.json 参考

通过 sandbox.json 文件配置 sandbox 的行为,以控制网络访问、文件系统路径等。

文件位置

将 sandbox.json 放在以下一个或两个位置:

位置适用范围优先级
~/.cursor/sandbox.json所有工作区 (per-user)较低
<workspace>/.cursor/sandbox.json单个工作区 (per-repo)较高

两个文件均可选。两者同时存在时会合并,并以 per-repo 设置为准。企业版团队 团队管理员 策略和 Cherri Code 硬编码的安全规则优先于这些设置,且无法通过任一文件削弱。

顶层字段

所有字段均为可选。未指定的字段将使用下方所示的默认值。

字段类型默认值描述
typestring"workspace_readwrite"沙盒模式。"workspace_readwrite" 允许读写工作区。"workspace_readonly" 限制为只读。"insecure_none" 会完全禁用沙盒。
additionalReadwritePathsstring[][]智能体可读写的额外路径。仅当 type 为 "workspace_readwrite" 时生效。
additionalReadonlyPathsstring[][]智能体可读取的额外路径。
disableTmpWritebooleanfalse设为 true 时,移除对 /tmp 和系统临时目录的默认写入权限。
enableSharedBuildCachebooleanfalse将构建工具缓存 (npm、cargo、pip 等) 重定向到共享临时目录,使沙盒内外的命令共享同一缓存。

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 地址

关键规则:

  • 拒绝规则始终优先于允许规则。如果主机同时匹配两个列表,将被阻止。
  • 私有/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  <  硬编码(最低)                                 (最高)

合并规则:

  • 路径 (additionalReadwritePaths, additionalReadonlyPaths):合并所有来源中的路径。
  • 网络允许列表:合并所有来源中的列表;若存在团队管理员允许列表,则以其为准。
  • 网络拒绝列表:始终合并所有来源中的列表。
  • 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 始终可读取。

环境变量

除上述配置外,Cherri Code 还会向沙盒中的子进程注入环境变量,包括 CURSOR_SANDBOX、CURSOR_ORIG_UID 和 CURSOR_ORIG_GID。完整列表及使用说明请参阅运行模式:环境变量。

示例

允许特定域名

{  "networkPolicy": {    "default": "deny",    "allow": [      "registry.npmjs.org",      "pypi.org",      "*.githubusercontent.com"    ]  }}

默认禁止网络访问。仅可访问列出的域名。

允许所有网络访问

{  "networkPolicy": {    "default": "allow"  }}

沙盒内允许所有出站网络通信。

全栈 Web 项目

智能体需要安装软件包、拉取容器镜像、访问本地网络中的数据库,并读取共享的 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}

此配置允许智能体:

  • 安装 npm/pip 软件包并拉取 Docker 镜像。
  • 调用 Google Cloud API。
  • 禁止访问公司内部服务。
  • 为容器操作写入 ~/.docker。
  • 读取 (但不能修改) 共享的 design-tokens 目录。
  • 在沙盒运行和非沙盒运行之间共享 npm/pip/cargo 缓存。