停止フックを設定したい
10. フックコマンド / 機能
Stop終了時処理
概要
Claude がレスポンス生成を完了し、エージェントループが終了する時に呼び出されます。タスク完了通知やリソースのクリーンアップに使えます。
設定例
// settings.json
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "echo \"[$(date '+%Y-%m-%d %H:%M:%S')] タスク完了\" >> ~/.claude/activity.log"
}
]
}
]
}
}
// macOS で通知センターに表示
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"タスクが完了しました\" with title \"Claude Code\" sound name \"Glass\"'"
}
]
}
]
}
}
// Linux で通知(notify-send)
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "notify-send -u normal 'Claude Code' 'タスクが完了しました'"
}
]
}
]
}
}こんな時に使う
- タスク完了時に通知を受け取りたい時
- セッション終了時にクリーンアップしたい時
- 作業時間を記録したい時
- 長時間タスクの完了を把握したい時
使い方
- 1Stop イベントにフック定義を追加
- 2Stop は matcher を使わない(全終了に適用)
- 3タイムスタンプ付きログで作業履歴を記録
- 4OS の通知機能で完了を知らせる
Tips
- Stop は Claude がユーザー入力を待つ状態になった時に発火
- 長時間タスクの完了通知に特に便利
- macOS は osascript、Linux は notify-send を使用
- サウンド付き通知で離席中も気づきやすい