State the Target, Not the Prohibition

Telling a model what not to do activates the very concept you're suppressing — 'list the planets but not the moon' tends to produce the moon — so phrase instructions as a positive description of the target, and enforce hard prohibitions with a deterministic check rather than louder "do NOT".

What it is

Negation is a weak signal in a transformer. When you write "don't mention the moon", the model attends heavily to the content word "moon" and only lightly to the negation modifying it, so the concept you wanted suppressed is now activated and competing with the instruction to suppress it — and you frequently get exactly what you asked to avoid. This is well documented: a model's internal representations of "the moon is a planet" and "the moon is not a planet" are surprisingly similar, and it is not only a text phenomenon — vision models asked for "a room with no elephants" tend to render elephants by the same mechanism. The remedy is to point at the target: reframe the request as a positive description of the behavior you want, so the unwanted concept never enters context at all. "Don't use global variables" becomes "Use local variables and parameter passing"; "don't nest routes deeply" becomes 'use a flat route structure'. This is distinct from "be specific" — adding specificity to a negative instruction usually means adding *more* negations and over-constraining the solution space, which activates more of what you are trying to avoid; pointing the target changes *which concepts you activate*, at the same level of detail. And when a prohibition is genuinely non-negotiable — a banned API, a forbidden path — do not fight the mechanism with louder or repeated negation; enforce it with a deterministic check that fails the output, and spend your prompt tokens describing the target instead.

When to reach for it

When NOT to

Exemplars

Related