セッション開始・終了時にフックを実行したい
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こんな時に使う
- セッション開始時に環境の初期化をしたい時
- セッション終了時にログやレポートを出力したい時
- セッション単位でリソースを確保・解放したい時
使い方
- 1hooks.SessionStart にセッション開始時のフックを定義
- 2hooks.SessionEnd にセッション終了時のフックを定義
- 3再開(--continue / --resume)時も SessionStart が発火する
Tips
- SessionEnd は claude exit, /exit, セッション中断時に発火
- SessionStart のコンテキストには sessionId が含まれる
- ログ収集や環境セットアップに活用できる