Stop hook fires after every code edit in non-web projects with no way to disable

Resolved 💬 2 comments Opened Jul 4, 2026 by reutkatz1 Closed Jul 8, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

After every code edit (Write/Edit tool), a Stop hook fires and displays a "Stop hook feedback" notification to the user. The message is directed at Claude (telling it what to do next regarding preview verification), but it surfaces as a visible notification to the user after every single code edit, even in projects with no dev server or browser preview at all (e.g. Node.js backend scripts, bots).

What Should Happen?

The hook should either not fire when there is no preview_start configured for the project, or be suppressible via settings.json (e.g. through enabledPlugins or a similar setting).

Error Messages/Logs

Code was edited but no dev server is running. If the change is observable in a browser preview (per <when_to_verify>), call preview_start and follow <verification_workflow>. If not, end your turn without mentioning this check — do not announce that you're skipping.

Steps to Reproduce

  1. Open Claude Code in a project that has no dev server (e.g. a Node.js bot, a script, a backend service)
  2. Ask Claude to edit any file
  3. After Claude finishes, the "Stop hook feedback" notification appears, showing Claude-directed text to the user

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

Not specified in report

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

Environment: Claude Code desktop app (Mac). Project type: Node.js Railway bot (no browser/frontend). No .claude/settings.json hooks configured by the user. There is no entry in ~/.claude/settings.json or .claude/settings.json that controls this behavior.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗