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

作者: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 Resources 6
Production Deploy 6
Cloud Storage Mass Delete 4
Interfere With Workloads 2
Credential Materialization 2
其他 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 Workloads curl 取一个公开地址的缓存副本
10 月 13 日 Production Deploy grep 读部署脚本里的某一行
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)。
  • 拦截信息中的一句英文引用,来自会话记录里工具返回的原文。
相关推荐
Morning的Tech1 小时前
LangGraph 的 Swarm 多智能体机制
人工智能·agent
用户3134672143541 小时前
learn-claude-code笔记4: Hooks — 挂在循环上,不写进循环里
llm·agent
lucas_AI2 小时前
Agent 工具箱越大越难选?Tracer 砍掉八成工具 schema,选得反而更准
llm·agent
学IT的周星星2 小时前
记忆系统:让 Agent 记住你是谁、上次聊到哪
运维·服务器·人工智能·windows·大模型·llm·agent
yuanyxh3 小时前
我的工作流
agent·claude·deepseek
badhope3 小时前
AI Agent安全治理实战:从API密钥泄露到沙箱隔离的完整防线
后端·llm·agent
武子康3 小时前
旧工具结果写进新回合:两次消费之间的打断窗口
人工智能·后端·agent
许雪里4 小时前
Agent 记忆架构设计:原理 × 业界三大范式 × XXL-AI 落地实践
后端·llm·agent
hpoenixf4 小时前
如何给投研 Agent 配上 Subagent:从上下文隔离到专业化协作
agent