Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

Claude Code 2.1.136:当 AI Agent 的安全阈门从‘相信’变成‘验证’

你让 Claude Code 在 auto mode 下跑一个长任务,回来发现它把你的 AWS credentials 写进了日志文件。或者更糟:它在你没看到的一个弹窗里点了 “允许”,然后把一个安全测试脚本推到了生产环境。

这不是假设。Anthropic 自己的数据说,Claude Code 用户手动批准了 93% 的权限提示。人们已经点习惯了。当一个工具每天向你请求几十次批准,你很快就不再看内容了。这就是为什么 2.1.136 里有两个安全改动值得重视:security-test 标签不再自动允许/拒绝,必须人工审批;新增的 hard_deny 让分类器规则可以无条件执行,无视用户意图。

这不是普通的 bug 修复。这是 AI agent 安全模型正在从“信任”偏移向“验证”的一个缩影。

为什么 93% 的批准率是个问题

Anthropic 在介绍 auto mode 时公开了这个数据:用户手动批准了 93% 的权限请求。听起来像是好事 — 用户信任这个工具。但问题在于,当批准率超过 90%,每一次弹窗都在消耗注意力,却没有增加实际安全性。用户在第三次点击 “允许”后就不再看内容了。

为了解决审批疲劳,Claude Code 提供了两个极端选项:

  • 打开沙箱(sandbox)—— 安全但高维护,每个新能力都需要配置
  • 使用 —dangerously-skip-permissions —— 零维护但毫无保护

Auto mode 是 Anthropic 给出的第三条路:用一个基于模型的分类器在后台审查每个操作,阻止任何超出用户请求、指向未识别基础设施或看起来被恶意内容驱动的操作。分类器运行在两个阶段:第一阶是快速单 token 过滤(是/否),第二阶只在第一阶触发时才启动链式思考推理。

但分类器不是人类。它会犯错。Anthropic 自己估计分类器的误拒率约 17% — 即 17% 被阻止的操作其实是安全的。这是一个明确的 trade-off:你在用效率换取安全边界。

2.1.136 的两个关键安全改动

security-test 标签不再自动处理

在之前版本中,带有 security-test 标签的操作会被自动授权或自动拒绝,不需要人工审批。现在这个自动化被彻底移除了:所有 security-test 相关操作都必须经过明确的人工审批。

这是一个重大的信号。安全测试是高风险操作的代表:它可能涉及渗透测试、权限提升、或者在生产环境中执行可能造成损失的命令。让一个自动标签决定这些操作是否执行,等于把高风险决策交给了一个无法负责的机制。移除自动化是正确的选择,但它也意味着你不能再在 auto mode 下无监睬地跑安全扫描任务了。

hard_deny:无条件阻止

新增的 settings.autoMode.hard_deny 是一个强力机制。它允许管理员配置一类分类器规则,这类规则会无条件阻止相关操作,无视用户意图、无视 allow 例外。

Auto mode 的权限模型分为三层:

  • permissions.deny —— 在分类器之前执行,不可覆盖
  • autoMode.soft_deny —— 分类器阻止,但可以被用户明确意图覆盖
  • autoMode.allow —— 例外列表,可以覆盖 soft_deny

hard_deny 是一个新的层级,位于 soft_deny 和 allow 之间:它被分类器阻止,且不接受任何覆盖。用户即使直接要求执行这个操作,如果它触发了 hard_deny 规则,也会被拒绝。

这解决了一个真实问题:在某些组织环境中,有些操作是绝对不能执行的 — 无论用户觉得自己有多么充分的理由。例如 rm -rf /、生产环境部署、敏感数据库写入。过去,这些需要通过 permissions.deny 来配置,但 permissions.deny 运行在分类器之前,不会看到完整的会话上下文。hard_deny 让分类器可以基于完整上下文做出无条件拒绝。

还修了什么

2.1.136 有 52 个 CLI 改动和 2 个系统 prompt 改动。除了安全模型的重大调整,还有几个值得关注的修复:

  • MCP servers 在 VS Code extension、JetBrains plugin 和 Agent SDK 中 /clear 后不再静默消失
  • 多个 MCP server 并发 OAuth 刷新时不再丢失 refresh token
  • 修复了并发 credential write 覆盖新轮转 OAuth token 造成的登录循环
  • plan mode 现在正确阻止文件写入,即使存在匹配的 Edit allow rule

后两者特别值得注意。它们都是 race condition — 多个进程或会话同时操作凭证时的竞争条件。这说明 Claude Code 的用户规模已经到了单机并发都会出问题的地步,而 Anthropic 正在把这个工具从单用户 CLI 向多会话、多插件的生产级平台转化。

六种权限模式,你该用哪个

Claude Code 目前支持六种权限模式:

| 模式 | 什么可以自动执行 | 最适合 | | default | 仅读取 | 初次使用、敏感工作 | | acceptEdits | 读取、文件编辑、常见文件系统命令 | 代码迭代 | | plan | 仅读取(不写文件) | 探索代码库 | | auto | 所有操作,带后台安全检查 | 长任务、减少审批疲劳 | | dontAsk | 仅预先批准的工具 | CI 和脚本 | | bypassPermissions | 所有操作 | 隔离容器和 VM 专用 |

auto 模式是唯一一个在安全与效率之间寻找平衡的选项,但它也是唯一一个依赖模型判断的选项。其他模式都是确定性的:default 总是问,bypassPermissions 总是执行。auto 模式却在你不知道的时候做出了一个概率性判断。

Anthropic 自己的建议是:auto 模式是为那些之前在用 —dangerously-skip-permissions 的人准备的,不是为那些每个提示都仔细审查的人准备的。如果你对高风险基础设施操作保持警惕,手动审批仍然是更安全的选择。

适用场景

需要长时间自主运行的任务

自动化代码迁移、大规模重构、或者需要跑几十个测试用例的场景。这些任务涉及成百上千次文件读写和命令执行,手动批准会完全打断流。auto 模式让这些任务可以无间断运行。

多人协作的团队环境

hard_deny 和 managed settings 允许管理员在组织层面定义绝对不能执行的操作。每个开发者都可以在这个框架内工作,不需要担心某个人的 Claude Code 实例意外删除了生产数据库。

需要审计跟踪的企业场景

auto mode 的每个拒绝都记录在 /permissions 的 Recently denied 标签下。可以用 PreToolUse hooks 和 PermissionDenied hooks 自定义审计逻辑,比如把所有拒绝写入 SIEM 或发送给安全团队。

踩过的坑

分类器不是完美的

17% 的误拒率意味着 auto 模式会阻止一些安全的操作。如果你的工作流重度依赖某个被误拒的模式,你需要在 autoMode.environment 或 autoMode.allow 中添加例外。但添加太多例外会削弱分类器的保护价值。

不要在生产环境用 bypassPermissions

—dangerously-skip-permissions 的命名不是吓人的。它完全禁用了所有权限提示和安全检查,包括对 .git、.claude、.vscode 等保护路径的写入。只有在隔离容器或 VM 中才应该使用。管理员可以通过 managed settings 完全禁用这个模式。

沙箱和权限是两个独立层次

很多人误以为开启了沙箱就不需要配置权限规则。事实上,沙箱只管控 Bash 命令,不管控 Read/Edit 工具。如果你只配置了 sandbox.denyRead 来保护 SSH 密钥,Claude 的 Read 工具仍然可以读取它。需要同时在两个层次配置相同的路径。

记得加 “$defaults”

如果你在 autoMode.allow、soft_deny 或 environment 中设置了自定义规则但忘记包含 “$defaults”,内置的所有规则都会被替换掉。这意味着 force push、数据泄露、curl | bash 等默认阻止规则全部失效。只有当你真的打算完全自己控制规则列表时才应该省略 “$defaults”。

配置示例

一个典型的团队级安全配置:

{
  "defaultMode": "auto",
  "autoMode": {
    "environment": [
      "\$defaults",
      "github.com/my-org",
      "s3://my-org-bucket"
    ],
    "hard_deny": [
      "\$defaults",
      "deploy to production",
      "modify production database",
      "access AWS credentials"
    ],
    "allow": [
      "\$defaults",
      "run tests in CI environment"
    ]
  },
  "permissions": {
    "deny": [
      "Bash(rm -rf /)",
      "Bash(rm -rf ~)",
      "Read(~/.ssh/*)",
      "Read(~/.aws/*)"
    ]
  }
}
# 查看当前生效的分类器配置
claude auto-mode config

# 查看内置默认规则
claude auto-mode defaults

# 让 AI 审查你的自定义规则
claude auto-mode critique

什么时候别用 auto 模式

  • 你在操作含有金融数据、医疗记录或 PII 的代码库 — 分类器的 17% 误拒率不是唯一的问题,更大的风险是它可能错误地允许了某个不应该执行的操作
  • 你的团队没有安全评审流程 — auto 模式不是无人监睬的免费通行证,它是一种需要配置和监睬的权限模型
  • 你只是偶尔用一下 Claude Code — 对于短任务,default 或 acceptEdits 模式的审批负担完全可以接受

总结

Claude Code 2.1.136 的安全改动传达了一个清晰信号:AI agent 不再被视为可以“信任但验证”的工具,而是需要“验证再信任”的系统。security-test 的自动授权被移除是因为高风险操作不应该由任何自动化机制决定。hard_deny 的引入是因为有些边界不应该被用户意图覆盖。

这些改动的意义超出了 Claude Code 本身。它们是整个 AI agent 生态的警示灯:当 agent 被赋予越多自主性,安全模型必须同步收紧。否则我们得到的不是更高效的开发者,而是更多的安全事故。

你的 agent 是在一个有安全边界的沙箱里运行,还是在一个有全部权限的终端里自由行动?这个问题的答案决定了你能不能在生产环境里用它。

GitHub: https://github.com/anthropics/claude-code 文档: https://code.claude.com/docs/en/auto-mode-config

相关文章

Agent 失败时:不会无限循环的恢复模式

Agent 的失败不抛异常。它们产出看起来合理但错误的输出,或者用稍微不同的方式悄悄重试同一个坏方法。把 Agent 包在 try/catch 里是错误的心智模型——Agent 没崩,它只是继续往一个 ...

没有标准答案的 Agent 怎么评测

评测一个 Prompt 已经很难。评测一个在给出答案前要跑十次工具调用的 Agent,是另一个量级的难。能产生正确答案的轨迹很少完全相同。能产生错误答案的轨迹常常一直看起来合理,直到第七步。标准的精确 ...

Agent 护栏:在不阉割 Agent 的前提下

给 Agent 加护栏属于那种简单版本太严苛、谨慎版本太宽松的任务。挡得太狠 Agent 拒绝完全合理的任务;挡得太松,新闻头条自己就写出来了。第一版要么是什么都不肯做的聊天机器人,要么是不该做那件事 ...

Agent Harness:为什么你的模型不是问题所在

LangChain 在 TerminalBench 2.0 上从 30 名开外飙到了第 5 名。他们没有换模型。同一个 LLM。同样的参数。唯一改变的是包裹在模型外面的那层软件——Harness。 ...

Planner-Executor 拆分:什么时候该拆,什么时候该合

第一天,让单个模型同时做规划和执行,看起来很优雅。三个月后,trace 日志会讲一个不同的故事:Prompt 里负责规划的那部分在工具调用上下文中开始漂移,负责执行的那部分开始幻觉出从未被规划过的步骤 ...

Postiz Agent CLI:把 28 个社交平台的发布权交给你的 AI

你写了一个能读 RSS、能总结论文、能生成配图的 AI Agent,结果发现最后一英里卡住了:它没法把内容发出去。 不是技术问题,是生态断层。大多数社交媒体平台只给人类设计 UI,API 文档散落在 ...

用经典编程规则喂饱你的 AI 编码 Agent

用经典编程规则喂饱你的 AI 编码 Agent

AI Coding Agent 写代码的速度远超人类,但它们不天然知道什么代码算是好代码。没有明确约束,Agent 产出的代码在 demo 里看起来功能完整,三个月后在维护追索里看起来一团乱——函数过 ...

工具选择:什么时候该模型挑,什么时候该你挑

会用工具的 Agent 在 demo 里看起来很有力,因为模型在选下一步做什么。它在生产里看起来很脆弱,因为模型在选下一步做什么。可用工具的空间随特性线性增长,随边界情况二次增长——超过大约十二个工具 ...

Claude Code 102 教给学术研究者的五件事

Claude Code 102 教给学术研究者的五件事

2026 年 5 月 11 日,Mushtaq Bilal, PhD 发布了《Claude Code 102 for Academic Researchers》,这是他教程系列的第二篇。第一篇 Cla ...

Dexter:为金融研究而生的自主 Agent

Dexter:为金融研究而生的自主 Agent

金融研究是一个天然适合 AI Agent 的领域——数据公开、步骤可结构化、输出是分析而非行动。但多数通用 Agent 在这个场景里会暴露两个问题:碰到的数据格式太多太杂,每步都要重新理解上下文;缺少 ...

文件驱动的 Agent,不需要构建步骤

周五晚上还在排 pitch deck 格式的投行分析师,并没有在创造 alpha。他们在给数字画框——那些数字早就从 CapIQ 拉出来了,早就在模型里交叉验证过了,早就被 VP 批过了。横在数据和格 ...

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 终于长出手和眼:Peekaboo v3

OpenClaw 之前能接消息、能调 Agent、能把结果送到各个聊天渠道,但缺一双手和眼睛。Agent 在聊天框里给建议容易,要它实际操作桌面上的按钮、菜单、弹窗、输入框,之前没有可靠的本地执行层。 ...