ComfyUI Node

Break

Pause a ComfyUI Run, Save the Half-Baked Image, Finish It Later

By shinich39·Created about a year ago·Updated 5 months ago· 2
Break
  • any
  • ANY

Every ComfyUI regular knows the feeling: your pipeline is mid-run, you're two KSamplers deep, and you want to eyeball the first pass before committing to the rest - or you're out of VRAM, or the queue just dies. Normally that means re-running from the top with half the graph bypassed. The Break node from shinich39/comfyui-break-workflow does what you'd rather do: stops execution dead at a point you choose, saves the incomplete result, and lets you pick the run back up later without redoing the part you already did.

It's a tiny, single-node pack from shinich39 - one of those MIT-licensed utility repos the community churns out - and the name is doing real work here, not just marketing. "Break" interrupts your workflow like a break statement in code: everything upstream of it runs, everything downstream is skipped until you tell ComfyUI to continue.

How it works

The Python node itself is nearly empty: it takes one input of any type and passes it straight through. That's the trap and the cleverness - the actual mechanism lives in the pack's frontend JavaScript, which hijacks ComfyUI's queue prompt the moment you hit Run.

Here's what happens under the hood. When you queue a run, the extension scans the graph for Break nodes, then walks every node downstream of each one and tags it with a "break" counter. Any node with a break value greater than zero gets its prompt entry stripped from the queue - so the sampler only executes the upstream half of the graph. In other words, you wire a Break into your data flow and everything after it simply doesn't run, while the nodes before it finish normally.

The continue trick leans on ComfyUI's workflow-in-the-image metadata culture: save your partial result (a VAE Decode → Save Image placed before the Break is the standard pattern), then drag that image back onto ComfyUI. The frontend reads the embedded workflow out of the PNG (it also handles WebP, FLAC, and a few others), re-queues it, and each pass decrements the break counters until they hit zero and the downstream nodes execute.

That's also why you can chain them. KSampler → Break → KSampler → Break → KSampler skips in stages - each Break consumes one continue run, so you get two pause points and need to run twice to get all the way through.

The inputs and outputs that matter

There's exactly one, and you can't really get it wrong: a single required any input (type *) and one matching ANY output (also *). It's a pure pass-through - the input is just a carrier. Wire any output into the Break, then wire the Break's ANY into the next node. Whatever type flows in flows out unchanged; the Break's job is to be a marker in the graph that the frontend can see.

One genuinely useful UI bit: the node has a "Drop images here to continue" button. Drop an unfinished image (or several) right onto the Break node and they get queued automatically, one continue-run each. Click the button itself and it just selects the downstream, still-broken nodes so you can see what's waiting to run.

Installing it

No models, no requirements.txt, nothing heavy to download - this is one of the few packs where install is genuinely painless. Easiest route is ComfyUI Manager: search for comfyui-break-workflow and install. Manual install is the usual two lines:

cd ComfyUI/custom_nodes
git clone https://github.com/shinich39/comfyui-break-workflow

Then restart ComfyUI. Because the logic is frontend JavaScript, do a hard refresh (Ctrl+Shift+R) on the web UI after install - stale cached JS is the classic "why don't I see the node" gotcha with frontend-heavy extensions.

Gotchas

A few things bite people, all grounded in how the pack is built. First, the work happens in the browser, not the API - the extension monkey-patches api.queuePrompt client-side. If you're driving ComfyUI purely through the API or a headless queue, the break never happens; this is a web-UI feature through and through.

Second, "Remove Break After Generation" is on by default. After you continue past a break, the node deletes itself from the graph and rewires the links, so the workflow runs straight through next time. Great for a one-off resume; annoying if you wanted a reusable checkpoint. Flip it off in the extension's settings (they live under a category the author named "Pray for modularism" - the pack has a sense of humor) if you want the break to persist.

Third, continue depends on the saved image still carrying its workflow metadata - if your Save node strips PNG metadata, there's nothing to reload. And since this is a frontend extension, a ComfyUI update can break it the way the Nodes 2.0 rewrite broke bigger packs; the fix is usually a git pull and a browser refresh.

It's not a node you'll reach for every day. But when you're mid-pipeline and want to check the first pass before committing to the second, Break is exactly the right size of tool for the job.

Categoryutils

Inputs (1)

NameTypeDefaultDescription
any*

Outputs (1)

NameTypeDescription
ANY*