Hey, thanks for the report. To figure out if this is a bug or expected behavior, I’ll need a bit more detail.
Important note about subagentStart: this hook only fires when the agent actually spawns a subagent via the Task tool. Whether a subagent gets spawned at all depends on the model and the session. Built-in auto-subagents decide on their own if they want to delegate. So if “subagentStart didn’t fire”, it can simply mean no subagent was spawned in that session. That’s expected, not a broken hook.
To dig in, could you share:
- Your
.cursor/hooks.json(or global~/.cursor/hooks.json) - The
~/.cursor/logs/.../cursor.hooks.logfrom a session where the hook didn’t run - What exactly you’re seeing: is the hook not called at all, or is it called with an empty or wrong payload? Also, was a subagent spawned in that session, did you see the Task tool in action?
preToolUse can be similar. There are known cases where it isn’t emitted for specific tools, for example built-in web search Bug: preToolUse / Agent hooks do not emit for built-in Web search in Cursor Agent (works in Claude Code), AskQuestion Cursor CLI AskQuestion tool skips preToolUse and postToolUse hooks. If your case matches that pattern, tell me which tool it didn’t work for.
With that info, I can either reproduce and report it, or explain what’s going on.