[BUG] Only one SessionStart hook executes when multiple are registered
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?
When two plugins each contribute a SessionStart hook, only one of them is dispatched. The other never executes and no error was logged. /reload-plugins and /hooks count all hooks, so registration succeeds but dispatch does not.
Hooks defined in settings.json are unaffected: I registered three (two commands in one matcher group, plus a second group) and all three ran and delivered their additionalContext. The problem is specific to plugin-contributed hooks.
Three plugins here contribute a SessionStart hook and all were affected at the same time. Whichever is registered first wins, the rest are dropped. All use the same shape, no matcher key:
{
"hooks": {
"SessionStart": [
{ "hooks": [ { "type": "command", "command": "..." } ] }
]
}
}
What Should Happen?
All hooks should fire.
Error Messages/Logs
Steps to Reproduce
- Install two plugins that each define a
SessionStarthook writinghookSpecificOutput.additionalContext. - Start a session.
- Only one hook's context arrives; the other leaves no transcript entry.
Claude Model
Not sure / Multiple models
Is this a regression?
Yes, this worked in a previous version
Last Working Version
2.1.198
Claude Code Version
2.1.252
Platform
Other
Operating System
Windows
Terminal/Shell
Windows Terminal
Additional Information
| Range | Behaviour |
| --- | --- |
| up to v2.1.198 (last seen 2026-07-02) | Working — multiple plugin SessionStart hooks ran per session, up to 4 |
| v2.1.199 – v2.1.215 | Not verified — no sessions on these versions |
| v2.1.216 – v2.1.252 (2026-07-21 → 2026-09-01) | Broken — 18 versions, 85 sessions, never more than one |
Determined from ~/.claude/projects/**/*.jsonl, counting hook_success attachments with hookEvent: "SessionStart" per session, grouped by the version field.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗