Scheduled agent run skipped: no webhook arrives, read the 200 receipt
A skipped Sume Scheduled run returns 200 with skip_reason previous_run_active and sends no webhook. Read the receipt instead of waiting on one.

If you start a Scheduled agent run while the previous run is still active, the default on_active_run of skip returns 200 with status skipped and skip_reason previous_run_active. A skipped run delivers no webhook, so code that waits for action.run.terminal will wait forever. Read the status in the response you already have.
What does each start outcome look like?
The API trigger reference separates the cases.
| Case | Response | Webhook |
|---|---|---|
| New run started | 202 | action.run.terminal when it ends |
| Idempotent replay of the same payload | 200, the existing run | Follows the original run |
| Previous run active, on_active_run skip | 200, status skipped, skip_reason previous_run_active | None |
| Previous run active, on_active_run reject | 409 action_run_in_progress | None |
| Schedule inactive | 409 action_inactive | None |
Why does the default surprise people?
Skip is the default, so a naive caller sees a 2xx and assumes a run is coming. Check the status field on every start response. Only a started run has a terminal event to wait for. Canceled runs also send no webhook, so the same rule holds: poll the receipt at GET /v1/action-runs/{id}.
What should my caller do?
Handle the response first, then decide whether to wait.
- If status is skipped, log it and stop. Do not register a waiter.
- If you want a hard failure instead, send on_active_run reject and treat the 409 as the alert.
- If a run did start, verify the webhook signature over timestamp.raw_body with HMAC-SHA256, refuse an empty secret, and dedupe on the envelope request_id, which equals run_id.
- Keep a poll as a backstop for the cases that send no event.
What is the input here?
Whatever you pass as input is data the agent reads, not instructions it obeys. A skip decision never reads it either. For the signature rules, retries (10 attempts) and the 5-minute replay window, see the run webhooks guide and the API trigger reference.
Sources
Related posts
More in Agents
- Storyboard to finished video over Sume MCP: the tool order
The order a Sume MCP client should follow: stills, inspect, wordless clips, probe, then a timeline dry run and render. Where each step bills and what to skip.
- Sume Action run 403 insufficient_scope: old keys and service accounts
A 403 on POST /v1/actions/{id}/runs means the key lacks actions:write, predates the scope, or is a service-account key. Why scopes cannot be added and the fix.
- sume skills export: review the Sume agent skill before you install it
Run sume skills export to read the packaged Sume skill's source before sume skills install writes it into .agents/skills or .claude/skills. Commands and gates.
- Vercel Hobby cron runs once a day, up to 59 minutes late
Vercel Hobby cron runs once a day with hourly precision, so a job can start up to 59 minutes late. When to move paid work to a Sume bulk run or Scheduled agent.
Written by Sume