---
title: "Comment by Vic Moreno on \"11 things I learned building a tool on Claude Code hooks\" | Hashnode"
description: "Point 1 is the underrated one: since --settings hooks are added to the user's and the project's instead of replacing them, your tool and someone's existing Stop"
url: "https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b/comment/6af4355ff0d3b5e21f450736"
---

[Discussion](https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b)

Comment [11 things I learned building a tool on Claude Code hooks](https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b)

[Vic Moreno](https://hashnode.com/@itsvicmoreno)

[11h ago](https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b/comment/6af4355ff0d3b5e21f450736)

Point 1 is the underrated one: since --settings hooks are added to the user's and the project's instead of replacing them, your tool and someone's existing Stop hook both fire on the same event. Have you seen ordering or timing issues when both run on Stop?

[Eren Çolak](https://hashnode.com/@erenxcolakx)

[11h ago](https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b/comment/6af4355ff0d3b5e21f450736#reply-6af43c0b813891c58327abd3)

Thanks, that one took me a while to appreciate too. Matching hooks for the same event run in parallel, so there's no ordering between mine and someone's own Stop hook, and nothing in my tool depends on one. Mine only reports and never returns a decision, so it can't change what theirs does; the cost is a curl to localhost. The case to watch is a user Stop hook that exits 2 to send Claude back to work: mine has already reported Stop, so the pane shows "Your turn" for a moment until the next PreToolUse flips it back to Working. Treating the latest event as the truth handles that, and the phone notification waits 20 seconds and only fires if the session still needs you, so that flicker doesn't buzz anyone.

[Vic Moreno](https://hashnode.com/@itsvicmoreno)

[8h ago](https://hashnode.com/posts/11-things-i-learned-building-a-tool-on-claude-code-hooks/6af4261127d0807c65d20e0b/comment/6af4355ff0d3b5e21f450736#reply-6af4612d852156dd769536d2)

Latest event wins plus a 20 second wait before the phone buzzes is a clean split: the pane can be twitchy, the notification can't. Have you thought about giving the pane a short grace period too, or is that brief Your turn flash useful as a signal that a Stop hook pushed Claude back to work?
