image pass
A named mailbox for invisible wires
- image
- mask
- image
- mask
If you've ever loaded a big modular workflow - the AegisFlow family is the obvious one - you've seen nodes like this and assumed they were dead weight. A node that takes an image in and pushes the same image out, no visible reason. It's not. The Aegisflow Image Pass is the most-used member of the pack's "passer" family, and once you get why passers exist, a lot of confusing workflow design suddenly clicks.
What it actually does
Pass-through, full stop. An image goes in, the same image comes out, and there's an optional mask input that rides along as a second output. That's the entire mechanism - the source is a few lines that return whatever you gave it (or None if you gave nothing). The value isn't in the node's own logic; it's in what the existence of the node does to your graph.
Why you'd reach for it
The author (Aegis72) built this pack to solve a problem that plagues modular workflows: ComfyUI and several popular custom node packs try to "fix" open required inputs by auto-wiring any matching output into them - and sometimes wire the wrong thing, silently breaking the workflow. Passers sidestep that because their inputs are optional, and optional inputs don't trigger the autofixing.
There's a second job, and it's the one you'll actually use. With "Use Everywhere" / "Anything Everywhere" style nodes - the invisible-broadcast family that lets one sender reach many receivers without drawing wires - the passer is a nameable target. Rename it (right-click → Title), point your sender at it, and the image arrives at runtime. It also plugs the open receptor at the end of a group's sockets, so a half-built template doesn't error while you're still working on it.
Worth knowing: invisible wiring is genuinely controversial in the community - there was a notable "Please stop using the Anything Anywhere extension" backlash precisely because invisible wires make graphs impossible to debug. The passer is the compromise: the magic still happens, but there's a visible, named anchor you can search for.
Inputs and outputs
- image (
IMAGE, optional) - whatever image tensor you want passed through. - mask (
MASK, optional) - rides along to the second output. - Outputs: image (
IMAGE), mask (MASK).
If you leave a socket empty, that output is None. That's fine when a sender is filling it at runtime, and a trap if not.
Installing it
Same story for every node in this pack - you get them all at once:
cd ComfyUI/custom_nodes
git clone https://github.com/aegis72/aegisflow_utility_nodes
Then restart ComfyUI. Or use ComfyUI Manager → Install Custom Nodes → search "AegisFlow Utility Nodes". No models, no heavy dependencies - it's pure Python on top of torch/PIL, which ComfyUI already has.
Where people get burned
The classic mistake: leave the image input empty, wire the output straight into a KSampler or a save node, and wonder why it errors. The passer only returns a real image if something actually fills the input - either you wire one in, or a Use Everywhere sender targets the node's name. Treat it as a mailbox, not a generator. If you're only moving images and want one lean anchor point, this is the one; if you want the whole SD 1.5 stack passed through one node, the pack's "multi pass" is the bigger sibling.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| imageopt | IMAGE | — | |
| maskopt | MASK | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| mask | MASK | — |