Nodes/ComfyUI-IcyHider/Icy ConditioningSetMask
ComfyUI Node

Icy ConditioningSetMask

The mask that tells the sampler where to actually care — ConditioningSetMask, explained

By icekiub-ai·Created 9 months ago·Updated 9 months ago· 31
Icy ConditioningSetMask
  • conditioning
  • mask
  • CONDITIONING
strength1.00
set_cond_area

IcyConditioningSetMask is the IcyHider-relabeled version of ConditioningSetMask, one of the load-bearing nodes in masked inpainting. If you've built a mask-based inpaint workflow and felt vaguely confused about why there are two mask-related nodes - this one and SetLatentNoiseMask - this is the one that governs the prompt side.

What it does

It takes your conditioning and a MASK, and stamps the mask's shape onto the conditioning so the sampler knows which pixels your prompt actually applies to. The idea: when you're inpainting a small region, you don't want the prompt fighting over the whole canvas - you want it focused on the hole, with the rest left alone. That's what this node enforces.

The inputs:

  • conditioning - typically your positive prompt's conditioning.
  • mask - a binary or soft mask (from a load, an inpaint node like ImagePadForOutpaint, SAM, or anywhere else masks come from).
  • strength - how hard the mask constraint bites, default 1.0. Below 1.0 loosens the effect, which is handy when a masked region feels too "locked in."
  • set_cond_area - the dropdown that matters, with two choices: default applies the mask but lets the conditioning still see the whole canvas, while mask bounds restricts conditioning to just the mask's bounding box. "Mask bounds" is the ComfyUI equivalent of A1111's "inpaint only masked" - tighter, faster, and the right choice when you're touching up a small area and don't want the prompt leaking into the untouched surroundings.

Output is a CONDITIONING that goes into the sampler's positive input (and often the negative too, with its own mask handling).

Where it fits

The canonical masked-inpaint chain: build or load a mask → ConditioningSetMask (with "mask bounds" if it's a small fix) → encode the masked image → sample. Pair it with SetLatentNoiseMask on the latent side and you've got the full "inpaint only here" recipe. The KB's standing advice for small fixes: only-masked with adequate padding (32–64px) and soft mask edges beats full-canvas inpainting every time - this node is how you express "only masked" in prompt-land.

Where people get burned: the mask and the conditioning are in different coordinate spaces and sizes. A mask from one resolution wired into a conditioning for another produces silently wrong results - the node doesn't warn you. Resize or pad the mask to match before connecting.

Install and the "Icy" part

It's an IcyHider clone, so install is the pack install: ComfyUI Manager → "IcyHider", or:

cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider.git

then restart. No pip dependencies, no model downloads. The node sits under IcyHider Comfy Core. And the honest note: it outputs conditioning, so the preview-hiding wrapper has nothing to hide here - the core ConditioningSetMask is byte-for-byte the same math. Reach for the Icy version if you're standardizing on the IcyHider category in your graph; reach for the core one if you're not. Both do exactly this.

CategoryIcyHider Comfy Core

Inputs (4)

NameTypeDefaultDescription
conditioningCONDITIONING
maskMASK
strengthFLOAT1.000–10
set_cond_areaCOMBO2 options: default, mask bounds

Outputs (1)

NameTypeDescription
CONDITIONINGCONDITIONING