原文(日本語に翻訳)
hook.timeoutの設定に関わらず、終了時にSessionEndフックが1.5秒後にキルされていた問題を修正 — CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS環境変数で設定可能になった
原文(英語)
Fixed SessionEnd hooks being killed after 1.5 s on exit regardless of hook.timeout — now configurable via CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS
概要
セッション終了時に実行されるSessionEndフックが、hook.timeoutで設定した値に関わらず常に1.5秒後にキルされていたバグが修正されました。修正後はCLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS環境変数でタイムアウト時間を設定できるようになり、時間のかかるクリーンアップ処理や後処理が適切に完了できるようになります。
基本的な使い方
環境変数でタイムアウトを設定:
bash
# SessionEnd フックのタイムアウトを10秒に設定
export CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=10000
# または一時的に設定
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=10000 claude実践例
SessionEndフックの設定例
json
// settings.json
{
"hooks": {
"SessionEnd": [
{
"command": "bash -c 'echo \"セッション終了\" >> ~/claude-sessions.log'",
"timeout": 5000
}
]
}
}時間のかかるセッション終了処理
ログ送信や後処理に時間が必要な場合:
json
// settings.json
{
"hooks": {
"SessionEnd": [
{
"command": "python3 ~/scripts/upload-session-log.py",
"timeout": 30000
}
]
}
}bash
# 対応する環境変数も設定
export CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=35000 # フック timeout + 余裕分セッション完了後のGitコミット
json
// settings.json
{
"hooks": {
"SessionEnd": [
{
"command": "bash ~/scripts/auto-commit-session.sh",
"timeout": 15000
}
]
}
}bash
# ~/scripts/auto-commit-session.sh
#!/bin/bash
cd $CLAUDE_PROJECT_DIR || exit 0
if [ -n "$(git status --porcelain)" ]; then
git add -A
git commit -m "Claude session: $(date '+%Y-%m-%d %H:%M')"
echo "Auto-committed session changes"
fibash
# 環境変数でタイムアウトを調整
export CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MS=20000タイムアウト設定のガイドライン
| フック処理の種類 | 推奨タイムアウト |
|---|---|
| ログ記録のみ | 3,000ms (3秒) |
| ファイル書き込み | 5,000ms (5秒) |
| ネットワークリクエスト | 10,000ms (10秒) |
| Gitコミット | 15,000ms (15秒) |
| 複雑なスクリプト | 30,000ms (30秒) |
注意点
CLAUDE_CODE_SESSIONEND_HOOKS_TIMEOUT_MSはミリ秒単位で設定します- 環境変数の値はhooks設定の
timeoutフィールドよりも優先されます - タイムアウトを長く設定しすぎると、Claude Codeの終了が遅延します
- セッション終了フックは非同期に実行されますが、タイムアウト内に完了しない場合はキルされます
.envファイルや.bashrcに設定を追加することで恒久的に適用できます
関連情報
- Claude Code フック設定ドキュメント
- Claude Code 環境変数リファレンス
- 関連フック:
PreToolUse,PostToolUse,SessionStart,SessionEnd