フックを設定したい
10. フックコマンド / 機能
settings.json設定ファイル
概要
フックは ~/.claude/settings.json(グローバル)または .claude/settings.json(プロジェクト)の hooks フィールドで定義します。イベントごとにフック配列を設定し、マッチャーで対象ツールを絞り込めます。
設定例
// ~/.claude/settings.json または .claude/settings.json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "echo 'Bash実行前' >> ~/.claude/hooks.log"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "notify-send 'Claude' '$CLAUDE_NOTIFICATION'"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "echo 'タスク完了' | tee -a ~/.claude/activity.log"
}
]
}
]
}
}こんな時に使う
- Claude の動作をカスタマイズしたい時
- 自動化ワークフローを構築したい時
- ツール実行前後に処理を挟みたい時
使い方
- 1settings.json の hooks セクションにイベント名をキーとして追加
- 2各イベントに配列形式でフック定義を追加
- 3matcher でフックを適用するツールを指定(省略で全ツール対象)
- 4hooks 配列に type: 'command' と command を指定
Tips
- フックはイベント発生順に同期的に実行される
- フックの stdout 出力は Claude にフィードバックされる
- 複数のフックを同じイベントに設定可能
- プロジェクト設定はグローバル設定より優先される