Nodes/ComfyUI-Interactive/Interactive Selector
ComfyUI Node

Interactive Selector

Click-to-choose branches in ComfyUI, no re-queue needed

By lquesada·Created 2 years ago·Updated about a year ago· 53
Interactive Selector
  • images
  • selector
propagate_deselecttrue
selectedfalse

Normally when ComfyUI hits a fork in the graph, it runs every branch you've wired up, or you pick one ahead of time and re-queue if you guessed wrong. InteractiveSelector breaks that pattern: it puts a literal button on the node, and the workflow stops and waits at that button until you click it. You look at the image sitting on the node, decide "yes, this one," click, and only then does execution continue down that path. No re-queuing, no manual bypassing of the branches you didn't want - you just pick, live, mid-run.

It's built by lquesada, the same author behind the widely-used Inpaint Crop & Stitch nodes, and it's the answer that keeps coming up when someone on r/StableDiffusion asks for a way to "pause generation so you could choose which one to use." It fills a real gap: rgthree's group bypasser lets you toggle branches before you hit queue, but Interactive Selector lets you look at actual output and decide during the run.

How it works

Drop an InteractiveSelector wherever a branch of your workflow produces an image you might want to keep or discard - after a KSampler, after an upscale pass, wherever. Feed it the image. Now hook one or more of these selectors into an InteractiveSwitch node downstream. When you click a selector's button, its selected state flips to true and the switch reads that as "this is the path to continue." Everything downstream of the switch only fires once a selection has actually been made - that's the pause.

You can also use a single selector on its own, wired straight into a switch, as a plain gate: click it to let a whole path through, leave it unclicked to block it. That's a change the author added specifically (2024-11-15 changelog) because people wanted the on/off use case without needing multiple competing branches.

The inputs and outputs that matter

  • images (optional, IMAGE) - what gets shown on the node and passed through if this selector is the one chosen. Leave it unplugged and the selector still works as a bare toggle.
  • selected (boolean, default false) - this is the button state itself. You don't usually touch it as a widget; clicking the node's button is what flips it.
  • propagate_deselect (boolean, default true) - when you deselect this selector (or reset it), any selector further down the workflow that depended on this path gets deselected too, so a multi-step choice tree resets cleanly instead of leaving stale selections hanging around. Turn it off if you want selectors to hold their state independently.
  • selector - the output, typed interactive_images. This is a special connector type: it only plugs into an InteractiveSwitch (or InteractiveSwitchWithParameters). Don't expect to wire it into a normal IMAGE input.

How to install it

Easiest path is ComfyUI Manager - search "ComfyUI-Interactive" and install. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/lquesada/ComfyUI-Interactive

then restart. There's no requirements.txt to run and nothing to download - this is pure graph/UI logic, no models involved.

Common issues & troubleshooting

Nothing happens when I click the button. The pack's own best-practice note is the usual culprit: it needs auto-enqueue off and an empty queue. If ComfyUI is mid-run on something else, or auto-queue keeps firing new prompts, the pause-and-wait behavior can't hold - it needs a genuinely idle queue to sit in.

Selections get lost or ignored. If you've routed the connection between a selector and its switch through cg-use-everywhere ("Anything Everywhere") nodes, that's a documented incompatibility - those nodes rewrite links in a way that can break the state propagation this pack relies on. Keep at least one direct or indirect real wire between selector and switch.

A whole chain of selections resets when I didn't expect it. That's propagate_deselect doing its job - deselecting an earlier selector cascades forward by design. If you want selections to stick independently instead, turn it off on the ones you don't want cascading.

Categoryinteractive

Inputs (3)

NameTypeDefaultDescription
propagate_deselectBOOLEANtrue
selectedBOOLEANfalse
imagesoptIMAGE

Outputs (1)

NameTypeDescription
selectorinteractive_images