CC逆引きリファレンス

セッション開始・終了時にフックを実行したい

11. フック

コマンド / 機能

SessionStart / SessionEnd

セッションライフサイクルフック

概要

SessionStart はセッションが開始または再開された直後に発火し、SessionEnd はセッションが終了する時に発火します。初期化処理やクリーンアップ処理に使います。

設定例

// .claude/settings.json
{
  "hooks": {
    "SessionStart": [
      {
        "type": "command",
        "command": ".claude/hooks/session-start.sh"
      }
    ],
    "SessionEnd": [
      {
        "type": "command",
        "command": ".claude/hooks/session-end.sh"
      }
    ]
  }
}

// session-start.sh の例
#!/bin/bash
echo "[$(date)] Session started" >> ~/.claude/session.log

// session-end.sh の例
#!/bin/bash
echo "[$(date)] Session ended" >> ~/.claude/session.log
公式ドキュメントを見る

こんな時に使う

  • セッション開始時に環境の初期化をしたい時
  • セッション終了時にログやレポートを出力したい時
  • セッション単位でリソースを確保・解放したい時

使い方

  1. 1hooks.SessionStart にセッション開始時のフックを定義
  2. 2hooks.SessionEnd にセッション終了時のフックを定義
  3. 3再開(--continue / --resume)時も SessionStart が発火する

Tips

  • SessionEnd は claude exit, /exit, セッション中断時に発火
  • SessionStart のコンテキストには sessionId が含まれる
  • ログ収集や環境セットアップに活用できる