Why Cursor's agent waits for input without telling you, and the fix
By Jake Marsh, who builds Taskhold. Updated 2026-10-31. Facts about other tools checked 2026-10-31. 6 min read.
Short answer: Cursor plays its Completion Sound and shows a system notification when an agent needs approval or finishes, but stays quiet while you're viewing that agent's chat. Turn both on under Settings > General > Notifications. The CLI has its own notifications setting, and hooks fire only when a run stops. For questions about the work, have the agent post them to a shared board such as Taskhold's live board.
You hand Cursor's agent a long task, switch to your browser, and come back to find it stopped on an approval card a few minutes in. Or it finished and nothing told you. This guide covers when Cursor alerts you and when it stays quiet, the settings and hook that close the gaps in the editor and the CLI, and how to get the agent's questions onto your phone.
For the same problem in other agents, see Claude Code waiting for input and Codex CLI waiting for approval. To try answering a blocked agent from a browser, open the live board demo.
Why there was no alert
The Cursor editor has two settings for this, Completion Sound and System Notifications, under Cursor Settings > General > Notifications. Cursor's docs have no page for them; what follows is how Cursor staff described them on the Cursor forum in June and September 2026:
- Completion Sound plays when an agent finishes its turn and when an approval needs your attention, for local agents and their subagents. Approvals and finished turns share one toggle and one sound.
- The sound plays only when Cursor is in the background or you're viewing a different agent. While you're looking at the chat that shows the approval card, it stays quiet. Staff called this working as designed.
- Some forum users report the sound not playing even with Cursor in the background. Staff asked them for the Cursor version and whether it was a local agent, a subagent or a cloud agent, so include those if you report it.
Hooks don't fill the gap on their own. Cursor's hooks reference lists no event that fires while the agent waits for approval or for an answer; the stop event fires only when the agent loop ends.
Fix 1: turn on the sound and system notifications
- Open Cursor Settings > General > Notifications and turn on Completion Sound and System Notifications.
- On macOS, check System Settings > Notifications > Cursor and allow notifications, and make sure a Focus mode isn't holding them.
- If you work with the agent's chat open on screen, expect silence for approvals in that chat. Glance at it, or move to another agent's chat while you wait.
Fix 2: Cursor CLI notifications
The Cursor CLI (agent) has its own setting. Since April 2026 it sends a desktop notification when a turn finishes or the agent is blocked on you (an approval, a question, sudo) in iTerm2, Ghostty, Warp, Kitty and Terminal.app. It passes through tmux and screen, mutes itself while you're focused on it, and approval notifications include the pending command. Turn it on in /config, or in ~/.cursor/cli-config.json:
{
"version": 1,
"notifications": true
}Fix 3: a hook for when a run ends
A stop hook runs when the agent loop ends and receives a status of completed, aborted or error. That covers a run that finished or died while you were away, though not a run paused on an approval. Save this as ~/.cursor/hooks/notify-stop.sh and make it executable with chmod +x:
#!/bin/bash
status=$(jq -r '.status')
osascript -e 'on run argv' -e 'display notification ("Agent run ended: " & item 1 of argv) with title "Cursor"' -e 'end run' "$status"
# For your phone instead: curl -s -d "Cursor agent: $status" https://ntfy.sh/<your-topic>
echo '{}'Register it in ~/.cursor/hooks.json. User hooks run from ~/.cursor/, so the path is relative to it:
{
"version": 1,
"hooks": {
"stop": [
{ "command": "./hooks/notify-stop.sh", "timeout": 10 }
]
}
}The CLI runs stop hooks too. To have the same hook put the result on a shared task instead, see Cursor hooks with Taskhold.
Fix 4: fewer approvals to wait on
Settings > Agents > Approvals & Execution sets the run mode. Allowlist runs only the actions you've allowed without asking. Auto-review runs allowlisted calls, sends other shell commands to a sandbox where possible and passes the rest to a classifier, so you're asked only about calls it blocks and the agent still wants to make. Run Everything never asks, and Cursor describes it as accepting the risk. Fewer prompts means fewer waits, at the cost of less review.
Cloud agents and your phone
Cursor for iOS (iPhone and iPad on iOS 26 or later, on paid plans) starts and follows Cursor's cloud agents. Per Cursor's release notes for the week of August 31, 2026, cloud agents push a notification to your phone or browser when an agent asks a question or needs your approval, and no longer for each finished turn. With My Machines, a cloud agent's tool calls run on your own computer while the agent loop stays in Cursor's cloud. Android is planned.
Where Taskhold fits
Taskhold handles the other kind of stop: a question about the work, from Cursor or any other agent. With the workflow rule in .cursor/rules, the agent calls taskhold_block with one specific question instead of waiting in the chat. When the answer is a choice, it passes two to four options, marks the one it recommends and says what it will do if nobody answers.
- The question appears as a card under Needs you on the live board and on the Needs you page (/dashboard/needs-you), laid out for a phone. Tap an option or type a reply.
- Phone alerts can send the question to you by web push, ntfy or email. They're opening to accounts in stages.
- The agent reads your answer with taskhold_updates, and can take the next task while it waits.
If you need a decision from me, call taskhold_block on the task with one
specific question. When it's a choice, pass 2 to 4 options, the one you
recommend, and what you'll do if I don't answer. Then take the next todo
and check taskhold_updates between steps for my reply.- Approval cards still need an answer in Cursor. Taskhold carries questions about the work, not tool approvals.
- Taskhold doesn't wake an agent that has stopped. The agent reads your reply the next time it calls taskhold_updates.
- Setup is on the Cursor page, and the whole loop is in answering a blocked coding agent. If the taskhold tools never appear, see Cursor MCP server not connecting.
See how far along your coding agents are.
$12/month or $120/year after the trial. Card up front. Cancel before day 7 and you pay nothing. Every agent you run is included.
Questions
- Why doesn't Cursor play a sound when the agent asks for approval?
- Cursor mutes the approval sound while you're viewing the chat that shows the approval card. The sound plays when Cursor is in the background or you're in another agent's chat, and only with Completion Sound turned on.
- Is there a Cursor hook for when the agent needs input?
- Not in Cursor's hooks reference as of October 31, 2026. The stop hook fires when the agent loop ends, with a status of completed, aborted or error, so it can alert you about finished or failed runs but not about a pending approval.
- How do I get Cursor CLI notifications?
- Turn on notifications in /config, or set "notifications": true in ~/.cursor/cli-config.json. The CLI then notifies you when a turn finishes or the agent is blocked on an approval, a question or sudo, in iTerm2, Ghostty, Warp, Kitty and Terminal.app.
Sources
- Cursor docs: hooks (events, hooks.json, stop), checked 2026-10-31
- Cursor docs: CLI configuration (notifications), checked 2026-10-31
- Cursor docs: CLI changelog (desktop notifications, April 2026), checked 2026-10-31
- Cursor docs: run modes, checked 2026-10-31
- Cursor docs: Cursor for iOS, checked 2026-10-31
- Cursor docs: release notes (cloud agent push notifications), checked 2026-10-31
- Cursor forum: Cursor staff on the approval sound and focus (September 2026), checked 2026-10-31
- Cursor forum: Cursor staff on muting while focused (June 2026), checked 2026-10-31
Related
Updated 2026-10-31. Something wrong or out of date? Email hello@greatwork.company.