Skip to main content
← Back to list
01Issue
BugShippedSwamp CLIPublic
Assigneeshammz

Relationships

#2594 workflow resume --timeout records cancel_reason 'The signal has been aborted' instead of a timeout reason

Opened by hammz · 9/28/2026· Shipped 9/28/2026

Summary

swamp workflow run --timeout goes through LibSwampContext.withTimeout (AbortSignal.any with AbortSignal.timeout), so a timed-out run records cancel_reason: The operation was aborted due to timeout. swamp workflow resume --timeout instead arms a setTimeout that calls abort.abort() with no reason, so the cancelled run records cancel_reason: The signal has been aborted, indistinguishable from a Ctrl+C. The same bare setTimeout pattern appears a second time in workflow_resume.ts and once in workflow_run.ts; the timers are also never cleared.

Steps to reproduce

  1. A workflow with a manual_approval gate job followed by a job running sleep 5.
  2. swamp workflow run, swamp workflow approve, then swamp workflow resume --run --timeout 2s.
  3. The run record's tags.cancel_reason is The signal has been aborted.

Expected

A resume that hits its --timeout records the same timeout reason as a fresh run.

Where

src/cli/commands/workflow_resume.ts (two setTimeout(() => abort.abort(), timeoutMs) sites) and src/cli/commands/workflow_run.ts.

Context

Found while reproducing swamp-club#2550.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 7 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

9/28/2026, 5:48:32 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
hammz assigned hammz9/28/2026, 5:21:52 PM

Sign in to post a ripple.