Tangential Damping CFG
A zero-knob CFG quality patch you can forget you installed
- model
- patched_model
TCFG - Tangential Damping CFG - is the node with exactly one job and zero knobs. You drop a model in, get a patched model out, and never think about it again. It refines your negative (uncond) prediction so it aligns with your positive (cond) prediction before the CFG combine, which sounds subtle and is: images come back a little cleaner, a little more coherent, with no settings to tune and no way to break it. It's the research-paper version of "free quality."
It's based on the Tangential Damping CFG paper (arXiv 2503.18137) and landed in ComfyUI core in July 2025. If you've seen this node and assumed it was another oversaturation patch like CFGNorm or RescaleCFG - it isn't. It attacks a different problem: your negative's prediction often points in a direction that's partly tangential to your positive, and that wasted component is where artifacts and mush come from.
How it works
Every CFG step, the sampler predicts the denoised image twice - once with your prompt, once with the negative. TCFG intercepts the pair before the CFG combine (a pre-CFG hook) and applies an SVD to the two score vectors. It keeps only the component of the uncond score that lies along the dominant singular direction shared with the cond score, and discards the tangential rest. The refined uncond then gets plugged back into the normal CFG formula.
That's it. One SVD per step, and the source even falls back to CPU if the GPU's SVD raises a runtime error, so it's robust across hardware. Because there's no extra forward pass, the speed cost is a rounding error - the node adds nothing to your step count and barely anything to per-step time.
Inputs and what to set
There are none. The full interface is:
model- the MODEL to patch.
Output is patched_model, a MODEL for your sampler. It ships with ComfyUI core; there's nothing to install and nothing to configure. This is genuinely a fire-and-forget node.
Common issues & troubleshooting
It needs a real negative pass. The source explicitly skips the whole thing when either the cond or uncond prediction is None. On guidance-distilled models running at CFG 1 - Z-Image Turbo, Schnell, any Lightning/Hyper checkpoint - there is no uncond pass, so TCFG is a no-op. It's a tool for models that run actual CFG: SD 1.5, SDXL, Wan at CFG 3+, anything SD-lineage. If you're on a Turbo and "nothing changed," that's expected, not a bug.
The effect is modest by design. Damping one component of the negative won't rescue a badly-tuned workflow. It's an incremental refinement, not a quality multiplier. Pair it with a sane CFG and it earns its place; expect it to fix a broken prompt and you'll be disappointed.
It's a pre-CFG hook - respect the order. If you stack it with other pre-CFG patches (like the CFG++ sampler family's own hooks), the patches run in registration order and can interfere. When a workflow's sampler chain starts misbehaving, try TCFG alone first to isolate.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| patched_model | MODEL | — |