首页/文章/Claude Code worktree 只隔离文件编辑,不是安全沙箱:cp 和重定向照样能写回主目录

Claude Code worktree 只隔离文件编辑,不是安全沙箱:cp 和重定向照样能写回主目录

· Zumac.Ai

帖子说了什么

@Diegocp01 分享了一个并行工作的常用做法:在两个终端里分别运行 claude --worktree ui 和 claude --worktree bugfix,每个会话有自己的一份文件和分支,互不覆盖,合并前再审一遍。他特意补了一句:worktree 不是安全沙箱,出处是 Claude Code 官方文档。

官方文档怎么说

我们去看了官方的 worktree 文档。会话在 worktree 里运行时,Claude Code 会做四项检查:

  • 拦截目标路径在主检出目录里的 Edit、Write 等文件编辑;
  • 拦截工作目录落在主检出目录(或无法确认不在)的命令;
  • 拦截用 git -C、--git-dir、GIT_DIR 等方式把 git 指回主目录的命令;
  • 命令文本无法确认 git 只在 worktree 里运行时,直接拒绝。

但文档也写得很清楚:这些检查只看编辑目标路径、命令所在目录和命令文本,不追踪 shell 命令实际写了哪些文件。所以一条不调用 git、直接用 cp 或 shell 重定向(>)写进主检出目录的命令,不会被隔离检查拦下,它只按你的权限和沙箱设置来处理。

换句话说,worktree 的作用是「防止并行会话互相踩文件」,不是「防止 Agent 碰到工作区以外的东西」。你的 ~/.ssh、.env、别的项目目录,worktree 一概不管。

落地做法

  1. 把 worktree 当作协作工具。 用它分开并行任务,不要因为开了 worktree 就放宽权限。
  2. 安全边界交给权限和沙箱。 敏感路径(.env、凭证目录、主检出目录)写进 deny 规则;无人值守任务开沙箱,并限制可写路径。
  3. 合并前看 diff,也看主目录。 跑完一轮后在主检出目录执行 git status,确认没有被「绕路」写进来的改动。
  4. 先信任工作区。 文档提到交互式 --worktree 需要先接受工作区信任;而 claude -p --worktree 会跳过信任检查,脚本里用要格外小心。
  5. 保持最新版本。 2.1.309 还修了几种隔离检查本该拒绝却放行的命令写法,升级后复测你依赖的规则。

小结

worktree 解决的是「并行不打架」,安全靠权限、沙箱和你自己的检查。两件事分开想,就不会把协作工具当成防护墙。

来源

Zumac.Ai 新加坡 Mac mini M6,整机独享,¥999/月起,联系 Telegram @singatao。
查看方案与费用 · 帮助中心

返回首页 · 更多文章

Telegram 客服