Skip to content

Hooks 里别再冒「Response」:2.1.281 清引导,PermissionRequest 也收紧

CLI 2.1.281 的公开亮点很短:系统提示里 hooks 相关引导去掉了多余的 Response 字样。同一窗口里,2.1.280 已经改了 PermissionRequest 对 agent 型钩子的态度,并给钩子完成事件补了体积字段。写 hooks 的人建议一次对齐,别只升号不改配置。

Hooks 是「到点必跑」的铁律层,和 Skills、MCP 的分工见 MCP、Skills、Hooks 怎么选;和 CLAUDE.md 的边界见 CLAUDE.md 管倾向,Hooks 才是铁律

2.1.281:引导里的 stray「Response」

changelog 写的是:hooks guidance 里去掉 stray Response token。它动的是模型看到的钩子说明,不是你仓库里某段业务文案。

实操含义:

  1. 升级后重开会话再观察钩子相关行为;旧会话仍可能带着旧系统提示缓存。
  2. 若你曾按某篇旧教程,在 hook 输出或示例里刻意塞一个名叫 Response 的字段,以「对齐官方引导」——以当前 CLI 为准,别为了对齐幽灵 token 硬造结构。
  3. 真正决定成败的仍是:钩子命令是否退出成功、stdout/stderr 是否按契约回写、超时是否过短。引导措辞清干净,不会替你修好坏脚本。

社区里有人问「是文档错字还是会触发空跑 hooks」。公开材料只确认引导被清掉;把钩子当契约测一遍比猜内部实现更稳。

PermissionRequest:agent 型钩子不再掺和

2.1.280 起:挂在 PermissionRequest 上的 agent 型钩子不再执行。原因写得很直白——这类钩子的「回答」本来就不能允许或拒绝权限请求。现在会直接报错,并指你去用 commandhttp 型钩子。

对照记:

场景建议
权限弹窗要自动否决 / 放行command 或 http 钩子,按官方契约返回 allow/deny
想让子代理「想想再决定」别挂 PermissionRequest;改流程或用人审
旧配置里塞了 agent 型升级后会报错;删掉或改类型,别指望静默跳过

这是安全面上的收紧:权限闸口只接受能真正拍板的钩子类型。

可观测:钩子输出有多大

同一版还把 钩子输出体积,以及「过大、已落到文件」的数量,写进 hook_execution_complete 这类 OpenTelemetry 事件。你在排「会话突然变慢 / 日志爆了」时,可以先看钩子是不是在往事件里塞巨量 stdout。

搭配建议:

  • 钩子只回短状态;大 diff、大日志写文件,事件里留路径与摘要。
  • UserPromptSubmit 超时提示与 debug 日志会点名是哪条钩子命令超时(同窗口改进)——超时别只怪「网络」。

升级检查清单

  1. claude --version 至少到 2.1.281(PermissionRequest 行为从 2.1.280 起就变了)。
  2. 搜一遍 hooks 配置:PermissionRequest 下有没有 agent 型。
  3. 开一条短会话,故意触发一次权限请求,确认钩子仍按预期 allow/deny。
  4. 若接了 OTel,确认 hook_execution_complete 里能看到输出大小相关字段。

引导措辞会继续变。铁律不变:权限闸口用能拍板的钩子;输出保持短;升级后用真实权限流测一遍。

Claude-cn.org,专注于 Claude Code 中文教程