Claude Code 现在会拦截破坏性的 Git 命令

Claude Code 最近新增了一项安全功能。它现在会在自动模式下拦截破坏性的 git 命令。

几个月前,一个 AI agent 差点删掉了我的工作成果。我让它查看旧代码,结果它运行了 git reset --hard。这个命令抹去了我所有未提交的更改。我损失了一整天的工作量。

从那时起,我手动在设置中添加了拒绝规则(deny rules)。我想阻止像 git resetgit clean 这样的命令在未经我直接许可的情况下运行。

现在,Claude Code 会自动执行此操作。它使用安全分类器(safety classifier)来推测你的意图。如果它认为你并没有要求丢弃工作成果,它就会拦截该命令。

起初,我考虑过删除我的手动规则。既然工具已经帮你做了,为什么还要额外费力呢?但随后我意识到为什么必须保留它们。

这项新的安全功能是一种推理。它是一个试图猜测你意图的模型。模型可能会出错。如果模型不可用,系统可能会失效或产生误判。

我的手动规则则不同。它们是确定性的。规则不会进行猜测。它要么匹配该命令,要么不匹配。这是一条不会随意图而改变的硬性界限。

我现在使用三层防御:

• 用于意图识别的分类器。它理解你的目标。 • 用于确保确定性的手动拒绝规则。它们为特定命令提供了硬性保障。 • 用于隔离的沙箱。它将 agent 限制在你的项目文件夹内。

新的默认设置很棒,但它并不能覆盖所有情况。它无法阻止 rm -rf。它无法阻止数据库清空。它也无法阻止向主分支进行强制推送。

不要仅仅因为工具增加了新的默认设置就删除你的自定义安全规则。把新的默认设置当作审计你现有配置的一个契机。保留你的规则作为备份,并利用多余的时间去弥补工具未能覆盖的漏洞。

纵深防御(Defense in depth)的核心在于堆叠层级。最安全的系统是那种通过三种不同的检查来拒绝错误,而不是仅靠一种检查的系统。

来源:https://code.claude.com/docs/en/changelog

可选学习社区:https://t.me/GyaanSetuAi