不到一个月,agent 的权限分类器拦了我 27 次:至少 7 次只是在"看"

2 阅读5分钟

作者:simon · 2026-10-18

我数了一下。

从 2026 年 9 月 18 日到 10 月 13 日,不到一个月,agent 的权限分类器一共拦了我 27 次。

先说结论

  • 27 次,分布在 10 个不同的日子,12 种拦截标签。
  • 其中至少 7 次拦的是只读命令:查账号信息、看机器详情、读文件、grep。
  • 其余的,绝大部分是真的会改东西的操作:改生产 CloudFront 配置、批量删线上页面、部署、停用密钥、改 DNS。
  • agent 每次被拦都是同一个反应:停下来说明,把命令写好交给我,不绕过。

我是怎么数的

我没有记账,是事后从自己的会话记录里数的:

  • 统计工具返回里所有的 denied by the Claude Code auto mode classifier. Reason: [标签];
  • 按每一次工具调用去重;
  • 剔除了 4 条:那是我在一个会话里读另一个会话时,引用到的拦截文字,不是真拦截;
  • 同一时间、同一标签、同一命令的会话副本,合并成一次;
  • 只统计了 9 月 18 日以后的会话,更早的没有查。

标签分布

标签次数
Modify Shared Resources6
Production Deploy6
Cloud Storage Mass Delete4
Interfere With Workloads2
Credential Materialization2
其他 7 种(各 1 次)7

其他 7 种是:Credential Exploration、Secret-Store Writes、Protected-Scope IaC Apply、Blind Apply、DNS / Domain / Cert Changes、Irreversible Local Destruction、Unrequested Commit in a Connected App。

第一类:该拦的,而且拦得有用

批量删线上页面。 10 月 13 日,agent 要把四个下线语言的页面从线上删掉。它事先列出了这几个前缀下的对象:正好 16 个,没有别的。然后命令被拦了(Cloud Storage Mass Delete),它把命令交给我,我手动执行,之后验证了这些地址返回 404、其他页面正常。

改生产的 CloudFront 配置。 9 月下旬到 10 月,同一类动作被拦了好几次(Modify Shared Resources),都是改分发配置、挂一个函数。每次它都把补丁配置准备好,让我在终端里自己跑。

重建 DNS。 10 月 13 日上午,agent 判断"托管区全没了",要新建托管区、重写整套记录。命令被拦(DNS / Domain / Cert Changes),它改成写脚本让我执行;脚本在中途因为"记录已经存在"报错,才发现托管区一直都在,是它判断错了。(完整经过见我另一篇,写账单的那篇。)这一次的拦截,替那个错误的判断多争取了一次人工检查。

第二类:只读也被拦(至少 7 次)

我把 27 次逐条过了一遍,下面 7 次,命令本身只是查询或读文件:

日期标签做的事
9 月 18 日Credential Exploration查询账号信息
9 月 18 日Interfere With Workloads查看被入侵时攻击者那两台机器的详情,留证
10 月 13 日Credential Materialization读本地配置里密钥的前几位(脱敏显示),列出 profile,查当前身份
10 月 13 日Credential Materialization在本地配置里 grep 密钥 ID,看 git 日志,列出 profile
10 月 13 日Interfere With Workloadscurl 取一个公开地址的缓存副本
10 月 13 日Production Deploygrep 读部署脚本里的某一行
10 月 13 日Unrequested Commit in a Connected App读我已登录的发文平台的编辑页结构

其中两条碰的是凭证文件。我觉得这两条先问一句,是有道理的:它们读的是 .env,哪怕只是前几位。

其余 5 条,我自己的判断是偏保守。尤其是表里倒数第二条:一条 grep,被贴上了"生产部署"的标签。 标签和命令对不上。

另外有一条值得单独说:9 月 18 日我在应急取证,攻击者的机器还没处理完,"看一眼实例详情"也被拦了一次。应急的时候,每多一次中断,就是多一次要我停下来手动执行。

agent 被拦之后怎么做

27 次里,我看到的反应是一致的:

  1. 停下,说明被拦的是什么、标签是什么;
  2. 不换个写法再试;
  3. 把能直接粘贴的命令交给我,让我用 ! 前缀在终端里自己执行;
  4. 之后验证结果。

拦截信息里自带了一句话:

To allow this type of action in the future, the user can add a permission rule for Bash to their settings.

意思是:如果你认定某类操作可以放行,可以去设置里加一条规则。

如果是我来配

这几条来自上面的数据,是建议,不是官方做法;具体的规则语法,请以官方文档为准,我这次没有去核对。

  • 只读类的命令(describe、list、get、grep、cat 之类):可以考虑放行。这是 27 次里能省掉 7 次的部分。
  • 会改东西的(删、改分发配置、部署、改 DNS、停用密钥):继续留着拦截。它们是 27 次里的大头,也是出事时代价最大的。
  • 凭证文件:读之前问一句,我觉得合理。
  • 自己做记录:我是事后从会话记录里数的。如果能在被拦时顺手记一笔,复盘会容易得多。

局限

  • 只统计了 9 月 18 日以后的会话,更早的没有数据。
  • "只读 / 会改"是我逐条看命令后的归类,不是分类器的结论;其中几条(比如几次批量操作 S3 对象的)我没有逐条核对命令全文,没有算进"只读"。
  • 分类器内部怎么判断,我不知道,只能看到标签。
  • 我没有统计"被拦后我手动执行了几次",也没有统计每次耽误了多久。

参考与出处

  • 作者本机 2026-09-18 至 2026-10-13 的 Claude Code 会话记录(统计方法与逐条表见 notes/2026-10-15-classifier-blocks.md)。
  • 拦截信息中的一句英文引用,来自会话记录里工具返回的原文。