tool_name 匹配的正则表达式) 来筛选会触发你的钩子的工具调用。
PreToolUse
示例 — 阻止危险命令:
src/ 之外的写入操作进行确认:
使用一个脚本来检查工具输入并返回决策:
hookSpecificOutput.updatedInput 打印到 stdout,透明地重写工具输入 (请参阅输出格式) 。例如,一个将 shell 命令通过包装器转发的钩子脚本:
PostToolUse
示例——记录所有 shell 命令:
PermissionRequest
示例 — 自动批准 git 命令:
UserPromptSubmit
示例 — 在每个提示中注入上下文:
additionalContext 输出到 stdout 中的 hookSpecificOutput 对象内,并附带事件名称标签。该文本会被注入到 Agent 的上下文中:
Stop
示例 — 提醒 Agent 执行测试:
PostCompaction
示例 — 记录压缩事件:
SessionStart
示例 — 运行初始化脚本:
hookSpecificOutput 对象中向 stdout 输出 additionalContext 来注入上下文:
SessionEnd
匹配多个事件
使用 matcher
matcher 字段是一个正则表达式,用于匹配钩子事件的 tool_name。它适用于与工具相关的事件:PreToolUse、PostToolUse 和 PermissionRequest。
对于非工具事件 (UserPromptSubmit、Stop、PostCompaction、SessionStart 和 SessionEnd) ,不存在 tool_name;请使用 "" 或省略 matcher,以便钩子在该类型的每个事件上运行。
matcher 不是权限 glob。像
mcp__github__* 这样的模式可用于权限,但钩子的 matcher 使用的是正则表达式。在钩子 matcher 中,请使用 mcp__github__.*。你可以匹配的工具名称
tool_name 接收到的、同样对外可见的工具名称。具体有哪些可用工具名称,可能因 CLI 模式、模型以及启用的集成而有所不同。
最常见的公共核心工具名称包括:
readeditgrepglobexec
mcp__<server>__<tool>。例如,github MCP 服务器中名为 create_issue 的工具会显示为 mcp__github__create_issue。
对于其他工具,请匹配钩子 stdin 中显示的确切 tool_name。要确认当前会话中完整的可用工具集,请添加一个临时的 PostToolUse 钩子,将 matcher 设为 "",并记录 stdin payload。
