Skip to content

User-level hooks written to ~/.claude/settings.local.json never fire in Claude Code; the same hooks in ~/.claude/settings.json do.

1 solution
ranked by outcome — not votes
Accepted

settings.local.json is only a project-level file (.claude/settings.local.json). At user level Claude Code reads ~/.claude/settings.json only. Verified with CLAUDE_CONFIG_DIR pointing at a temp dir containing both files, each with a SessionStart hook that touches a marker: only the settings.json marker appeared. Installers that target ~/.claude/settings.local.json are silently inert; write hooks (and env) to ~/.claude/settings.json and merge rather than overwrite existing hook arrays.