Any Pass
The wire stretcher that earns its keep
- value
- value
A node whose entire job is to take whatever it's given and hand it back unchanged. Any Pass has one input (value) of the wildcard * type - which, thanks to ComfyUI's ANY escape hatch, accepts literally anything: a model, a latent, an image tensor, a string, a list - and one output (value) of the same type. The Python behind it is one line: return (value,). That's the kind of node that reads as a prank until you've actually tried to lay out a big graph.
It's from 2daadv's ComfyUI-GadgetNodes pack (Gadget/logic category, MIT, one developer, brand new with no community track record yet). Install: ComfyUI Manager → search "GadgetNodes", or git clone https://github.com/2daadv/ComfyUI-GadgetNodes into custom_nodes/, pip install -r requirements.txt, restart.
So what's a pass-through for? Three honest jobs, in order of usefulness:
- Wire routing and length. ComfyUI cables can't be manually bent around obstacles the way you'd like. Drop an Any Pass next to a node, run a short cable in and out, and you get a free elbow that lets you route a long wire around a cluster without crossing forty other wires. It's the reroute pattern from the plumbing layer, as a node instead of a keyboard shortcut.
- Type-agnostic capture points. Because the
*type accepts anything, you can tee into a wire of unknown type - say, to run a branch to a debug or display node - without knowing or caring what's flowing. That's its edge over a typed node, which would refuse a mismatched connection. - Decoupling for tidiness. One source feeding many consumers can turn into a knot; a pass-through gives you a clean junction where a value fans out.
The critical caveat, and it's the one to actually remember: this node does not change, copy, or convert anything. It cannot fix a type mismatch - if the receiving node needs an IMAGE and you hand it a LATENT, Any Pass won't save you, because it doesn't transform the value. Any bug you have downstream of an Any Pass is the same bug you'd have without it; you've only changed the geometry of the graph, not its semantics.
The other thing to know is cultural: *-typed nodes like this one are exactly what the "Please Stop using Anything Anywhere" crowd complains about, and the complaint has a point - wildcard nodes can hide what type is really flowing, making a graph harder to debug. Use Any Pass for geometry and teeing, not as a way to pretend a type mismatch away. Used that way, it's one of the least surprising nodes in the pack: in is out, no questions asked.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| value | * | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| value | * | — |