沙箱到底包住了什么
@bridgelab_jp 一句话点出常见误解:Claude Code 的 /sandbox 隔离的只有 Bash,编辑工具、MCP 和 hooks 都在主机上运行。
这和官方 Sandboxing 文档 一致。文档开头就写:沙箱只覆盖 shell 命令(Bash、PowerShell、Monitor 及其启动的进程),并专门列了「在沙箱外运行的东西」:
- 内置文件和网页工具:Read、Edit、Write、WebFetch、WebSearch 走的是权限规则。文档特别强调,沙箱的
denyRead挡不住 Read 工具,allowedDomains也限制不了 WebFetch。 - Claude Code 启动的其他进程:命令型 hooks、本地 MCP server、插件 monitor、LSP server,以及状态栏命令、
apiKeyHelper这类辅助命令,以你的完整权限运行。 - 你自己在
!提示符下敲的命令,大多数会话里也不进沙箱;写进excludedCommands的命令同样不进。
对应的防护怎么配
- 文件工具靠权限规则:想让 Claude 读不到
.env、SSH 密钥,要写Read(...)的 deny 规则,不能只靠沙箱的denyRead。 - 网页抓取靠 WebFetch 规则:用
WebFetch(domain:...)限定可访问的域名。 - hooks 和 MCP 先审再装:它们在沙箱外跑,等于在你的账号下执行任意代码。安装别人的配置包、插件前,先看 hooks 脚本和 MCP 启动命令。
excludedCommands尽量窄:文档提醒,像docker *这样的宽泛条目会让整个工具绕开沙箱。- 好消息:文档说明沙箱内的命令不能改写
.claude设置、.mcp.json、.claude/hooks等配置文件,防止命令给自己加权限或塞进一个在沙箱外运行的 hook。
小结
沙箱是 shell 命令的一道墙,不是整个 Claude Code 的墙。文件工具、网页工具、hooks、MCP 各有各的防线,要分别配置。
如果你想把 Claude Code 放在一台常开、整机独享的新加坡 Mac mini 上长期运行,可以了解 Zumac.Ai,咨询 Telegram @singatao。
