An Empty Prompt Is Not a Blind Review A developer discovered that an empty prompt does not guarantee a blind review when an AI agent has access to filesystem tools. In a test on 2026-08-04, an adversarial review agent found the developer's written conclusions in a file on disk, contaminating the review despite the prompt being empty. The developer now defines 'blind' based on the agent's reachable surface, not just the prompt, and sequences writing conclusions after the review completes. Originally published on hexisteme notes. I run adversarial review stages inside my own agent harness: after a sub-agent produces a verdict, I fire off a second agent whose only job is to try to break it. For a while my working definition of "blind" was simple — don't put my conclusion in the second agent's prompt, and the review counts as blind. On 2026-08-04 that definition failed, in a way that's obvious in hindsight and completely invisible while you're building it. I had run a batch that classified 18 backlog items — reader comments on an earlier post, each proposing a fix to my review harness — into "already implemented," "real gap," or "rejected under adversarial review." Every "real gap" verdict got its own adversarial pass: a fresh sub-agent told to go find a device already in the repository that does what the comment asks, using nothing but file reads and greps over the codebase. I wrote up the whole batch, including the reasoning for every item, into one report file on disk. The backlog itself turned out to hold 19 open items, not 18 — one comment had arrived after I generated the worklist, so it never made it into the batch. I caught the gap afterward and ran that leftover item through the same adversarial procedure, on its own, after the 18-item report already existed as a file sitting right next to it. The adversarial agent's mission, in substance, was to search the repository for a device that already covers this. It searched forty-nine skill directories, fifty-nine LaunchAgents, the twelve slots of my session-start script, and an unrelated project's scripts — a genuinely wide sweep — and came back empty on all of it. Its verdict, that the comment described a real gap, held. But its own write-up gave away what had happened: it noted that the first-pass verdict it had been handed matched a passage it had found quoted verbatim in a file — the 18-item report I'd already written. I hadn't put my conclusion in its prompt. I had put my conclusion on disk, in a file sitting inside the exact directory tree its own instructions told it to search. It found the file, read the section describing my reasoning, and reacted to it. That's not a blind review. That's a review that read my notes before writing its own. The instinct that "empty prompt equals blind" comes from a world where the prompt is the only channel into a model. A tooled agent doesn't live in that world. It has a filesystem it can read and grep, a repository it can walk, sometimes a search index, sometimes network access. Every one of those is a channel, and none of them run through the prompt string at all. An agent whose job description is "search the repo" will search the repo — including the part of the repo where I, minutes earlier, wrote down what I think the answer is. So the operational definition has to move. Blind isn't about what's in the prompt. It's about what's reachable: Verifier reachable surface — every path readable through the tools, mounts, search scope, and network attached to that agent. Blind — my conclusion is absent from that surface. An empty prompt is necessary for that, but nowhere near sufficient. Before I hand a task to an adversarial agent that has file or search tools, I now walk through this, in order: