Local installs wrote bare relative paths (e.g. `node .claude/hooks/...`) into settings.json. Claude Code persists the shell's cwd between tool calls, so a single `cd subdir` broke every hook for the rest of the session. Prefix all 9 local hook commands with "$CLAUDE_PROJECT_DIR"/ so path resolution is always anchored to the project root regardless of cwd. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>