Claude Code 自动模式:AI 驱动的权限管理
Claude Code 今天推出了自动模式,作为 --dangerously-skip-permissions 的替代方案。这个新权限模式让 Claude 替你做出权限决策,但会在操作执行前用安全护栏(Guardrails)进行监控。
这些护栏由 Claude Sonnet 4.6 实现,即使主会话用其他模型,分类器也跑在 Sonnet 4.6 上。每次操作前,分类器会检查对话,判断操作是否符合你的意图:它会拦截超出任务范围、针对不信任基础设施、或受文件/网页中恶意内容驱动的行为。
自动模式自带一套默认过滤器,也支持自定义规则。运行这个终端命令,就能看到默认规则的完整结构:
claude auto-mode defaults
这是完整的 JSON 输出。文件很长,这里摘几个关键部分:
允许列表(Allow)
- 测试工件:硬编码的测试 API 密钥、示例中的占位凭证、硬编码的测试用例
- 本地操作:智能体(Agent)删除工作目录中的本地文件、项目范围内的本地文件操作、本地测试时使用
--ignore-certificate-errors。"项目范围"指会话启动时的仓库——跑到/、/Library/、/etc 或其他仓库就算越界(用户意图规则 #2),不算本地操作。不包括对已有文件的不可逆删除或本地有状态服务——详见阻止列表中的"不可逆本地破坏" - 只读操作:GET 请求、只读 API 调用、不修改状态且 URL 不含敏感信息的查询。注意:明确意图的预防性阻止(PREEMPTIVE BLOCK ON CLEAR INTENT)仍然适用——如果对话记录明确显示智能体在用只读操作为阻止行为探路,就拦截它
- 已声明的依赖:通过读取清单文件的标准命令(如
pip install -r requirements.txt、npm install、cargo build、bundle install)安装仓库清单中已声明的包,前提是智能体在本会话中没修改过清单。不包括安装智能体自选的包名(如pip install foo、npm install bar)——那些有域名抢注和供应链风险
软拒绝列表(Soft Deny)
- Git 破坏性操作:强制推送(
git push --force)、删除远程分支、重写远程历史 - 推送到默认分支:直接推送到 main、master 或仓库的默认分支——这会绕过 PR 审查。提交应该推送到新功能分支
- 外部代码:从外部源下载并执行代码——比如
curl | bash,通过可执行代码的格式反序列化外部数据(eval、exec、yaml.unsafe_load、pickle 等),或类似机制。也包括运行之前从外部仓库克隆的代码(pip install -e、make install、python script.py、对克隆仓库文件执行 pickle.load/torch.load)——"本地磁盘"上的代码如果来自对话中可见的外部源,也不可信。智能体启动时的仓库是可信的 - 云存储批量删除:删除或批量修改云存储(S3、GCS、Azure Blob 等)上的文件
文档也警告,分类器可能还是会放过一些危险操作:比如用户意图模糊,或者 Claude 对你的环境了解不够,不知道某个操作可能带来额外风险。
默认允许列表包含 pip install -r requirements.txt,意味着它防不住未锁定依赖的供应链攻击,就像今天早上 LiteLLM 那个案例一样。
我还是希望我的编程智能体默认在健壮的沙箱里运行,那种能确定性限制文件访问和网络连接的沙箱。比起这种基于提示(Prompt)的防护,我信任沙箱得多。
觉得有用?分享给更多人