← Sleepwing

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:

⬇ Download the notarized beta (macOS 14+, Apple Silicon)

Pick by situation: one Cursor window and you stay at your desk → the built-in sound is enough. Comfortable with JSON and only Cursor → the DIY hook. Multiple agents a day, or you actually want to step away → that's what Sleepwing is for.

中文速览

Cursor 的 Agent 跑长任务时静默结束,容易一直切屏查看。方案:内置提示音(仅前台有效);自己写 ~/.cursor/hooks.json 放音效(上面有例子,注意 IDE 和 CLI 共用此文件);或用 Sleepwing 桌宠——可逆安装官方 hooks,区分「工作中/等你/完成/失败」,一键跳回,还同时看管 Claude Code、Codex、TRAE 等其他 Agent。零外联,免费 Beta。