When the Agent needs user approval (e.g. Run / Reject for a shell command or similar permission prompt), Cursor already plays a sound notification. Please also fire a dedicated Hooks event at that moment (same idea as stop on agent completion).
Today there is no hook for “waiting for approval”, so external monitors cannot detect this state.
Use case: I often leave the desk while the Agent works and run a local script that alerts me when the Agent finishes. I need the same signal when the Agent is blocked on an approval prompt, so I can return and unblock it.
Nice-to-have: optional recurring notifications (not just a one-shot sound) while approval is pending, so the user is more likely to notice and return to the computer.
Closest workaround: a beforeShellExecution hook (and beforeMCPExecution for MCP). It fires when the agent proposes a command, right before the Run/Reject card. With auto-run off, that’s basically a 1:1 signal. With auto-run on, you can return {"permission": "ask"} to force the prompt (optionally scoped with a matcher). Details: Hooks docs.
For noticing it at your desk, Cursor Settings → General → Notifications → System Notifications sends an OS alert when the agent needs attention (only when Cursor isn’t focused; on macOS you can Accept/Reject from the notification).
We’ll be tracking this to gauge interest. Related ask for a broader waiting status event: this thread.
+1 — a dedicated hook here would be exactly right, as a mirror of stop for the start of a wait. stop already lets external tools detect “agent finished,” but there’s no scriptable signal for “agent is now blocked and needs the user to act.” External status surfaces (status bars, remote monitors) currently have to infer that from a beforeShellExecution returning ask, which misses non-shell approvals. A first-class “awaiting user approval/input” event (command hook + a matching stream-json event for the CLI) would close the gap cleanly.