Nodes/ComfyUI_Swwan/Image Pass (Swwan)
ComfyUI Node

Image Pass (Swwan)

The node that does nothing, on purpose

By aining2022·Created 10 months ago·Updated about 18 hours ago· 33
Image Pass (Swwan)
  • image
  • IMAGE

Its entire implementation is return image,. The pack's description is one sentence: "Passes the image through without modifying it." And the schema is nearly empty - no required inputs at all, image as an optional IMAGE, one IMAGE output.

So why does a node that does nothing deserve an entry? Because "does nothing" is a real job in a graph, and there are two specific situations where having the slot is the difference between a readable workflow and a pile of broken wires.

The two real uses

Keeping a wire alive while you work. ComfyUI's bypass and mute delete a node's effect; a pass-through keeps a socket filled. If you're temporarily unplugging a stage while you iterate, a Pass in the middle means the downstream node still sees an IMAGE-shaped input rather than an empty optional socket - which matters for nodes whose behavior branches on whether an input is connected. The plumbing-layer convention the KB documents is exactly this: an unconnected optional input arrives as None, and nodes that check for it will take a different code path. A pass-through is how you keep it non-None.

Explicitly marking a chain where a stage was removed. A Pass node with a name on it ("no upscale here") documents intent in a shared workflow, where a bare wire looks like you forgot something. Cosmetic, but people do it, and reviewers of shared graphs thank them.

There's a third, more accidental use: as a debugging probe. Drop it in, wire it up, and check that the thing you expect to arrive does arrive. Its output being empty is informative.

What it isn't

Not a reroute. Reroute nodes bend wires for legibility; the pack's Concat and utility nodes do their own work. A Pass creates a node in the graph, which means it can also be bypassed, muted, grouped, or renamed - and it costs a scheduling step. For pure wire tidying, use a reroute.

Not a fallback switch. There's no first-non-null logic here. rgthree's Any Switch is the node for "whichever branch is live"; the Pass has one input and passes exactly it.

Not a type adapter. It declares IMAGE in and IMAGE out. It won't move your mask or latent through an image-shaped hole.

And the behavior to be aware of: with nothing wired, image defaults to None and the node happily returns None. ComfyUI will generally surface that as a downstream error rather than at the Pass, which means the empty-Pass case looks like a bug in whatever came next. If a downstream node is complaining about a missing image, check whether there's an unplugged Pass in the chain before you start suspecting the consumer.

Install

cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/aining2022/ComfyUI_Swwan.git
cd ComfyUI_Swwan
python -m pip install -r requirements.txt

Windows portable:

.\python_embeded\python.exe -m pip install .\ComfyUI\custom_nodes\ComfyUI_Swwan\requirements.txt

Restart ComfyUI, hard-refresh the browser, search Swwan; it's filed under Swwan/Advanced/Image. It requires literally nothing - no models, no extra dependencies beyond torch being importable, no GPU work worth measuring. It runs as fast as a node can run and it never touches your pixels, so there is no tuning, no failure mode, and nothing to troubleshoot.

If it's missing from the node list along with the rest of the pack, that's an install problem, not a node problem: confirm the clone is at ComfyUI/custom_nodes/ComfyUI_Swwan, check the console for import errors, make sure you're on Python ≥3.11, and force-refresh the browser. The pack ships a frontend extension for its dynamic-input controls, and a stale cached copy of that script is the usual cause of a pack that's loaded but renders oddly.

CategorySwwan/Advanced/Image

Inputs (1)

NameTypeDefaultDescription
imageoptIMAGE—

Outputs (1)

NameTypeDescription
IMAGEIMAGE—