Runs
The Runs tab lists every run of the flow: when it started, how long it took, and how it ended. Expand a run to reveal its trace as a vertical timeline with a status rail, one card per step showing the node, its type, its recorded duration, its per-step cost where recorded, and its outcome.
Statuses that tell the truth
- →Succeeded, Failed, Cancelled: terminal outcomes, with the failure message rendered on the step that failed.
- →Queued and Running: live states. Running flows update in place.
- →Awaiting approval: the run is durably parked at a human gate or a decision that could not evaluate, and it can wait minutes or weeks without being reaped.
- →Skipped: downstream steps of a failure are marked with the reason, for example "Skipped - an upstream step failed", so a dead branch reads as a consequence, not a mystery.
External calls are recorded with substance: an HTTP Request step logs the response status, latency, and response size in bytes, and flags when a large body was truncated for storage. The trace records what actually came back, not just that something did.
Approval is on the record
A run paused at a Human node resolves through the resume API: one call with an approve or reject action and an optional note. Approval marks the step succeeded and writes the receipt into the trace, "Approved by human" with the note and the approver’s identity and timestamp. Rejection fails the step with the note, marks every later step skipped, and ends the run failed, with a notification to the owner. Decision gates that paused resolve the same way with true or false.

The gate is enforced, not decorative: when a flow assigns a specific approver, only that person can release it. Approvals can also carry a freshness budget: a decision that sat too long is refused with an explicit remedy to re-run the flow so the gate re-evaluates against current state. A stale yes is not a yes.

Failure and recovery
Running steps heartbeat as they execute, and a recovery sweep reaps runs whose driver went silent, marking them failed with the honest reason: the flow driver was lost on a server restart. A run waiting at a gate is exempt by design, because waiting is not stalling: an approval can outlive any number of restarts. A failed run can be retried, and the trace follows the new run.
The trace is authoritative for run status. If a step looks stuck, trust the trace row over the canvas animation.