Nodes/ComfyUI/Combine Hooks [2]
ComfyUI Node Runs on cloud

Combine Hooks [2]

The two-input switchboard for your hook groups

By Comfy-Org·Created 4 years ago·Updated about an hour ago· 129,962
Combine Hooks [2]
  • hooks_A
  • hooks_B
  • HOOKS

Hooks don't come one at a time for long. Once you're building regional workflows - a character LoRA for the left, a style LoRA for the right, a detail LoRA everywhere - you'll have several HOOKS wires that all need to land on the same conditioning. CombineHooks2 ("Combine Hooks [2]") is the two-input merge node: hook group A in, hook group B in, one combined HOOKS group out. It's the switchboard, and it's as simple as the family gets.

How it works

A HOOKS group is just a collection of hooks - weight patches, each with its own model and CLIP strengths. CombineHooks2 concatenates the two groups into one. Both inputs are optional; give it one and you get that one back unchanged, give it both and you get the union, give it neither and you get an empty group (harmless, does nothing). So it also doubles as an on/off switch: unplug a branch and the whole group keeps working without you deleting nodes.

The output is a single HOOKS group you feed into the hooks input of a Set Props node (ConditioningSetProperties, PairConditioningSetPropertiesAndCombine, etc.) - that's how a stack of hooks reaches the sampler. Order doesn't matter: the hooks combine, they don't compose, so there's no "which one wins" question and no strength interaction between them. Each keeps its own strengths and its own keyframe schedule.

Why you'd use it instead of chaining

Every hook-creator node already has a prev_hooks input for chaining one after another. CombineHooks2 exists for when that chain gets unwieldy or when you want a branch you can mute without rewiring. The practical pattern: one CombineHooks2 feeding a single Set Props node, with the individual hook creators upstream of it. It keeps the "which hooks go where" decision in one visible place instead of buried in a 20-node chain, and it makes swapping a region's hook a one-wire change.

The inputs and output

  • hooks_A (optional) - first hook group.
  • hooks_B (optional) - second hook group.
  • Output: HOOKS, the merged group.

That's the entire surface. No strengths, no settings.

The family context

The hooks system landed in ComfyUI core around December 2024 - the "mask and schedule your LoRA and model weights" release - and the whole family is still marked experimental. CombineHooks2 is the 2-input version of a three-node set: CombineHooks2, CombineHooks4, and CombineHooks8 exist purely so you can pick the smallest switchboard for your workflow rather than always routing through a big one. The 8-input version doesn't do anything the 2-input one can't; it just saves you from nesting three Combines. If you're only joining two hooks, this is the node.

The one trap

It's easy to mistake CombineHooks for the thing that attaches hooks to conditioning. It isn't - nothing reaches the sampler until a Set Props node stamps the HOOKS group onto a conditioning. Build the stack here, attach it there. The most common "my hooks don't work" post in this system is a beautifully combined group sitting unconnected to anything that samples.

Ships with ComfyUI core, nothing to install. Find it under advanced → hooks → combine.

Categoryadvanced/hooks/combine

Inputs (2)

NameTypeDefaultDescription
hooks_AoptHOOKS
hooks_BoptHOOKS

Outputs (1)

NameTypeDescription
HOOKSHOOKS