Skip to main content
フックを使用すると、特定のエージェントイベント発生時にシェルコマンドを自動的に実行できます。例えば、ツールがファイルを書き込む前にコーディング規約を強制したり、完了した各ターンをログに記録したりできます。このシステムは Claude Code フックと同じ規約に従います。

設定

フックは2つのレベルのJSONファイルで設定します: 両方のファイルは加算的にマージされます。同一のハンドラー(同じイベント、マッチャー、コマンド)は重複排除されます。

設定フォーマット

トップレベルの hooks ラッパーはオプションです。イベントキーをルートに直接配置することもできます。 各イベントキーはルールオブジェクトの配列にマッピングされます。ルールには以下が含まれます:
  • matcher — マッチするツールまたはトリガー(マッチャーを参照)
  • hooks — ハンドラーオブジェクトの配列。各ハンドラーには以下を含みます:
    • type — 常に "command"
    • command — 実行するシェルコマンド
    • timeout — ハンドラーごとのタイムアウト秒数(デフォルト60)

マッチャー

マッチャーは Claude Code のセマンティクスに従います:

イベント

実行プロトコル

マッチした各ハンドラーはシェル経由で実行され、cwd はプロジェクトパスに設定されます。stdin にJSONペイロードが渡されます:
  • session_id — 現在のセッションID
  • cwd — プロジェクトパス
  • hook_event_name — イベント名
加えて、イベントごとのフィールド(tool_nametool_inputtool_responseprompttriggeragent_typegoal など)が含まれます。 以下の環境変数が設定されます:

終了コード

タイムアウトも非ブロッキングエラーとして扱われます。

決定出力

終了コード 0 の場合、stdoutにJSONオブジェクトを含めることができます:
  • ツール呼び出しをブロック(PreToolUse):{"decision": "block", "reason": "..."}
  • 理由付きで拒否(PreToolUse):{"hookSpecificOutput": {"permissionDecision": "deny", "permissionDecisionReason": "..."}}
  • フィードバックを追加(PostToolUse):{"additionalContext": "..."}
マッチしたすべてのハンドラーは並列で実行されます。いずれかのハンドラーがブロックすると、ツール呼び出しまたはプロンプトは拒否され、すべてのブロック理由が結合されます。

適用範囲

フックはすべてのエージェントコンテキストに適用されます:
  • メインエージェントのツール呼び出し
  • サブエージェントのツール呼び出し(ペイロードに agent_type を含む)
  • GUIツールの呼び出し
  • ACPツールの呼び出し
UserPromptSubmit はユーザーが入力したプロンプトのみをゲートします。ゴール継続や内部セッションメッセージはインターセプトされません。 フックエンジンのエラーはエージェントループに伝播しません。 プラグインもフックを提供できます。これらはインストール時に明示的に承認され、グローバルおよびプロジェクトのフックと統合されます。

ファイル書き込み前にリンターチェックを要求

完了した各ターンをログに記録

データストレージ