Sume skipped run with previous_run_active: what it means, what to do

A scheduled Sume run is skipped with skip_reason previous_run_active when the last one is still going. It is not billed work. How to detect it and avoid it.

5 min readSume
All posts

It means the previous run of that schedule had not finished when the next fire came, so Sume did not start another one. The new run has status skipped, skip_reason of previous_run_active and is never started. The fix is to fire less often than a run takes, not to retry the skipped run.

Read the status first

The run lifecycle is queued, processing, then one of completed, failed, canceled or skipped. Branch on the status and not on the presence of output, because output is null unless the status is completed or failed.

Run statuses on a schedule (read 2026-10-05)
StatusMeaningOutput populated?Your action
completedFinishedYesUse output
failedFinished with an errorMaybeRead error and output_error
canceledA cancel stopped itNoStop
skippedAnother run was activeNoWiden the interval
def handle(run: dict) -> str:
    status = run["status"]
    if status == "skipped":
        return "widen the interval: " + str(run.get("skip_reason"))
    if status == "completed":
        return "use output"
    if status == "failed":
        return "alert: " + str((run.get("error") or {}).get("code"))
    return status


print(handle({"status": "skipped", "skip_reason": "previous_run_active"}))

Webhooks do not cover cancel

A webhook also tells you when a run ends. A canceled run sends no webhook, so poll status_url after you cancel. See Run webhooks.

Check the docs before you ship

Sume's limits and field names change faster than blog posts do. Read the linked docs pages for the current request fields before you ship, and send a dry_run or a low spend cap on your first real call.

Sources

Related posts

More in Agents

All Agents posts

Written by Sume