ComfyUI Node

Uncond Skip

MOSS-Image's negative-pass trick, with an actual dial on it

By Nynxz·Created 12 months ago·Updated 9 days ago· 4
Uncond Skip
  • model
  • model
◄blocks22►
◄strength1.00►
◄start_percent0.00►
◄end_percent1.00►

MOSS-Image ships with a quirk in its own sampling recipe: uncond_skip_layers=[22]. The negative pass runs with block 22 left out. That sounds like a defect, and it is - deliberately. CFG steers away from the unconditional prediction, so if you make the unconditional prediction worse in the right way, steering away from it sharpens detail.

This node takes that one-off and turns it into a continuous control. Instead of dropping block 22's contribution to the uncond pass, it scales it. strength 1 is MOSS's own skip, 0 is no skip at all, and anything between is a dial MOSS doesn't give you.

What's actually happening

ComfyUI batches the cond and uncond passes into one model call and tells the model which batch rows are which through cond_or_uncond. This node reads that, and for the uncond rows only, scales the block's residual - what the block adds to the token stream - by 1 - strength. The conditional pass is never touched. And unlike Skip Layers' guidance mode, it costs no extra model call: it's a multiply on rows that were already going through.

That asymmetry is the point. You get a sharper prediction for free, because you're only degrading the thing you were going to steer away from anyway.

start_percent and end_percent fence it to part of the run, and the author's suggestion is worth following: try end_percent 0.6. The skip shapes detail early; letting the last steps run plain CFG gives a more natural finish. All the way to 1.0 works too - it's just crisper and slightly more artificial-looking.

blocks takes 22, or 22, 24, 26. 22 is the recommendation; 24 and 26 help too. strength goes to 1.5 if you want to push past "fully skipped" into negative territory, which exists mostly to prove the direction is smooth.

The one thing that will confuse you

This node does nothing at CFG 1. It works by weakening the unconditional pass, and at CFG 1 there is no unconditional pass - ComfyUI skips it entirely, so there's no uncond rows in the batch for the node to find. It bails out cleanly and you get your image unchanged.

That's not a bug in the node, it's the same wall everyone hits on guidance-distilled checkpoints: negatives and CFG-based tricks are dead at CFG 1 by design, and the fix is either real CFG (a non-distilled base, or the 1.2–1.5 range on some tunes) or a guidance method that doesn't need an uncond pass at all. If you're loading MOSS-Image properly you're at CFG above 1 and this node is in its element.

The flip side, also from the author's own notes: strength 0 is not a neutral setting you can trust as "off". It genuinely looks more real than skipping - and lets fine details collapse. The skip is a quality trade, not a pure win. Which is why the start/end window matters more than the strength number.

Install

Same pack, one install:

comfy node install comfyui-nynxz-nodes

Or Manager - search Nynxz - or from source:

cd ComfyUI/custom_nodes
git clone https://github.com/Nynxz/ComfyUI-NynxzNodes
cd ComfyUI-NynxzNodes
pnpm install && pnpm build

Restart ComfyUI. There are no Python dependencies to install; the node rides core's patcher and sampler plumbing. ZenKit is optional and only adds panels.

Troubleshooting, honestly

If it seems to do nothing, check CFG before anything else - that's the cause nine times in ten.

If your image looks fried, back strength off toward 0.7 before you go touching anything else, and use end_percent to release the skip early.

If you get a ValueError about block lists, you've put a number that doesn't exist on this model - the node picks the block stack by name and indices past the end are ignored, but a model with no recognisable stack raises loudly. MOSS-Image has 42 blocks (0–41), so 22 is comfortably in the middle, which is where the recipe wants it.

CategoryNynxz/Sampling

Inputs (5)

NameTypeDefaultDescription
modelMODEL—
blocksSTRING22Block numbers from 0: `22`, or `22, 24, 26`. MOSS recommends 22; 24 and 26 help too.
strengthFLOAT1.000–1.5How much of the blocks' work the negative pass loses. 1 = skipped (MOSS's default), 0 = untouched, above 1 = pushed further.
start_percentFLOAT0.000–1Where in sampling it starts, 0 = first step.
end_percentFLOAT1.000–1Where it stops. Try 0.6: it shapes detail early, and the last steps run plain CFG for a more natural finish.

Outputs (1)

NameTypeDescription
modelMODEL—