SuperAPI AI 工具集

claude-hooks-reference-2026

编程与开发

查看项目

更新于 10-15 22:40

技能介绍

用途:本资料是 Claude Code 钩子(Hooks)系统的完整参考,钩子可在 Claude Code 事件发生时执行自定义命令或提示,用于自动化、校验、格式化与安全控制。

主要能力:覆盖全部钩子事件,包括 PreToolUse(工具执行前,支持匹配器,用于校验与阻断)、PermissionRequest(权限请求时,自动批准策略)、PostToolUse(工具成功执行后,格式化与 lint)、Notification(需要关注时,自定义通知)、UserPromptSubmit(提交提示时,输入校验)、Stop(响应结束,清理与最终检查)、SubagentStop(子代理完成,结果校验)、PreCompact(上下文压缩前,状态备份)、SessionStart(会话开始,环境设置)、SessionEnd(会话结束,清理与持久化)。

配置位置与优先级(从高到低):Managed 的 managed-settings.json(企业)、Local 的 .claude/settings.local.json(gitignore)、Project 的 .claude/settings.json(git 共享)、User 的 ~/.claude/settings.json(个人)、Plugin 的 hooks.json 或 frontmatter、Capability 的 Skill/Command/Agent frontmatter。

钩子结构字段:matcher(工具事件用,区分大小写的正则)、type(command 或 prompt,必填)、command(命令类型用 Bash 命令)、prompt(提示类型用 LLM 提示)、timeout(秒,默认 60)、once(布尔,仅 Skills/Commands 每会话运行一次)。匹配器示例:Write、Edit|Write、Notebook.、mcp__.__write.、 或空字符串匹配全部工具;不适用于 UserPromptSubmit、Stop、SubagentStop、PreCompact、SessionStart、SessionEnd。

输入输出与退出码:输入为 stdin 的 JSON,含 session_id、tool_name、tool_input、tool_use_id、permission_mode。退出码 0 表示成功继续,2 表示阻断错误并显示 stderr,其他为非阻断错误(verbose 模式显示 stderr)。高级控制可向 stdout 输出 JSON:PreToolUse 响应含 decision(allow、block、ask)、reason、updatedInput;Stop/SubagentStop 响应含 decision(continue、stop)、reason、additionalContext;continue: false 强制停止。

提示型钩子:仅用于 Stop/SubagentStop,由 LLM 评估决策,适合上下文感知校验与复杂决策逻辑。

环境变量:CLAUDE_PROJECT_DIR(项目根绝对路径,所有钩子)、CLAUDE_CODE_REMOTE(远程为 true,本地为空,所有钩子)、CLAUDE_ENV_FILE(持久化环境变量路径,仅 SessionStart)、CLAUDE_PLUGIN_ROOT(插件目录绝对路径,插件钩子)。

执行细节:所有匹配钩子并行运行,相同命令去重,默认超时 60 秒,各来源钩子一起执行。

最佳实践:使用 $CLAUDE_PROJECT_DIR 处理项目相对路径,引用 shell 变量以处理空格,在脚本中校验/清理 JSON 输入,复杂控制逻辑用 JSON 输出,实现日志便于调试,生产前在安全环境测试,上下文感知决策用提示型钩子,确定性规则用 bash 钩子,保持钩子快速(超时 60 秒),Skills/Commands 的一次性设置用 once: true。

限制:资料未提供收费、价格、平台支持范围等信息;匹配器不适用于部分事件;提示型钩子仅限 Stop/SubagentStop。