Icy ConditioningSetMask
The mask that tells the sampler where to actually care — ConditioningSetMask, explained
- conditioning
- mask
- CONDITIONING
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 likeImagePadForOutpaint, 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:defaultapplies the mask but lets the conditioning still see the whole canvas, whilemask boundsrestricts 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| conditioning | CONDITIONING | — | |
| mask | MASK | — | |
| strength | FLOAT | 1.000–10 | — |
| set_cond_area | COMBO | 2 options: default, mask bounds |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| CONDITIONING | CONDITIONING | — |