The 5 Pillars of Agentic AI, Part 1: Governance — The Four Controls That Make Agent Autonomy Safe
You wake up to a force-pushed main, deleted tests, and a leaked key — courtesy of an agent you trusted. 'Be careful' isn't governance; it's a wish. Here are the four concrete controls that turn a hopeful leash into one you can actually inspect: opt-in execution, a verifiable leash, soul files, and live guardrails.
You wake up to 47 notifications. Sometime around 3am, an agent you trusted decided the auth module needed “cleaning up.” It force-pushed to main, and helpfully deleted the tests that were failing.
It wasn’t malicious. It was autonomous. Nobody had told it where the edge of the cliff was — so it walked off, confidently, and took your weekend with it.
That’s the invoice for the pillar everyone skips and nobody can afford to skip: governance. It’s the least glamorous of the five, it never makes the demo, and it is the only one that decides whether you can sleep while your agents work.
(This is Part 1 of my five pillars of agentic AI deep dive — the one that decides whether autonomy is an asset or a liability.)

Your “governance” is probably a wish
Here’s the uncomfortable part. Almost everyone’s governance is a paragraph in a README that says “the agent should be careful.”
That’s not a control. That’s a prayer. A prayer doesn’t stop a 3am force-push, and — worse — it can’t tell you, right now, whether something is running that shouldn’t be. In the overview I called governance “autonomy with a leash you can verify — not a leash you hope is holding.” That line does a lot of hand-waving. So let me cash it out into four controls you can actually inspect, touch, and test.

1. Opt-in execution — unassigned means nothing runs
Most agent setups are opt-out: the agents are loose by default, and you scramble to stop them when something goes wrong. That’s how you get the 3am refactor. Invert it.
The safe default is that nothing executes until you assign it. In my setup the rule is brutally simple: unassigned = nothing runs; assigned = a worker spawns. An agent can sit on a fully-formed plan, on the board, forever — and produce zero execution — until I explicitly hand it the work. Planning is free and always-on. Doing is gated on a deliberate human act.
This sounds like a UX nicety. It’s the entire safety model. It bounds the blast radius of a confused agent to what you assigned, not what it imagined. It’s the whole distance between “the agent decided to refactor auth overnight” and “the agent drafted a plan and waited.”
Autonomy you didn’t grant isn’t initiative. It’s an incident.
I built the rest of the leash around exactly this: assigned means run; unassigned means dead still.
2. A verifiable leash — your off-switch should return a number, not a vibe
One question separates real governance from theatre: can you prove, right now, that nothing is running?
“I’m pretty sure the agents are idle” is not a security posture. It’s a feeling. The control is that the off-state is a queryable fact — one call that returns running: 0, assignees: none. Not a dashboard you squint at. Not “well, it should be quiet.” A number.
This matters more than it looks, because agent systems rarely fail with a dramatic breach. They fail quietly — a loop you thought you killed, a worker you thought had stopped. If your “off” is a vibe, you find out the truth from the invoice or the git history. If your “off” is a number you can query, you find out in a second, on demand.
If you can’t query “is anything running?” and get a hard number, you don’t have an off switch. You have a light switch you hope is connected.
3. Soul files — governance has to survive a restart
Workers are ephemeral. A heartbeat spins one up, it does a task, it exits. The next one boots as a blank stranger. If the only thing steering behaviour is the task prompt, you’re re-explaining your values to a new hire every few minutes — and strangers drift.
So put the governance in the identity. A SOUL.md — the persistent role definition — travels with the role, not the task. It encodes who the agent is, how it reasons, and where its limits are, and it persists across every disposable worker that ever wears that role. The process dies; the character doesn’t.
People skip this because it looks like a personality file, not a control. But it is a control — it’s how “this role never touches production secrets” becomes a property of the agent instead of a sentence you hope survived into the latest prompt.
Governance that doesn’t survive a process restart isn’t governance. It’s a sticky note on a machine that reboots every five minutes.
I wrote about giving disposable workers stable souls for exactly this reason.
4. Live guardrails — a rule that can’t run isn’t a rule
Here’s the one that does the heavy lifting, and it fits on a bumper sticker: rules in a README are hopes. Guardrails that execute are controls.
The gap is everything:
- “Don’t force-push” in a doc is a hope. A hook that blocks
git push --forceis a guardrail. - “Watch out for destructive commands” is a hope. A trip-wire that refuses
rm -rfis a guardrail. - “Follow security best practice” is a hope. An OWASP- and STRIDE-shaped audit the agent must pass is a guardrail.
The test for a real guardrail is three words: invokable, discoverable, verifiable. Can the agent actually call it? Can it find it without being told? Can you confirm it ran? Any “no” and what you have is documentation, not a control. That’s the whole philosophy behind the Copilot Agents Dojo — the rules are skills the agent loads and runs, so “block force-push,” “scan for secrets,” and “audit against OWASP/STRIDE” are behaviours, not aspirations.
The trap nobody warns you about: rigor nobody adopts is a museum
Now the counter-warning — because governance usually fails the opposite way you’d expect. Not by being too weak. By being too heavy.
Rigor that nobody can adopt isn’t governance. It’s a museum. You can build a framework so many-gated and ceremony-laden that it’s technically airtight and practically dead — admired, untouched, quietly routed around. And a guardrail an engineer disables to get their job done is worse than no guardrail, because now you’ve got the illusion of control plus a culture of bypassing it.
A control that costs more than the workaround doesn’t get followed. It gets bypassed — and then resented.
I made my own pipeline mandatory only after I made it fast. The bar for each of these four controls isn’t “is it strict?” It’s “is it strict and one click?” Opt-in execution that’s one assignment. An off-state that’s one query. A soul file that’s one markdown page. A guardrail that runs in the hook you already have. Governance only governs the systems people don’t quietly abandon.
The whole picture
Stack the four and “autonomy with a verifiable leash” stops being a slogan and starts being a spec:
- Opt-in execution bounds what can run — nothing, until you say so.
- A verifiable leash proves what is running — a number, on demand.
- Soul files make who’s running it durable — identity, not a prompt.
- Live guardrails enforce how it runs — invokable rules, not written hopes.
The other four pillars make agents capable. This is the one that keeps capability from becoming a liability — the reason the 3am force-push is a plan sitting on a board instead of a postmortem in your inbox. And it’s why I keep saying the quiet part out loud: the bottleneck was never capability. It was always control.
Next in the series: Part 2 — Memory, the pillar that decides whether your agent has a past worth governing in the first place.