Pass Through Node
A type-agnostic wire with a kill switch
- input_value
- output_value
Sometimes the most useful node in a pack is the one that does nothing at all. PettyPaintPassThroughNode is a value wire: it takes whatever you give it and hands it back unchanged. No conversion, no math, no model loading. Just output_value = input_value, in any type the graph can throw at it. You reach for it when you're reworking a workflow and a node sits between two others but its type is getting in the way, or when you want a single cable you can later redirect without unplugging a dozen edges.
The name undersells the one interesting bit, which is the passit toggle. Flip it to true and the node returns None instead of the input. That's a gate, not a mute: most downstream nodes will choke on a None rather than quietly skip, so treat it as a "break this connection" switch, not a bypass. It's the graph-editing equivalent of pulling the wire out. Default is false, so in normal operation it's a pure pass-through.
The inputs and outputs that matter
Only three things on this node, which is the whole point:
input_value- any type, wildcard. Wire anything into it.passit- boolean, defaultfalse.falsepasses through;truenulls the output.output_value- the same thing you put in, in the same type.
Because both sides are wildcards (*), ComfyUI lets you connect it in places where a typed node would refuse. That's the real use case: you've got a branch that computes a MODEL or a STRING and you want to run it through a few intermediate nodes, or you're refactoring and want one place to unplug things. A plain reroute does the passthrough job with less ceremony; this node earns its keep when you also want the passit kill switch wired to something else in the graph.
Installing it
Part of the petty-paint pack, so install the whole thing once:
cd ComfyUI/custom_nodes
git clone https://github.com/mephisto83/petty-paint-comfyui-node
Then restart ComfyUI. If you use ComfyUI Manager, search the pack title "petty-paint-comfyui-node" and install from there instead - same result, one click. The pack's only declared dependency is Flask (Flask==2.1.2 in its requirements), which Manager will offer to install; this particular node doesn't need it, but the pack's server nodes do.
Common issues
The classic stumble is expecting passit to enable the output. It's the opposite: true gives you None. If a node downstream starts erroring with "NoneType has no attribute", check whether you left passit on. Otherwise the only real gotcha is that a None output isn't "no-op", it's "nothing" - wire the boolean from something like PettyPaintFileExists and you can build a conditional pass-through that actually cuts a branch mid-workflow.
If the output looks wrong, it isn't the node - it passes exactly what it received, byte for byte. That's not a bug, it's the feature.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| input_value | * | — | |
| passit | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output_value | * | — |