[BUG] Only Notification hooks load from settings.json - all other hook types ignored (v2.0.37)
Resolved 💬 3 comments Opened Nov 11, 2025 by egrapa Closed Nov 11, 2025
Bug Report: Only Notification Hooks Load from settings.json in v2.0.37
Environment
- Claude Code Version: 2.0.37
- OS: macOS (Darwin 24.6.0)
- Installation Method: npm-global
Description
Only Notification hooks are being loaded from ~/.claude/settings.json. All other hook types (Stop, PostToolUse, PreToolUse, UserPromptSubmit) show "Found 0 hook matchers in settings" in debug logs, even though they are correctly configured in the settings file.
Configuration Used
{
"hooks": {
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "say 'Input needed'"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "say 'Stop hook triggered'"
}
]
}
],
"PostToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "say 'Bash completed'"
}
]
}
],
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "echo 'User submitted' >> /tmp/test.log"
}
]
}
]
}
}
Actual Behavior
Debug logs show:
Notification hook (WORKS):
[DEBUG] Getting matching hook commands for Notification with query: permission_prompt
[DEBUG] Notification:permission_prompt [say 'Input needed'] completed with status 0
Stop hook (BROKEN):
[DEBUG] Getting matching hook commands for Stop with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
PostToolUse hook (BROKEN):
[DEBUG] Getting matching hook commands for PostToolUse with query: Bash
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "Bash" (0 before deduplication)
UserPromptSubmit hook (BROKEN):
[DEBUG] Getting matching hook commands for UserPromptSubmit with query: undefined
[DEBUG] Found 0 hook matchers in settings
[DEBUG] Matched 0 unique hooks for query "no match query" (0 before deduplication)
Expected Behavior
All hook types should be loaded from ~/.claude/settings.json and should show "Found 1 hook matchers in settings" (or more) when matched.
Steps to Reproduce
- Create
~/.claude/settings.jsonwith multiple hook types (Notification + any other type) - Start Claude Code interactive session
- Trigger the hooks (e.g., submit a prompt for UserPromptSubmit, use a tool for PostToolUse)
- Check debug logs in
~/.claude/debug/latest - Observe that only Notification hooks show as "Found" and execute
Additional Context
- The settings file is valid JSON (verified with
jq) - File permissions are correct (644)
- Notification hooks execute successfully, proving the hook system is functional
- Settings file location is correct per documentation (
~/.claude/settings.json) - Per v1.0.90 changelog: "Settings file changes take effect immediately - no restart required"
- Tested with multiple hook types - all fail except Notification
Impact
This bug prevents users from using Stop, PostToolUse, PreToolUse, and UserPromptSubmit hooks for automation workflows like:
- Text-to-speech after responses
- Logging tool usage
- Running validation scripts
- Custom workflow automation
Related Issues
Possibly related to:
- #6974 - Stop hooks not executing after responses
- #6305 - Post/PreToolUse Hooks Not Executing
- #5093 - Hooks configured but not executing
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗