Trigger Passthrough Node
The node that does nothing on purpose (and it's useful)
- image
- IMAGE
- STRING
- STRING
Trigger Passthrough is the node in this pack that does nothing - every input goes straight to the matching output, untouched - and the "nothing" is the entire point. Its real job is execution control, and it earns its keep once you understand one quirk of how ComfyUI runs graphs: a node only re-executes when one of its inputs changes. Change nothing, and a re-run of the queue silently skips entire branches of your workflow, because ComfyUI sees no reason to do the work again.
That's usually what you want - it's why re-running doesn't re-roll your seed. But sometimes it's exactly the opposite of what you want. You've got a prompt you like and you want to re-roll just the sampler's output, or you're iterating on a branch and keep getting a cached result with no obvious lever to force a fresh pass. That's what this node is for: it sits inline in a branch, and when you edit its trigger field, the change propagates downstream and forces everything past it to actually run again.
Inputs and output
All three inputs are optional, which is how it works as both a lever and a bundle:
image- an IMAGE, passed straight through to the first output.text- a STRING, passed straight through to the second output.trigger- a STRING, default"Triggering next...", passed to the third output. This is the "kick": change its text and the downstream path re-executes.
Outputs: IMAGE, STRING, STRING - image, text, trigger, in that order. Wire them onward exactly as if the node weren't there.
So you get two behaviors for the price of one node. Need a manual re-run button? Change the trigger. Need to carry an image plus a prompt plus a "kick" value down one wire so everything downstream re-fires together? Same node, all three outputs. That bundling matters in big graphs - one node to reroute three values beats three reroutes cluttering the canvas.
The honest framing
There's no mechanism to explain beyond return (image, text, trigger). The value is ergonomic, not technical - you could force a re-run just as easily by nudging a seed or a KSampler input, but that's fiddly and easy to forget. This node turns "re-run this branch" into an obvious, labeled action. That's a genuinely useful thing in a workflow you'll come back to, even if it sounds like nothing when described.
Installing it
Same pack as the rest: zero dependencies, no model files, Python stdlib only. ComfyUI Manager - search i-zygion-util-nodes - or by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/zygion/comfyui-zygion-util-nodes
Restart ComfyUI, then look under Zygion Custom Nodes.
Troubleshooting
The one real trap: image is optional, so if nothing is connected, the IMAGE output is None - and a None fed into a node that expects a real IMAGE tensor will error. Either connect an image or leave the image wire disconnected entirely rather than threading a None through. Other than that, the only "failure" is expectation mismatch: if you re-run without changing anything, nothing happens - that's the design, and the fix is changing the trigger.
Verdict: it's a little utility that turns a ComfyUI execution quirk into a button. Not exciting, but once you've hit the "why won't this branch re-run" wall, you'll be glad it's there.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| imageopt | IMAGE | — | |
| textopt | STRING | — | |
| triggeropt | STRING | Triggering next... | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| STRING | STRING | — |
| STRING | STRING | — |