文档
推荐给好友,福利领不停!好友同步开通最高 1000 万词元额度 · 后续消费分佣最高 30%。
+50万 Token生成链接

沙盒 (Sandboxing)

把 CrabCode 跑在系统沙盒里,限制它能写哪些文件、能联哪些网。

是什么

沙盒是 OS 级别的进程隔离。开启后,CrabCode 即使误跑了恶意命令,也无法越过允许的文件/网络边界 —— 比 app 层的权限确认更强一层保险。

平台支持:

平台状态
macOS支持
Linux支持(需装相应工具)
Windows 10/11支持(基于 Windows Sandbox 容器,首次使用时引导安装)
WSL2支持
WSL1不支持

什么时候用得上

  • 跑陌生仓库的脚本前,先 /sandbox 打开
  • 共享 CI runner / 多租户机器上长期开启
  • 不信任的 MCP server 调用文件操作时

开启与配置

进入交互菜单:

shell
/sandbox
/sandbox

或直接在 settings.json 设置:

json
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["npm run test:*"],
    "network": {
      "allowedDomains": ["api.github.com", "*.npmjs.org"],
      "allowUnixSockets": ["/var/run/docker.sock"]
    }
  }
}
{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["npm run test:*"],
    "network": {
      "allowedDomains": ["api.github.com", "*.npmjs.org"],
      "allowUnixSockets": ["/var/run/docker.sock"]
    }
  }
}

字段说明:

  • enabled — 总开关。true 时所有 Bash 工具调用走沙盒
  • autoAllowBashIfSandboxed — 沙盒开启时自动放行 Bash 工具的权限确认(已有 OS 边界兜底)
  • excludedCommands — 这些命令模式不进沙盒(如本机才能跑的开发服务)。也可用 /sandbox exclude "<pattern>" 增量加
  • network.allowedDomains — 网络白名单。按域名匹配;纯 IP 直连不会被覆盖
  • network.allowUnixSockets — Unix socket 白名单

企业可在 policy 设置里加 sandbox.enabledPlatforms(如 ["macos"])把沙盒限定在特定平台启用。

默认放行

沙盒开启时,无论是否配 override,下列操作默认允许:

  • 读、写当前工作目录及 additionalDirectories
  • 读系统二进制 / 标准库
  • 读本进程临时目录
  • 访问 acosmi 网关与你配置的 MCP server

其余写、网络默认拒。

排除某个命令

某些命令必须跑在主机环境(比如启 GUI 调试工具):

shell
/sandbox exclude "vite preview"
/sandbox exclude "vite preview"

会写入项目本地 settings.local.jsonsandbox.excludedCommands

限制与注意

  • 依赖检查:首次启用前 /sandbox 会扫一遍依赖工具是否齐全;缺啥会给出安装提示
  • macOS 部分系统调用(如 GUI 自动化)即便沙盒下也能逃逸 —— 不要把沙盒当唯一防线
  • Linux 不同发行版需要的工具不同,菜单里会列出
  • Windows Sandbox 是 Windows 10 Pro/Enterprise 起的可选功能;首次启用时 CrabCode 会引导你打开
  • 权限模式与沙盒互相独立:app 层的 bypassPermissions 不影响 OS 层的沙盒(沙盒该拦还拦)
  • WSL 仅支持 WSL2;WSL1 无内核能力

相关