CC逆引きリファレンス

停止フックを設定したい

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' 'タスクが完了しました'"
          }
        ]
      }
    ]
  }
}

こんな時に使う

  • タスク完了時に通知を受け取りたい時
  • セッション終了時にクリーンアップしたい時
  • 作業時間を記録したい時
  • 長時間タスクの完了を把握したい時

使い方

  1. 1Stop イベントにフック定義を追加
  2. 2Stop は matcher を使わない(全終了に適用)
  3. 3タイムスタンプ付きログで作業履歴を記録
  4. 4OS の通知機能で完了を知らせる

Tips

  • Stop は Claude がユーザー入力を待つ状態になった時に発火
  • 長時間タスクの完了通知に特に便利
  • macOS は osascript、Linux は notify-send を使用
  • サウンド付き通知で離席中も気づきやすい