Conditional Interrupt
The one-toggle 'stop here' switch your workflow is missing
- input
- delay_helper
- output
ComfyUI doesn't really have "if this, skip the rest". Its execution order is whatever the wires say, and short of deleting nodes or bypassing a dozen of them by hand, there's no clean way to tell it to stop a run partway. That's the hole Conditional Interrupt fills. It's a pass-through node that kills the entire workflow the moment you set its proceed toggle to False. Flip it, hit Queue, and ComfyUI halts instead of burning another few minutes of generation on a run you already know is heading nowhere.
It's a repackaged version of the SRL Conditional Interrupt from seanlynch/srl-nodes, rebuilt by SparknightLLC so you don't have to install the whole parent pack to get it. That matters more than it sounds. The srl-nodes pack bundles a separate node that executes arbitrary code, which the author of this repo explicitly calls out as a potential security risk - and in an ecosystem where one malicious custom node is functionally equivalent to running a malicious executable, a pack that ships exactly one node and nothing else is the reassuring option. No dependencies, no models to download, no exec-style utilities riding along.
How it works
Under the hood it's almost embarrassingly simple. When proceed is False, the node calls nodes.interrupt_processing(), which is the same interrupt flag ComfyUI's own Cancel button throws. Everything queued after it stops; nothing downstream runs. When proceed is True, it does nothing except pass its input straight through to output. That passthrough is the whole trick - because the node sits inside your data flow, it only executes after whatever feeds it has finished, and from that position it can stop everything after it.
The inputs that matter
proceed(boolean, default True) - the kill switch. True = keep going, False = terminate. Note the logic is flipped from the original srl node, so if you're porting a workflow over, your muscle memory is wrong.input- required, accepts any type, and flows out ofoutputuntouched. Yes, required. You can't drop this in as a dangling switch; it has to be wired into the graph so something feeds it.delay_helper(optional, experimental) - a dummy input of any type, for when the interrupt fires too early.
The one real gotcha: it fires too early
ComfyUI runs a node as soon as its inputs are ready. If you wire the interrupt off something cheap that resolves early (a seed, a prompt string) while the expensive part of the workflow is still computing, the interrupt can kill the run before that slow work finishes. That's what delay_helper is for: wire it to a value that only exists after the slow step, and the interrupt is forced to wait its turn. It's marked experimental because the author is admitting the ordering problem is real and handing you a workaround rather than a fix.
Install
ComfyUI Manager: search "ComfyUI-ConditionalInterrupt" and hit install. Or the manual route:
cd ComfyUI/custom_nodes
git clone https://github.com/SparknightLLC/ComfyUI-ConditionalInterrupt
Then restart ComfyUI. That's the entire install - no requirements.txt, no pip step, no model files. It's as dependency-free as a custom node gets.
Where it fits
This is the runtime version of the manual toggling that rgthree's Fast Groups Bypasser and friends do in the UI - those switch sections off while you're editing, this lets the run itself decide to stop. Real-world niche: conditional flow is a genuinely sore spot in ComfyUI, so if you find yourself wanting "stop if this check fails", this is the cleanest single-node answer. If the only reason you were eyeing srl-nodes was the interrupt, grab this instead and leave the arbitrary-code node behind.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| proceed | BOOLEAN | true | — |
| input | * | — | |
| delay_helperopt | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | * | — |