# Claude Agent SDKの便利で実践的な使い方
🪝 エージェントの全動作をフックでインターセプトし、監査・制御・通知を実現できます。
フックは、`PreToolUse`・`PostToolUse`・`Stop`・`Notification` 等のライフサイクルイベントでカスタムコードを実行し、エージェントの動作を検証・ログ・ブロック・変換する機能です。
📌 タイトル:フックを使用してエージェントの動作をインターセプトして制御する
🔗 URL:
🧩 概要
フックは SDK のコールバック関数で、ツール実行前後・停止時・通知時等に発火します。`HookMatcher` で対象ツールをパターン指定でき、`permissionDecision` で許可/拒否を制御します。コンテキストウィンドウ外で実行されるためトークン消費なしです。
🛠 使い方
`hooks` オプションにイベント名(`PreToolUse` / `PostToolUse` / `Notification` 等)をキーとし、`HookMatcher` でマッチャパターン(`"Edit|Write"` や `"^mcp__"` 等)とコールバック関数を指定します。コールバックは `permissionDecision`(`allow` / `deny`)や `updatedInput` を返してツール実行を制御できます。
🏗 実践的な使い方
・`PreToolUse` で `.env` への書き込みや `/etc` 操作を `deny` で停止し、`systemMessage` で理由を Claude に伝えます。
・`PostToolUse` で全ファイル変更を監査ファイルに記録します(コンプライアンス用)。
・`PreToolUse` で Write の `file_path` を書き換え、全書き込みを `/sandbox` へリダイレクトします(`updatedInput` + `allow`)。
・`Notification` フックでパーミッション要求・アイドル状態を Slack や PagerDuty へ転送します。
💡 ユースケース
🛡 危険操作の自動ブロック
📝 全ファイル変更の監査ログ記録
📨 外部通知サービスへのイベント転送
🔀 書き込み先のサンドボックスリダイレクト
⚠️ 注意点
複数フックは並列実行され、`deny > defer > ask > allow` の優先順で決定されます。`async_: True` でエージェントを止めずに非同期処理が可能です。`SessionStart` / `SessionEnd` は TypeScript のみです。
#
ClaudeAgentSDK# #
AI#