沙盒 (Sandboxing)
把 CrabCode 跑在系统沙盒里,限制它能写哪些文件、能联哪些网。
是什么
沙盒是 OS 级别的进程隔离。开启后,CrabCode 即使误跑了恶意命令,也无法越过允许的文件/网络边界 —— 比 app 层的权限确认更强一层保险。
平台支持:
| 平台 | 状态 |
|---|---|
| macOS | 支持 |
| Linux | 支持(需装相应工具) |
| Windows 10/11 | 支持(基于 Windows Sandbox 容器,首次使用时引导安装) |
| WSL2 | 支持 |
| WSL1 | 不支持 |
什么时候用得上
- 跑陌生仓库的脚本前,先
/sandbox打开 - 共享 CI runner / 多租户机器上长期开启
- 不信任的 MCP server 调用文件操作时
开启与配置
进入交互菜单:
/sandbox/sandbox或直接在 settings.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 调试工具):
/sandbox exclude "vite preview"/sandbox exclude "vite preview"会写入项目本地 settings.local.json 的 sandbox.excludedCommands。
限制与注意
- 依赖检查:首次启用前
/sandbox会扫一遍依赖工具是否齐全;缺啥会给出安装提示 - macOS 部分系统调用(如 GUI 自动化)即便沙盒下也能逃逸 —— 不要把沙盒当唯一防线
- Linux 不同发行版需要的工具不同,菜单里会列出
- Windows Sandbox 是 Windows 10 Pro/Enterprise 起的可选功能;首次启用时 CrabCode 会引导你打开
- 权限模式与沙盒互相独立:app 层的
bypassPermissions不影响 OS 层的沙盒(沙盒该拦还拦) - WSL 仅支持 WSL2;WSL1 无内核能力