Icy KSamplerAdvanced
KSampler with a scalpel
- model
- positive
- negative
- latent_image
- LATENT
Same pack disclaimer, stated once: IcyKSamplerAdvanced is the ComfyUI-IcyHider wrapper of core KSamplerAdvanced - identical node, renamed class so the hiding extension can cover it. Install the pack or use the core node; the behavior doesn't differ.
What does differ is how this node relates to the plain KSampler. KSampler runs a whole denoising pass from "the beginning" to "the end" with a single denoise dial. KSamplerAdvanced replaces that one dial with two explicit step boundaries - start_at_step and end_at_step - plus two switches for what happens before and after the pass. That makes it the tool for multi-pass workflows where one sampler isn't enough: hires fix, inpaint refinement, and any "pass A then pass B" pipeline.
The extra inputs, decoded
Everything from KSampler is here (model, seed, steps, cfg, sampler_name, scheduler, positive, negative, latent_image), plus three things you only find in the advanced version:
- start_at_step / end_at_step (INT, 0–10000) - which slice of the total schedule this pass covers. The plain sampler's
denoise: 0.5is roughly the same idea expressed as a fraction; here you write it as absolute step numbers. For a hires-fix second pass you typically setstart_at_stepto something like 10 andend_at_stepto 20 (of 20) - i.e., "finish the back half of a fresh schedule." The KB's upscaling material describes exactly this two-pass structure. - add_noise (enum,
enable/disable) - whether this pass starts from fresh noise. Enable for the first pass of a sequence; disable for later passes so they build on the existing latent instead of nuking it. - return_with_leftover_noise (enum,
disable/enable) - whether to hand the next node a half-finished latent.enablewhen you're chaining passes and the next sampler is going to keep going;disable(default) when you want a "done" latent that's ready for VAE decode.
The mental model
Think of a sampler pass as covering a slice of the noise schedule, [start_at_step, end_at_step) out of steps. Advanced gives you full control over the slice, whether fresh noise enters at the start, and whether the slice ends clean or "still noisy" for the next node to finish. That's everything a hires-fix or a multi-pass inpaint needs, and it's why this node, not the plain one, shows up in sophisticated graphs.
When to reach for it
- Hires fix done properly - first pass at low res, second pass at high res on the back half of the schedule (the KB's "two-pass sampling" from the ecosystem doc).
- Chained refinement passes where each stage covers a different slice.
- Reproducing shared workflows - a lot of advanced graphs use this node specifically.
If you're on a simple txt2img setup, the plain KSampler is friendlier. This one earns its complexity only when you're staging multiple passes.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/icekiub-ai/ComfyUI-IcyHider
Restart, or use ComfyUI Manager (search "IcyHider"). No pip dependencies, no models.
Common issues
- Missing node in shared workflows - install the pack or swap in core
KSamplerAdvanced. - Second pass looks like it ignored your settings. Most likely
add_noiseleft onenable- the second pass is starting from fresh noise instead of continuing your latent. - Bands or artifacts mid-image. Your
start_at_step/end_at_stepslice overlaps or skips part of the schedule awkwardly. Count your steps: the boundaries are absolute, not percentages.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| add_noise | COMBO | 2 options: enable, disable | |
| noise_seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 8.00–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | — | |
| start_at_step | INT | 00–10000 | — |
| end_at_step | INT | 100000–10000 | — |
| return_with_leftover_noise | COMBO | 2 options: disable, enable |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |