Nodes/ComfyUI/Create Hook LoRA (MO)
ComfyUI Node Runs on cloud

Create Hook LoRA (MO)

The LoRA hook without the CLIP half

By Comfy-Org·Created 4 years ago·Updated about an hour ago· 129,820
Create Hook LoRA (MO)
  • prev_hooks
  • HOOKS
lora_name
strength_model1.00

Every LoRA file is really two LoRAs: one patch of weights for the diffusion model (UNet/DiT), and one patch for the CLIP text encoder that rewrites how your prompt is understood. Most of the time you want both - that's what makes a LoRA work. But sometimes you only want the model half, and that's what CreateHookLoraModelOnly ("Create Hook LoRA (MO)") gives you: a LoRA hook with the CLIP patch pinned to zero.

What "model only" actually means

Look at CreateHookLora and you'll see two strength dials: strength_model and strength_clip. This node is that node with strength_clip hardcoded to 0. Same lora_name, same strength_model range (−20 to 20), same prev_hooks chaining, same single HOOKS output. The "MO" in the display name is "model only," and it saves you from remembering to zero out the CLIP slider yourself every time.

Why does that matter? A LoRA trained on a character or a style usually has its CLIP half encode the trigger word properly, so killing it would cripple the LoRA. But a LoRA trained for weight-space effects - a style shift, a quality booster, an inpainting tweak - often has nothing meaningful in the CLIP patch, and leaving it on just costs memory and can slightly fight your own prompt. Dropping the CLIP half gives you a cleaner, cheaper patch.

When you'd actually reach for it

The natural home is inside the hooks scheduling/regional system. Hooks (core since December 2024, still experimental) are weight patches that ride on conditioning, and they're what let you mask a LoRA to one side of an image or animate its strength across sampling. When you're stacking several hooks - a model-only style LoRA for region A, a model-only detail LoRA for region B, combined via CombineHooks or chained through prev_hooks - each one is a separate model pass, and trimming the CLIP half from each is both faster and cleaner. It also avoids a subtle double-application smell: if your base pipeline already applies a LoRA's CLIP patch through a normal loader, adding the same CLIP patch again through a hook is redundant at best.

The flip side is the caveat: if the LoRA's effect depends on its CLIP half (most character and many style LoRAs do - the trigger word lives there), model-only will silently underperform. When in doubt, use the full CreateHookLora at strength_clip 0 via the slider rather than assuming this variant is safe.

The file situation

The lora_name dropdown reads from models/loras - the same folder every LoRA loader reads, so whatever you've already downloaded shows up here. The node caches the last-loaded LoRA file, so re-running with the same file doesn't reload from disk.

Practical notes

Both strength_model at 0 and everything else unchanged? The node just returns the previous hooks untouched - a zero-strength patch is skipped entirely. And remember the family rule: a hook only matters once it's attached to conditioning through a "Set Props" node, and every attached hook costs a separate model pass. Model-only keeps the cost as low as this system gets - which is why, when the hook family was announced in December 2024, the model-only variants were part of the pitch from day one.

Ships with ComfyUI core, no install. Under advanced → hooks → create.

Categoryadvanced/hooks/create

Inputs (3)

NameTypeDefaultDescription
lora_nameCOMBO0 options:
strength_modelFLOAT1.00-20–20
prev_hooksoptHOOKS

Outputs (1)

NameTypeDescription
HOOKSHOOKS