Nodes/ComfyUI/Cond Set Props
ComfyUI Node Runs on cloud

Cond Set Props

The gateway node that actually hands your hooks to the sampler

By Comfy-Org·Created 4 years ago·Updated about an hour ago· 129,865
Cond Set Props
  • cond_NEW
  • mask
  • hooks
  • timesteps
  • CONDITIONING
strength1.00
set_cond_area

Here's the thing nobody tells you about ComfyUI's hooks: creating a hook is the easy half. CreateHookLora gives you a HOOKS group, but a hook sitting on the canvas does nothing until it's attached to conditioning - and ConditioningSetProperties ("Cond Set Props") is one of the few nodes that knows how to do that attachment. Build a hook, feed it in here, and this node stamps it onto a conditioning so the sampler actually applies it. It's the gateway, and a lot of "my hook does nothing" confusion traces back to skipping exactly this step.

What it does

It takes one conditioning (the cond_NEW input), and applies up to four modifiers to it: a hooks group, a mask (with a strength and a set_cond_area choice), and a timesteps range. What comes out is a single, modified CONDITIONING - the same data your CLIP text encoder produced, now carrying a weight patch and a region and a time window.

The "Set Props" family comes in single and pair variants, and with and without a built-in combine step. This is the plain single-cond one: it modifies the conditioning you give it and returns it as-is, no merging. If your pipeline already manages the merge elsewhere, this is the one you want. If you want the modifier and the merge in one node, grab ConditioningSetPropertiesAndCombine instead - it takes an existing cond, layers the new one on, and returns the blend.

The inputs that matter

  • cond_NEW - the conditioning to modify. Wire your CLIP text encode output here.
  • hooks - the HOOKS group. This is the whole point. Without it, this node is just a weaker re-implementation of the classic ConditioningSetMask.
  • mask - a MASK defining the region. White is affected, black is not.
  • strength - only applies when a mask is connected. It's the mask strength, how strongly the region blends in. Default 1.0. With no mask, changing it changes nothing.
  • set_cond_area - "default" or "mask bounds". Set it to mask bounds for region work; "default" is the setting that lets influence leak past the mask edge and produce the smeary, boxy artifacts people blame on the whole system.
  • timesteps - a TIMESTEPS_RANGE output from ConditioningTimestepsRange, to restrict the conditioning to part of the sampling run.

Where it fits

Hooks were added to core in December 2024 as a way to mask and schedule LoRA and model weights - regional weights rather than regional prompts. This node is how a regional-prompting-style workflow (left half one LoRA, right half another) gets its patches onto the right conds. It's also the node you reach for when you want a hook to apply only during the first third of sampling: hook + timesteps here, and the weight fades out of the equation once composition has formed.

Common issues

The recurring failure is thinking the hook applies on its own. It doesn't - it must travel on the conditioning into the sampler. If you attached your mask and strength and saw zero change, check two things: is a mask actually connected (strength does nothing without one), and does the conditioning you're modifying actually carry a hook? One more real-world caveat: each hooked conditioning means a separate model pass, so don't be surprised when a one-region hook workflow runs slower than a plain one. That's the price of the feature, not a bug.

Ships with ComfyUI core, nothing to install, marked experimental. Find it under advanced → hooks → cond single.

Categoryadvanced/hooks/cond single

Inputs (6)

NameTypeDefaultDescription
cond_NEWCONDITIONING
strengthFLOAT1.000–10
set_cond_areaCOMBO2 options: default, mask bounds
maskoptMASK
hooksoptHOOKS
timestepsoptTIMESTEPS_RANGE

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING