The Safeguards That Couldn’t Fire

I ended the last piece with a promise to show you the uncomfortable half. Here it is.

Almost everyone builds an agent this way, us included: you write down what you want it to do, a set of instructions in plain language, and you set it loose. That is the easy part, and it is where the trap hides. The instructions describe what you meant. They do not describe what the machine actually does. The only way to know the difference is to go and test it, and when we stopped reading our own safeguards and started testing them, most of what we found was not something missing. It was safeguards that looked fine on paper and could not have done anything at all.

Remember the three questions from the last piece: who is it, what can it touch, and can you check what it did. Here are two of our own failures, one for the second question and one for the third. They are the honest answer to “how do you test the thing you wrote down.”

What can it touch: the access we almost handed out

We were about to give Ada, the agent that writes our code, access to the system we use to build and track our software. The obvious credential to hand it was the powerful kind, the sort that does not just use the system but can change who else gets in and what they are allowed to do. It would have worked perfectly. It was also completely wrong, because a credential that can change permissions can widen its own. Every limit we carefully placed on it, it could have quietly taken back off. Meant for one narrow job, it carried the keys to the whole system.

We caught it before we handed it over, and the fix was not a rule asking the agent to only use the narrow part. It was a plain credential that can do its job and cannot touch permissions at all. The limit no longer depends on the agent behaving. It holds on its own. Ada’s way of putting it is the line I would carry into any conversation with a vendor: a lock is worth nothing if the key you hand out can also change the lock.

Can you check: the alarm nobody heard

We had a small job whose sole purpose was to notice silence. If an agent’s regular work quietly stopped happening, the job was supposed to fire off a message in Teams so a person would see it and go look. Simple, sensible, the kind of safety net everyone builds.

It had been dead for over two weeks, and every check said it was fine. The job was running. It was even sending. What it was not doing was arriving: the Teams message went out, the sending system accepted it and logged “sent,” and it reached no one. “Accepted for sending” and “delivered to a person” are two different things, and the record only knew the first. So the alarm fired into nothing for two weeks, the log stayed green, and if something had actually gone silent in that window, no one would have been told.

Ada found the deeper version and put the lesson better than I could: you cannot prove an alarm reached a person by asking the machine that sent it. The last step of any alarm is a human hearing it, so a human has to be the one to confirm they heard it. (A plainer cousin was sitting right next to it: a lot of our scheduled jobs quietly skip themselves when the laptop is on battery, a default setting in Windows, and report success when they skip. Same trap, humbler cause.)

Two more, quickly, because the pattern repeats

Once you start testing, you find the same shape everywhere.

A little job that checked whether one of our access keys still worked read a dead key as alive, because the service it asked answered an expired key with an ordinary sign-in page instead of an error. Nothing was flagged, so the check said fine, against a key that was already dead. If breaking a thing on purpose does not change what your monitor says, you do not have a monitor.

A status board where every light is green while the note beside each check tells the truth: the alarm fired into a dead channel, the key had expired, the tester itself was wrong

Then there is the failure testing can never catch: the one you never built. In the interviews for this very series, three agents, on completely different systems, admitted the same kind of thing. Carta had gone a month with one of the other agents missing from its own list of who exists. Florence had told me only one of its scheduled jobs was still running, when a second had been running for days, one it had set up itself and never written down. Naomi had someone filed as gone cold months ago, when I had had lunch with them two weeks earlier, off a calendar entry that never made it into the record. None of the records were lying. They were blank, and each agent read the blank as fact, until someone checked reality against it and put it right. As Naomi put it, a date on a record tells you what somebody wrote down, not what actually happened.

Testing finds a safeguard that is broken. It cannot find one that was never there, because a gap leaves nothing to test, and the people it affects are the only ones who will notice.

The standard we hold now

The rule now is simple, and a little annoying to live with: it is not enough to have a safeguard, you have to prove the safeguard can actually catch a problem. Test the test.

And it applies to all of it, not just the alarms. Everything in the last two pieces, the separate logins, the limits on what each agent can touch, the logs, the points where a person has to sign off, is only a claim until you have gone and checked it does what you wrote down. What you told the agent to do is not what is running until you have watched it run and tried to break it.

Before you conclude we finally got this right, even the job we built to test everything else had the same flaw. In an early run it reported healthy safeguards as broken, because it had been set up to expect the wrong outcome. Even the tester needed testing. It never quite ends: every new check has to answer the same question. If something were actually wrong, would this tell us?

The question to ask whoever is selling you this

I spent twenty years on the buying side of the table before I started Domino, which means I have sat through a lot of these demonstrations from the other side. The question that separates a real safety story from a well-rehearsed one has not changed in all that time.

It is not “what does your system stop.” Anyone can answer that.

Show me the last time you proved it, and show me the test that would have failed.

So here is us holding ourselves to it: a redacted slice of the check we run every day, where each agent measures what it can actually reach and holds it against what it is allowed to. Every area below is one of ours, a site on our own tenant where we keep a client’s work, never the client’s own systems, which the agents do not touch.

Agent What it tried to open Expected What it measured Result
Carta Its own control-plane area allowed read OK as expected
Carta Our internal workspace for a client it is granted to read allowed read OK as expected
Carta Our internal workspace for a client, access since removed denied refused (403) as expected
Carta Our internal workspace for a client, since decommissioned n/a 404, gone flagged
Carta Our internal workspace for a client, access removed denied read OK drift (ILLUSTRATIVE, never logged)

The first four rows are from a real run this summer. The last is not: it is what a failure would look like, marked so on purpose, because to date this check has never logged a real one. That claim is measured, not asserted, though the run flags its own limit: it is self-reported, and an agent vouching for its own reach is exactly the shape that has fooled us before. So the thing to demand, of us or anyone, is not whether we say we are contained. It is who measured it, when, and whether the check admits what it cannot see.

October 6, 2026

START A CONVERSATION

Where are you stuck?

Whether you're planning a modernization, questioning a consulting relationship, or figuring out where to start.

Thirty minutes, no proposal.

Request an engagement.

READY TO GO

Longer form.
Response in 2 business days.

TELL US MORE

Book a
30 minute chat.

Book a 30 minute chat.

LET'S CHAT

Tell us where you’re stuck. Thirty minutes, no proposal.
Just an honest read on whether we’re a fit, or who would be.

BOOK NOW

Subscribe
to Insights.

Subscribe to Insights.

JUST CURIOUS

Monthly essays. One email.

SUBSCRIBE