Skip to main content
← Back to list
01Issue
BugTriagedSwamp CLIPublic
Assigneesstack72

Relationships

#1833 workflow resume writes no progress to a redirected stdout until the run ends

Opened by jeroen · 8/26/2026

Running swamp workflow resume <workflow> with stdout redirected to a file (a background shell, not a TTY) produces no output in that file while the run progresses. The preceding swamp workflow approve in the same command line wrote its two lines immediately; the resume that followed it wrote nothing for 20+ minutes, while swamp run history --active showed the workflow and its current method running normally.

Effect: a long human-driven run started in the background is unobservable through its own output. Step transitions, the URLs the run logs while it polls, and any failure message are invisible until the process exits. Run progress has to be tracked out of band with swamp run history --active.

Repro:

  1. swamp workflow run <w> with a manual_approval gate; it suspends.
  2. swamp workflow approve <w> <step> && swamp workflow resume <w> > out.log 2>&1 &
  3. wc -c out.log while later steps are running: it holds only the approve output.

Expected: the same progress lines a TTY gets, line-buffered, as the run advances - or at minimum each step transition.

Environment: swamp 20260825.013404.0-sha.59b73704, Linux, zsh.

02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW

Triaged

8/26/2026, 7:26:31 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack728/26/2026, 7:14:05 PM
Editable. Press Enter to edit.

stack72 commented 8/26/2026, 9:51:33 PM

@jeroen — investigating, need a few details to reproduce. I've traced the output pipeline end-to-end and can't reproduce the buffering on Linux (Deno 2.8.3, compiled binary, piped to file/pipe). console.log flushes on every call through Rust's LineWriter. The event chain from the execution service through the renderer to stdout has no intermediate buffering either.

A few things would help narrow it down:

  1. Exact shell command — the repro shows approve && resume > out.log, but in POSIX shells > only redirects resume's stdout, so approve's output wouldn't be in out.log. Were you using a subshell wrapper like { approve && resume; } > out.log 2>&1 &, or a different syntax?

  2. SWAMP_SERVE_URL / --server — was this a local run or going through swamp serve? The server path has a different event delivery mechanism.

  3. --quiet / -q — was either flag passed or SWAMP_LOG_LEVEL set? In quiet mode, method output is buffered internally (discarded on step completion), and only step transition lines are written.

  4. Content of out.log after exit — when the process finished, did the full expected output appear in the file? Trying to confirm the output was written but delayed vs. never written at all.

Sign in to post a ripple.