用途:为 Claude Code 构建钩子,即在智能体生命周期事件上执行的 shell 命令,用于实现确定性的自动化行为。资料强调确定性行为依赖钩子,提示词无法保证执行。
主要能力:按自动化目标选择事件类型。PreToolUse 可在执行前拦截、校验、阻止或修改参数;PermissionRequest 控制权限弹窗,自动批准或拒绝;PostToolUse 在完成后格式化、lint、添加上下文;SessionStart 与 UserPromptSubmit 在会话边界注入上下文;Stop 与 SubagentStop 评估任务完成情况。区分阻塞型(退出码 2)与仅观察型事件。
配置:钩子配置集中在 settings.json,分用户级 ~/.claude/settings.json、项目级 .claude/settings.json、本地级 .claude/settings.local.json,优先级为本地 > 项目 > 用户。
实现方式:command 类型用于校验、格式化、规则,超时 60 秒,确定性且快速;prompt 类型用于复杂评估与 LLM 判断,超时 30 秒,仅适用于 Stop 和 SubagentStop 事件,由 Haiku 提供快速评估。命令钩子通过 JSON stdin 接收输入,返回退出码与可选 JSON stdout;prompt 钩子响应结构为 {"decision": "approve"|"block", "reason": "..."}。退出码 2 阻止操作,stderr 传给 Claude;退出码 1 也会阻止(已知问题 #4809)。脚本要求 Python 3.14+ 与严格类型。
适用场景:需要确定性拦截、权限控制、自动格式化或任务完成判断的 Claude Code 工作流。
限制:prompt 类型仅限 Stop 与 SubagentStop;部分事件仅可观察不可阻塞;存在已知退出码问题与平台差异,需参考 troubleshooting。具体安装命令与更多细节资料暂未提供。