Hook が発火しないのはなぜ?
何も言わずに一度も実行されない Hook は、エージェント設定における最もよくある謎の一つです。ここでは、それを Berth で突き止める方法を紹介します。
1. イベント名は正しいか?
Hooks は特定のライフサイクルイベントで発火します (例: ツール呼び出しの前の PreToolUse、後の PostToolUse)。イベント名が実在のイベントと一致しなければ、Hook は一度も実行されません。Berth は各 Hook がいつ発火する設定になっているかを示します。
2. Hooks が全体で無効化されていないか?
disableAllHooks の設定は、すべての Hook を一度にオフにします。Berth のヘルスチェックがこれを浮かび上がらせます — 最初に除外して確認すべき点です。
3. マッチャーが狭すぎないか?
多くの Hook は、特定のツールを狙うためにマッチャーを使います。マッチャーが、あなたが使っているツールと一致しなければ、何も起こりません。セッションのツールタイムラインにあるツール名と、マッチャーを照らし合わせて確認しましょう。
4. コマンドのファイルは存在するか?
Hook はコマンドやスクリプトを指し示します。パスが間違っていたり、ファイルが見つからなかったりすると、Hook は実行できません。Berth はヘルスチェックで Hook のエントリのパスを検証します。
参考文献
- 01
- 02Claude Code — Settings
一次情報。disableAllHooks を含む settings.json。
https://code.claude.com/docs/en/settings