Pause
Stop the run mid-graph, inspect, tweak, and resume — without losing a thing
- value
- value
- outcome
- resumed
ComfyUI is normally all-or-nothing: queue a workflow and it runs to the end, and if the last stage is wrong you find out after the GPU already spent itself on the earlier ones. Pause gives you a checkpoint. Drop it in the graph, and the run stops at that node with a Resume button on the node itself - while everything above it stays cached.
The workflow that made this node indispensable for me: upscale passes and final-stage samplers that cost real minutes. Pause before the expensive stage, look at what the cheap stage produced, tweak a widget if the preview's wrong, and only then let it continue. If a graph is a series of checkpoints you'd like to eyeball, this is the node that puts them in.
How it actually works
The trick is that everything above Pause has already run and stays cached. So while it waits, change any widget upstream and queue again: only the changed node and whatever depends on it re-run. You're not re-queuing the whole graph - you're resuming a partial one. That's a genuinely different behavior from muting a branch or re-running everything, and it's why the node is in the Logic category rather than IO.
The inputs are sparse on purpose. message is text drawn beside Resume - check the mask before sampling - which makes the pause self-documenting when you come back to a workflow months later. timeout is how long it waits before carrying on by itself: 600 is ten minutes, 0 waits forever. The queue holds still either way.
There's a third optional input (a value slot you can pass through), and on the way out it hands back: value (what arrived, unchanged - so Pause can sit in the middle of a chain rather than hanging off it), outcome (resumed or timed out), and resumed as a true/false you can branch on. Automate the "if nobody resumed within the timeout, continue anyway" pattern with that last one.
When to use it (and when not to)
Use it before anything expensive and worth checking - a detail pass, a video encode, a batch that takes an hour. Use it where the input is cheap but the output is a fork in the road.
Don't use it in the middle of a tight per-frame loop where you want zero interaction, and remember that a Pause left with timeout 0 will hold your queue forever if you walk away. Give unattended runs a timeout; give attended ones 0.
Installing
Pause is part of WAS Node Suite v3. ComfyUI Manager → search WAS Node Suite v3, or:
cd ComfyUI/custom_nodes
git clone https://github.com/WASasquatch/was-node-suite-comfyui
Restart after; needs ComfyUI 0.14.0+ and Python 3.10+. No extra packages or weights install - like the rest of v3 it runs on what ComfyUI already ships, a deliberate end to the old v2 suite's dependency-heavy install that kept breaking whenever ComfyUI updated.
Honest note: pause-then-resume is an interactive feature, and "resume" here is you pressing a button, not the queue restarting itself. If you're driving ComfyUI purely from the API or in a headless box, leave timeout nonzero so a run you can't click still finishes.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| message | STRING | Text drawn beside Resume: `check the mask before sampling`. Empty draws the node name alone. | |
| timeout | FLOAT | 6000–86400 | Seconds to wait before carrying on by itself. 600 is 10 minutes, 0 waits with no limit. The queue holds still the whole time. |
| valueopt | COMFY_MATCHTYPE_V3 | Anything to hold and pass on: IMAGE, LATENT, MODEL, STRING. Leave it unconnected to stop the run without carrying anything. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| value | COMFY_MATCHTYPE_V3 | What arrived, unchanged. |
| outcome | STRING | How the wait ended: resumed, timed out. |
| resumed | BOOLEAN | true where Resume was pressed, false where the wait ran out. |