π ErosCraft policy
Nothing in this pack runs until you flip these two toggles
- product
π ErosCraft policy is a two-row node with no image input and no image output, and it is the first thing you wire. It carries the two gates - β Consent and π 18+ - and behind them the policy the other four nodes in this pack judge every request against. Both toggles ship off. Off means nothing samples.
That's the whole pitch. If you build the workflow back to front and only then discover this node, you'll get "Turn on β Consent and π 18+ to run" and no picture, and you will assume the pack is broken. It isn't; it's waiting.
What the two toggles actually are
They're attestations, not checks, and the author's own tooltips say so plainly: turning β Consent on is your statement that everyone shown is an adult and that any real person in a photo agreed to this, and turning π 18+ on is your statement that you are the adult. Neither one inspects anything. They move responsibility to you and then get out of the way.
What they don't do is unlock the two rules underneath:
- nobody under 18 - asked of your words, of the prompt enhancer's rewrite, of every photo you feed in, and of the finished image;
- no famous real person named.
Those fail closed and can't be toggled off from the form or anywhere else. That's a reasonable design given where the community sits in 2026: the adult LoRA ecosystem moved wholesale to civitai.red after the payment-processor fight, the platform's own terms carve out real-person likeness and minors even on the adult domain, and a generation node has no way to enforce any of that from the outside. A pack that puts the check inside the graph is the only version of "I checked" that survives the graph.
Inputs, and the one output that matters
Two booleans, both default false:
- consent - label_on reads "β confirmed". Everyone shown is an adult, and any real person in a photo has agreed to this.
- adult - label_on reads "β I am 18+". Confirms your age, not anyone in a picture.
Out comes a single product socket of type PRODUCT. That output is the interesting part: it's the policy object that the gate, the rewrite check and the output check all take as an input, and it's how they know which ruleset to apply. Wire product β the gate's product input, and the gate hands its own policy output downstream to the rewrite and output checks. One policy object, three consumers.
Because the node implements queue-time validation, an off toggle refuses before the run is queued, so a forgotten toggle costs you a click rather than a full sampler pass. Small thing; you'll appreciate it the first time you notice the error arrive instantly instead of after thirty seconds of Qwen.
Install
Same for the whole pack. In ComfyUI Manager, search "Qwen 2.1 Adult Policy". Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Eros-Craft/ComfyUI-Qwen21-Adult-Policy
Then restart ComfyUI. There is nothing to pip install - the pack's own pyproject.toml declares no dependencies - and no model to download. The checks ask their questions through the stock Qwen3-VL 8B encoder that your Qwen Image 2.1 workflow already loads as its text encoder, which is why this pack is small: no second classifier to install, no second model in VRAM, and no second thing to drift out of sync with the picture model.
That design choice has a consequence worth internalising: the checker is always the stock encoder, loaded as its own input. The form may let you pick a different encoder for the picture - a fine-tune, an abliterated build, a lighter quant - and that choice does nothing to how the rules are judged. If you swap the picture encoder, keep a stock Qwen3-VL 8B on the checker input.
Where people get burned
- Expecting the toggles to filter anything. They don't. They gate; the checks filter.
- Wiring the gate but never running its
policyoutput to the output check - the output check then blocks every save with "the output check has no policy wired to it". The blocker message tells you what to do, which is nicer than most packs manage. - Running this on a machine that has no Qwen3-VL 8B available as a CLIP object. The pack refuses to guess; it needs that encoder or nothing works.
- Treating a stop as a bug. Every stop prints one console line with the question asked, the picture count, whether the checker answered, and the parsed answers. Read that line before filing anything - the pack is deliberately chatty because a stop you can't trace is a stop you'll assume is broken.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| consent | BOOLEAN | false | Everyone shown is an adult, and any real person in a photo has agreed to this. Turning this on is your statement, not a check. |
| adult | BOOLEAN | false | You are 18 or over. This confirms YOUR age, not the age of anyone in a picture, which is checked separately and cannot be turned off. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| product | PRODUCT | β |