tool_name に一致する正規表現) を利用します。
PreToolUse
例 — 破壊的なコマンドをブロックする:
hookSpecificOutput.updatedInput を出力することで、ツールへの入力を透過的に書き換えることができます (出力形式を参照) 。たとえば、シェルコマンドをラッパー経由で実行するフックスクリプトは次のとおりです。
PostToolUse
例 — すべてのシェルコマンドをログに記録する:
PermissionRequest
例 — git コマンドを自動承認する:
UserPromptSubmit
例 — すべてのプロンプトに前提情報を挿入する:
hookSpecificOutput オブジェクト内に additionalContext を標準出力へ出力します。そのテキストはエージェントの前提情報に取り込まれます:
Stop
例 — エージェントにテストを実行するよう促す:
PostCompaction
例 — 圧縮イベントをログに記録する:
SessionStart
例 — セットアップスクリプトを実行:
hookSpecificOutput オブジェクト内に additionalContext を出力して、前提情報を渡すこともできます。
SessionEnd
複数のイベントへのマッチング
Matcher の利用
matcher フィールドは、フックイベントの tool_name に対してマッチする regex です。利用できるのは、ツール関連のイベント PreToolUse、PostToolUse、PermissionRequest です。
ツール関連以外のイベント (UserPromptSubmit、Stop、PostCompaction、SessionStart、SessionEnd) には tool_name がないため、その種類のすべてのイベントでフックを実行するには、"" を利用するか、matcher を省略します。
matcher は permission glob ではありません。
mcp__github__* のようなパターンは permissions では有用ですが、フックの matcher は regex です。フックの matcher では mcp__github__.* を利用してください。一致対象にできるツール名
tool_name として受け取るものと同じ、外部から見えるツール名に対して評価されます。利用可能な正確なツール名は、CLI モード、モデル、有効になっている統合によって異なる場合があります。
一般的な公開コアツール名は次のとおりです。
readeditgrepglobexec
mcp__<server>__<tool> の形式で表示されます。たとえば、github という MCP server の create_issue という名前のツールは、mcp__github__create_issue として表示されます。
その他のツールについては、フックの stdin に表示される tool_name に正確に一致させてください。現在のセッションで利用可能な完全な一覧を確認するには、matcher: "" を指定した一時的な PostToolUse フックを追加し、stdin のペイロードをログに記録してください。
