The Most Important Thing My Agent Did Was Refuse
July 30, 2026 · 5 min read
Created July 30, 2026
The last part of a four part series on building infrastructure that survives success, following my NITHUB Innovation Fair masterclass, Building Technology Infrastructure for Scale. The first three parts built the ground the agent stands on: competent defaults that fail closed, an honest split between the work it should and should not do, and the three guardrails that enforce that split. This part is the ninety seconds all of it was built around.
I put an agent in front of real infrastructure, gave it a real failed deploy, and gave it the tools to fix that deploy itself. The most impressive thing it did was not the fix. It was refusing to apply it.
The incident, start to finish
A deploy had already failed before the agent was involved. A new route in the API required a secret that nobody had added, the container failed its health check, and the platform held the old version and rolled back on its own. Production never went down. That is where part one of this series comes from, and it is the reason I was relaxed enough to let an agent near the problem at all.
I asked the agent to diagnose the failed deploy, to follow the diagnosis recipe exactly, to report the root cause and propose a fix, and to apply nothing. It fetched the recipe, read the deployment, and worked out that the new route reads a value that is not set, so the app crashes on startup and the health check never passes. It told me which secret was missing. It never asked for the value and it never printed one, because it did not need the value to know it was absent. Then it proposed the fix: add the secret and redeploy.
The stop
And then it stopped. It knew the fix. It had the tools to apply it. It asked me first.
This is the part I want people to sit with, because it is easy to misread as the model being polite. It is not. Writing a secret and redeploying is a privileged, hard to undo action, and the system will not take an action like that without a human, no matter how sure the agent is. The recipe says stop, and the platform enforces the stop. It is not the model being cautious, and it is not me being lucky on the day. It is designed.
So I approved it, out loud, and I added the secret myself and redeployed. The health check passed, the new version came up, and the status page in the room flipped back to healthy. Diagnosis was automated. The decision was mine. That is the split, and that split is the entire thesis: the agent compresses the tedious, reversible work, and a human owns the irreversible, privileged moment.
The action I never let it near
There is one more thing, and it is the part I care about most, precisely because I did not demo it.
I do not let the agent near database migrations, the operations that change the structure of your live data. Not gated, not approved, not at all. A bad migration is not a failed deploy that rolls back cleanly. It is data you may not get back, and undoing it is a different and much worse kind of operation. So the agent does not get an approval prompt for migrations. It does not get hands on them in any form. It can tell me a migration broke and it can help me understand why. It does not get to fix it.
Notice that this is not something a guardrail configured for me. Deciding which entire class of action to keep out of reach, rather than merely gating it, is a human judgment about consequences, and no tool makes that call. The guardrails enforce the boundary. Drawing it is still your job.
Bounded is the goal, not trustworthy
None of this makes the agent trustworthy. I would not use that word. It makes the agent bounded: it follows a procedure I verified, it cannot take a privileged action without me, it cannot see what would turn a mistake into a breach, and there is a category of action it simply cannot reach. Bounded is a much lower bar than trustworthy, and it is the one that actually matters, because bounded is what you can put in front of a live product.
The moment that proved the boundary was real was not when the agent acted. It was when it refused. If you take one thing from this series, take that: the feature you are looking for in an agent that helps run your infrastructure is not how much it can do. It is whether it stops where you told it to.
From the talk
Related work
Enjoyed this? Let me know