Settings watcher only watches dirs that had a settings file at session start (silent hook failure)

Resolved 💬 1 comment Opened Apr 29, 2026 by bradygrapentine Closed May 2, 2026

Problem

When a user creates .claude/settings.json (or .claude/settings.local.json) in a project that didn't have one when the session started, the harness's settings watcher does not pick it up. Hooks defined in the new file silently never fire. There is no error, no log line, no UI indication.

The only fix is to open the /hooks UI menu (which reloads config) or restart the session. This is undiscoverable — users assume their hook config is broken and waste time debugging the hook itself.

Proposed

One of:

  1. Watch .claude/ directory creation events too, so newly-created settings files in previously-empty project dirs are picked up.
  2. On file write to settings.json / settings.local.json in any project ancestor of cwd, surface a one-time message: "Settings changed — open /hooks or restart to apply."
  3. Auto-reload settings on file write, the same way the watcher already handles edits to existing files.

Reproduction

  1. Start claude in a project with no .claude/ directory.
  2. Create .claude/settings.json with a hook (e.g., a PostToolUse Write|Edit formatter).
  3. Trigger the matching tool. Hook does not fire. No error.
  4. Open /hooks menu (which closes the turn). Re-trigger. Hook now fires.

This is documented as a known footgun in the update-config skill — telling users to "open /hooks once, you can't do this yourself" — but it should not need a workaround skill at all.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗