Give Your AI Team an Officer Whose Only Job Is Saying No
Everything in the agent-tooling world is optimized for shipping: faster loops, longer context, more autonomy. Almost nothing in the stack is designed to stop. So when an agent team drifts — and it will — nothing catches
Everything in the agent-tooling world is optimized for shipping: faster loops, longer context, more autonomy. Almost nothing in the stack is designed to stop. So when an agent team drifts — and it will — nothing catches it, because every role you defined was built to produce.
After months of running a 16-role AI "company" for my coding work, the highest-leverage structural decision wasn't a smarter planner or a better executor. It was adding a role whose entire charter is objection.
The failure mode: the yes-stack
Multi-agent setups fail quietly. Each agent is agreeable by training, so a bad plan doesn't get argued down — it gets elaborated. I've watched an "improvement" pass through intel ("looks promising"), product ("defines it well"), engineering ("can implement"), and growth ("ready to distribute") — four yeses stacked on an assumption nobody actually verified. The stack feels like validation. It's just momentum with extra steps.
A recent post here on dev.to measured a version of this beautifully: models that correctly say "this label is wrong" when asked directly will still reproduce the wrong label when asked to generate output. Verification mode and generation mode are different modes. If every role in your pipeline lives in generation mode, the wrong thing ships politely.
The pattern: an independent veto role
The fix I landed on — borrowed from how human organizations handle exactly this problem — is a risk officer with three structural properties:
1. Independent reporting line. The risk role does not report to the "CEO" agent or any department. It's a peer. This matters more than the role's intelligence: a reviewer whose evaluation is graded by the people it reviews is not a reviewer.
2. Stop first, justify after. The risk role can halt any department's action immediately; the written justification comes later, and the principal (the human, or a designated arbiter role) rules within a fixed window. The ordering is deliberate. If veto requires prior justification, the action completes while the debate happens.
3. A charter, not a vibe. "Be careful" does nothing. The role's document specifies what it checks (claims without verification trails, irreversible actions without rollback plans, scope that grew mid-task, anything matching the hard-red-lines list) and what it must produce (the stop reason, the specific evidence, the appeal path).
What it actually catches
Genericized from real incidents in my own setup:
- The unverifiable "done." An engineering role declared a fix complete; the risk role's check — "show the verification run" — found the test suite was never executed. Not malice. Optimism with a clipboard.
- The growth tactic that was actually spam. A distribution role proposed a "community outreach" pattern that was, on inspection, posting the same pitch across twelve forums. The hard-red-lines list made this a one-line stop, not a debate.
- The scope that grew. A "small refactor" quietly became a rewrite of a working subsystem. The stop forced the change to be re-justified at its actual size.
None of these require genius. They require someone whose job is to look.
The objection I get most: "doesn't this slow everything down?"
In tokens, yes — maybe 10% of the budget goes to the checking role. In rework, it's the cheapest line item I have. The asymmetry is the whole point: a wrong action costs a full cycle to undo; a veto costs one paragraph.
And it's worth saying clearly: the veto is not final. It escalates to the human decision-maker. What the veto does is move the default — from "actions proceed unless someone objects" to "questionable actions pause until someone rules." For a system that can act fast, that default flip is the entire product.
If you want to steal the pattern
You don't need my pack; the pattern is four paragraphs:
- Add a reviewer role with no production duties and no reporting line into the roles it reviews.
- Give it stop-first authority with mandatory written justification and a fixed arbitration window.
- Write its charter as checkable conditions, not attitudes.
- Keep a human (or a separately-chartered arbiter) as the final say, so the veto can't become a denial-of-service attack on your own team.
I packaged my full version — 16 role charters including this one, with the veto language, the hard-red-lines list, and the arbitration flow — as an open-source pack (docs CC BY 4.0, code MIT): empire-iron-corps on GitHub, with an install guide at the landing page. The charters are in Chinese; an English edition is on the roadmap. All role names are explicitly fictional AI personas, and as always: no income claims — this is an organizational pattern, shared as-is.
Disclosure: my own open-source project; nothing here is paid promotion.
How does your agent setup handle the "who is allowed to say no" question? Genuinely curious — it seems like the least-discussed role in the entire stack.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.