Problem
Hooks are loaded and the script executes correctly (verified via manual Bash test), but systemMessage output does not render in some sessions.
What we know
- Hooks show up in
/hooks list with (1) count — they're loaded
- Running the hook script manually via Bash produces correct JSON output
- Same global
~/.claude/settings.json — no project-level hook conflicts
- Same iTerm2 window, same Claude Code version, different tabs
- Two tabs show timecodes correctly, one does not
- The non-working session was started before hooks were installed and was resumed
- Session has other project-level hooks (PreToolUse scope guards) but none on Stop/SessionStart/UserPromptSubmit
Suspected cause
Claude Code may cache systemMessage rendering behavior at session start and not fully reload when hooks are added mid-session. The /hooks list shows them as loaded, but the rendering path may not be active.
Workaround
Exit and restart the session (/exit then claude). New sessions always work.
Desired behavior
Hooks added to settings.json should take effect immediately in all running sessions without requiring a restart.
Problem
Hooks are loaded and the script executes correctly (verified via manual Bash test), but
systemMessageoutput does not render in some sessions.What we know
/hookslist with(1)count — they're loaded~/.claude/settings.json— no project-level hook conflictsSuspected cause
Claude Code may cache
systemMessagerendering behavior at session start and not fully reload when hooks are added mid-session. The/hookslist shows them as loaded, but the rendering path may not be active.Workaround
Exit and restart the session (
/exitthenclaude). New sessions always work.Desired behavior
Hooks added to
settings.jsonshould take effect immediately in all running sessions without requiring a restart.