原文(日本語に翻訳)
--resume または --continue を使ってセッションを再開した際に SessionStart フックが2回起動していた問題を修正しました。
原文(英語)
Fixed SessionStart hooks firing twice when resuming a session via --resume or --continue
概要
Claude Codeでは SessionStart フックを使ってセッション開始時にカスタムスクリプトを実行できます。しかし、--resume や --continue フラグでセッションを再開した際に、このフックが2回連続して実行されるバグがありました。バージョン2.1.73でこの問題が修正され、セッション再開時にも SessionStart フックは1回だけ正しく実行されるようになりました。
基本的な使い方
SessionStart フックは、セッション開始時に実行したい処理(環境確認、ログ記録、通知など)を定義するために使用します。
json
// .claude/hooks.json または ~/.claude/hooks.json
{
"hooks": {
"SessionStart": [
{
"command": "echo 'Claude Code セッションを開始しました' >> ~/claude-sessions.log"
}
]
}
}実践例
セッション開始のログ記録
json
{
"hooks": {
"SessionStart": [
{
"command": "echo \"$(date): セッション開始 - プロジェクト: $PWD\" >> ~/.claude/session-log.txt"
}
]
}
}v2.1.73以前は claude --continue や claude --resume SESSION_ID で再開した際に、このログが2回記録されていました。
Slack通知フック
json
{
"hooks": {
"SessionStart": [
{
"command": "curl -s -X POST $SLACK_WEBHOOK_URL -H 'Content-type: application/json' -d '{\"text\": \"Claude Code セッション開始: '"$(hostname)"'\"}'"
}
]
}
}重複実行バグの影響で、以前はセッション再開のたびに通知が2回送信されていました。
環境チェックスクリプト
bash
#!/bin/bash
# ~/.claude/hooks/session-start.sh
# 環境変数の確認
if [ -z "$ANTHROPIC_API_KEY" ]; then
echo "警告: ANTHROPIC_API_KEY が設定されていません"
fi
# 必要なツールの確認
for tool in git node npm; do
if ! command -v $tool &> /dev/null; then
echo "警告: $tool が見つかりません"
fi
done
echo "環境チェック完了"json
{
"hooks": {
"SessionStart": [
{
"command": "bash ~/.claude/hooks/session-start.sh"
}
]
}
}セッション再開の活用方法
bash
# セッションIDを指定して再開(フックは1回だけ実行される)
claude --resume abc123def456
# 最新のセッションを継続(フックは1回だけ実行される)
claude --continue注意点
- この修正はバージョン2.1.73以降に適用されます。それ以前のバージョンでは、
--resumeや--continueを使う際はフックが2回実行されることを考慮した設計が必要でした - フック内でべき等でない操作(ファイル作成、通知送信など)を行っている場合、v2.1.73以前では重複実行の副作用が発生していた可能性があります
SessionStartフックは通常のセッション開始(claudeコマンドを引数なしで起動)では以前から1回のみ実行されていました- セッション再開時のみ影響を受けていたバグです