Attention Coupling Options
Regional prompts that don't bleed into each other
- options
- options
If you've ever tried to put two characters in one frame with a prompt and watched their clothing, hair colour and general vibe swap places, you've met prompt bleeding. The usual fix in ComfyUI is masked conditioning - the model gets a different prompt inside the mask and the global prompt everywhere else. Attention Coupling is the other approach: split the cross-attention per region inside a single shared denoiser trajectory, so each region genuinely attends to its own text instead of being blended at the conditioning layer.
It's a real, established technique rather than something this pack invented - regional prompting tools in the A1111/Forge world shipped attention coupling before this, and you'll see it discussed around A8R8's regional prompting work. What SimpleSyrup does is give you a clean, minimal control surface for it, and the honesty of that surface is worth noting: this node has exactly two dials and no mask inputs, because the masks and prompts arrive somewhere else.
What this node actually holds
The concept here is strength and edge handling - nothing else. The region data goes on KSampler (SimpleSyrup): a global-first conditioning batch on positive (entry 0 is global; later entries pair with masks) and an ordered region_masks input. The pack's [SEP]-style prompt batch nodes and its conditioning batch builders are the way those batches get made. This node tells the sampler how hard the regions should push and how soft their boundaries are.
regional_prompt_weight- default 1, range 0 to 1. Tooltip version, which is as clear as it gets:0is global-only,1is regional-only inside solid masks. In overlaps, prompt contributions get normalized while regional LoRA deltas simply add, in declared adapter and region order. Mid values are the blend you tune per image.region_mask_feather- default 0, in image pixels, up to 512. It softens the Attention Coupling and regional LoRA boundaries by blurring the mask edge.0preserves your authored mask values exactly, which is what you want with tight segmentation masks. Be careful with the top of that range: 512 pixels of feather on a 1024-pixel image is not a soft edge, it's a gradient across half the picture.
The output is the options socket, wired into another options node or the KSampler. Attention Coupling composes with the others: it has its own sampling services for the plain, tiled and contextual paths, so you can run regional attention on a tiled high-resolution canvas.
The trap, and it's the main one
Without both halves, nothing happens and nothing complains. That's not a bug - it's how the sampler decides whether you're doing a regional run at all. Feed it ordinary CONDITIONING and no masks and it bypasses Attention Coupling silently, and the same is true if you connect masks while the conditioning is still a single global entry. Your regional_prompt_weight then does absolutely nothing, which is a genuinely confusing way to lose an afternoon.
Half a request is an error, though, and the messages are good:
- Conditioning batch, no masks → "Attention Coupling conditioning batches require region_masks."
- Masks, no batch → "Attention Coupling region_masks require a CONDITIONING_BATCH on the positive or negative input."
The ordering rule matters as much as the count: masks pair with conditioning entries 1 onward, so mask 0 belongs to the second prompt. Misaligned mask order is the other classic regional-prompting failure, and the sampler uses declared order rather than trying to guess.
Two smaller things. regional_prompt_weight does not scale regional LoRAs - each hook keeps its own strength. And scheduled regional LoRA hooks come from ComfyUI Prompt Control if you have it installed; that integration is optional and the rest of the pack loads fine without it.
Install
Manager → Node Pack list → search SimpleSyrup → Install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Artificial-Sweetener/SimpleSyrup.git
cd SimpleSyrup
python -m pip install -r requirements.txt
That requirements file is not small (Ultralytics, ONNX Runtime, segment-anything, TorchLanc, Hugging Face Hub, keyring) because this pack also detects, segments and tags. You still need a current ComfyUI for the v3 nodes to show up, and if you're on a region-heavy workflow anyway, remember SimpleSyrup's SEGS are deliberately Impact-compatible - the same regions can move between detectors and detailers without being rebuilt.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| regional_prompt_weight | FLOAT | 1.000–1 | Balances regional cross-attention against the global prompt from 0 (global only) to 1 (regional only inside solid masks); regional LoRA strength remains controlled by each hook. |
| region_mask_feather | INT | 00–512 | Softens Attention Coupling and regional LoRA boundaries by this many image pixels; 0 preserves authored mask values. |
| optionsopt | SIMPLE_SYRUP_SAMPLER_OPTIONS | Optional preceding sampler options; bypass this node to omit its contribution. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| options | SIMPLE_SYRUP_SAMPLER_OPTIONS | Combined sampler options; connect another options node or KSampler. |