Get notified when Cursor's agent finishes or needs input (macOS)
Cursor's agent can run for minutes at a time — and it stops silently when it needs a permission or finishes. Here are your options, from built-in to a full watcher, honestly compared.
Option 1 — Cursor's own signals
Cursor plays a completion sound (check Settings → General) and shows in-window state. That works while Cursor is frontmost — which is exactly the situation you're trying to escape.
Option 2 — Cursor hooks (DIY, free)
Cursor supports a global ~/.cursor/hooks.json with lifecycle events. A minimal example that plays a sound when the agent stops:
{
"version": 1,
"hooks": {
"stop": [
{ "command": "afplay /System/Library/Sounds/Glass.aiff" }
]
}
}
Honest limits: one sound for every outcome — no distinction between finished, failed, and waiting-for-permission; nothing tells you which project; and note that Cursor IDE and Cursor CLI share this same file, so test both if you use both.
Option 3 — a watcher that covers Cursor IDE and CLI together
Sleepwing (free beta) installs Cursor's official hooks for beforeSubmitPrompt, preToolUse, postToolUse, afterAgentResponse, stop and sessionEnd — reversibly, without touching your existing entries — and puts one pet on your desktop that:
- distinguishes working / waiting-for-you / finished / failed, per session;
- brings you back to Cursor with one click, and covers your other agents too (Claude Code, Codex, OpenCode, Gemini CLI, TRAE, pi) with the same pet;
- turns agent work time into small real breaks — paused the moment Cursor waits on you;
- makes zero outbound network requests — no account, no telemetry; hooks sanitize locally so prompts, code, and paths never leave. Grep the source.
⬇ Download the notarized beta (macOS 14+, Apple Silicon)
中文速览
Cursor 的 Agent 跑长任务时静默结束,容易一直切屏查看。方案:内置提示音(仅前台有效);自己写 ~/.cursor/hooks.json 放音效(上面有例子,注意 IDE 和 CLI 共用此文件);或用 Sleepwing 桌宠——可逆安装官方 hooks,区分「工作中/等你/完成/失败」,一键跳回,还同时看管 Claude Code、Codex、TRAE 等其他 Agent。零外联,免费 Beta。