Note · September 2026
Writing a rule for an agent doesn’t change what it does. A check that blocks does.
I kept writing better instructions for coding agents and they kept ignoring them, until I turned each rule into a check that stops the work.
On four agent projects this year I made the same mistake. Something went wrong, I wrote a rule about it into the instructions, and assumed it was handled. The agents kept doing it until a check stopped the work.
The clearest case was a client website. Agents generated section variants and I picked from them on comparison boards. I knew duplicates were a risk, so I’d written a script that shrinks each render to a small grey silhouette and flags variants that look alike. The script sat in the project for ten days, and in that time 58% of the variants came out as visual duplicates. Nothing ran the script before a board reached me.
I moved the same script into the path of the work. Now variety is checked before a board is shown, and duplicates are dropped automatically.
What makes a check work
A check that works runs by itself and can stop the next step from starting. A rule in the instructions only works if the agent reads it and chooses to follow it, often hours after I wrote it.
The one rule that worked was one I could check. Agents kept reporting “done” on things that weren’t. One said “no visual difference” about a list that was in one column and in reverse order. So I added one sentence to every brief: “Until there is a screenshot proof, it is not done.” After that, reports had 8.8 screenshots on average instead of 2.6. I didn’t run a controlled test, but I think it held because I could count the screenshots, and a report without them was easy to reject.
Checks can be wrong too
One check compared a rebuilt page with its original by the amount of text. It reported a match seven times while the design drifted. Another round passed a page where ten sections had no CSS loaded at all.
So every check now says in writing what it can’t see. Before I trust a new check, I run it on a page I know is broken. If it passes that page, I don’t use it.
What I do now
When an agent does something wrong, I ask what would have stopped it automatically. If the answer is a script, I write the script and put it in the path. If it’s a sentence, I make it something I can check. The instructions file is still there, I just don’t rely on it to change behaviour.