New: watch your coding agents work, step by step, on a live board. Try the demo, no account

Show on the board when Cursor's agent stops

By Jake Marsh, who builds Taskhold. Updated 2026-10-26. Facts about other tools checked 2026-10-26. 2 min read.

Cursor's agent reports progress through the Taskhold MCP tools while it works. If it stops without saying so (you aborted it, or it hit an error), the live board would keep showing its last message. A stop hook closes that gap by writing "Cursor agent stopped (aborted)" on the task in progress.

Cursor itself connects as on the Cursor setup page; the Claude Code version of this idea is the Notification hook.

Set it up

  1. Save your API key where the script can read it: mkdir -p ~/.config/taskhold && printf '%s' 'atd_sk_...' > ~/.config/taskhold/key && chmod 600 ~/.config/taskhold/key (or export TASKHOLD_API_KEY).
  2. Save the script below as ~/.cursor/hooks/taskhold-stop.sh and make it executable.
  3. Register it in ~/.cursor/hooks.json. User hooks run from ~/.cursor/, so the path is relative to it.
#!/bin/bash
# ~/.cursor/hooks/taskhold-stop.sh: after each Cursor turn, show its last words on the Taskhold task in progress.
# Needs curl and jq. Key from TASKHOLD_API_KEY or ~/.config/taskhold/key.
input=$(cat)
key=${TASKHOLD_API_KEY:-$(cat ~/.config/taskhold/key 2>/dev/null)}
base=${TASKHOLD_API_URL:-https://taskhold.com/api}
msg=$(printf '%s' "$input" | jq -r '"Cursor agent stopped (" + .status + ")" // empty' 2>/dev/null | tr '\n' ' ' | sed 's/ *$//' | cut -c1-200)
if [ -n "$key" ] && [ -n "$msg" ]; then
  auth="Authorization: Bearer $key"
  id=$(curl -s --max-time 3 "$base/tasks/current" -H "$auth" | jq -r '.task.id // empty')
  [ -n "$id" ] && jq -n --arg m "$msg" '{message: $m}' | curl -s --max-time 3 -o /dev/null \
    "$base/tasks/$id/progress" -H "$auth" -H "Content-Type: application/json" \
    -H "X-Taskhold-Agent: Cursor" -d @-
fi
echo '{}'
exit 0
{
  "version": 1,
  "hooks": {
    "stop": [
      { "command": "./hooks/taskhold-stop.sh", "timeout": 10 }
    ]
  }
}

One limit to know

Cursor's stop event says how the run ended (completed, aborted or error) but carries no summary, so the board shows the status only. The hook writes to the task Taskhold returns as in progress, the most recently active one; with other agents working at the same time that may not be Cursor's.

Share this page:XLinkedInBlueskyHacker News

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.

Sources

Related

Updated 2026-10-26. Something wrong or out of date? Email hello@greatwork.company.