FlowsGuide

Debugging a flow run

When a flow misbehaves you do not read logs in a terminal: the run is drawn on the flow itself. Every step carries its status and time, the side panel holds what went in and came out, and a few tools take you straight to the cause — the first failure, the slow step, the one loop iteration out of five hundred that broke.

What you will learn
  • Read a run on the canvas and in the Run tab
  • Re-run only what failed with Retry from the failure
  • Find slow steps and waits on the Timeline
  • Jump to failed loop iterations and test one step with real inputs

The run is on the canvas

Click Run Flow (or pick a run in the Runs tab) and the canvas switches to that run: the header says Showing run, each step turns green, red, amber or dashed as it finishes, and its duration appears on the node. A loop header tells its own story — 500 items · 5 at a time, then 498 ok · 2 failed. Back to editing (or Clear run) takes the run off the canvas so you can edit again.

The Timeline: each bar splits into the time a step waited for a worker and the time it ran; overlapping lanes ran together.

The colours mean the same thing on every surface: red failed, amber failed but the flow went on (Continue on error), dashed skipped or not reached, a cache mark for a result reused from cache.

The Run tab

The side panel’s Run tab is “the run on the canvas: its data, logs and timeline.” At the top, a progress bar counts 7 of 9 steps (or stopped at Fetch prices). When anything failed, an error banner sits above everything: Failed (or Failed · the flow went on), in Fetch prices, the message, Copy error, and +2 more failures › when there are several. Inside a loop it adds iteration 3 of 20 and Go to failed iteration.

Two buttons start a new run from this one:

ButtonWhat it does
Retry from the failureA new run with the same inputs that reuses every step that already succeeded — only the failed ones run again, with the flow as it is now. Reused steps read Reused from the run being retried.
Run againA new run of the whole flow with this run’s inputs.

One step’s detail

Click a step on the run canvas to open its detail: Data (Fetch prices Input and Output), Bindings (where each input got its value), Logs (what was printed, in order), Code (the exact code this run executed), plus Iterations on a loop and Timeline. Secret values show as ••• (Secret value — not recorded). A failed script step can be handed to the flow assistant with Fix with AI.

The Timeline

Timeline shows when each step ran and how long it waited — for the whole run, or for one step’s iterations. Each bar has two parts: waited (queued, waiting for a free worker) and ran. The step’s duration counts only the running part, so a step that waited 2 s and ran 40 ms says 40 ms, with a separate waited 2 s mark. A cold start mark means a fresh interpreter had to start before the code ran — also outside the duration.

  • Lanes are real concurrency: bars side by side in different lanes ran at the same time (parallel branches, a parallel loop). A lane label reads lane 2.
  • A Retry wait segment is the pause before another attempt of a step with a retry.
  • A long waited part on many steps means the workers were busy, not that your code is slow — see workers.

Loop iterations

A loop of five hundred items is one node, but every iteration is recorded. On the canvas the loop header carries a Next failure · #37 · 1 of 2 pill: click it to jump the body to the next failed iteration. The loop’s Iterations tab is a table — Item, Status, Duration — with Failed only to keep just the broken ones and Show all to undo it; pick a row to see that iteration’s steps on the canvas.

Debugging while you edit

  1. Peek at the last run

    Select a step in the editor: if the flow’s last run reached it, two chips appear under it, In and Out. They open what that step received or returned in the last run, without leaving the editor; for a step inside a loop, pick the iteration. Open the run shows the whole run.

  2. Run up to here

    Hover a step and click its ▶, or right-click it and choose Run up to here (“Run the flow and stop after this step”). Everything above runs for real; nothing below it does — the quickest way to check a step’s output before building the rest.

  3. Test one step with real inputs

    A step’s Run test tab runs only that step. Use inputs from the last run fills its test values with what the step really received last time — for a step in a loop, one iteration’s real item and index.

The Runs tab

Runs lists every run of this flow, newest first — from the editor, schedules, API calls, triggers or other flows. Pick one to see it on the canvas. The project-wide Runs page lists every flow and script together, with filters, and nests a flow’s child runs under it.

What is kept

  • A step value over 64 KB is cut in the live view (marked as truncated) and loaded whole when you open it.
  • Secret inputs are never recorded; outputs are recorded as returned — do not return secrets.
  • Retry from the failure runs the flow as it is now: if you changed a step that already succeeded, it is still reused, not re-run.