Git worktrees are not an isolation boundary for coding agents
4 hours ago
- Git工作树与父仓库共享引用、配置、存储和钩子,这使得它们对于并行编码代理来说不安全。
- 工作树中的代理可以安装钩子,这些钩子在主机上执行,重写提交作者,或修改共享的引用和存储。
- 工作树只隔离HEAD、索引和工作目录,而不隔离配置、钩子、引用或存储。
- 像每工作树配置或hooksPath这样的缓解措施是无效的,因为它们依赖于代理自愿选择启用。
- 使用--shared的git克隆为引用、配置、存储和钩子提供了真正的隔离,且磁盘成本与工作树相同。
- 本地克隆硬链接对象并仅增加工作树大小,使其与工作树一样快速且廉价。
- 工作树仅适用于单用户、受监督的使用;对于不协调的代理,克隆是必要的。
- 使用--shared克隆可以避免诸如分支冲突、钩子执行以及代理之间的存储干扰等陷阱。