article·2026-06-09·1,160 wordsevergreen

Trust the Surface, Not the Agent: Autonomy Is the CI/CD Transition Again

The question I hear about autonomous agents is "how do I trust it to act on its own," and it is the wrong question, because you have already answered it once. You answered it the day you let a pipeline deploy to production without watching it. You did not get there by trusting the deploy script. You got there by building the surfaces that make a deploy safe to run unwatched. Autonomy is the same move, made a second time. You do not make an agent trustworthy by making it smarter or by watching it harder. You move the trust off the actor and into the surface around it.

Nobody actually trusts the robot

Before continuous delivery, shipping was a manual, fearful, human-gated event. Someone ran the build by hand, tested by hand, deployed by hand, and held their breath. The transition to CI/CD did not remove the fear by making people braver. It removed the fear by building a structure that catches failure: a test suite that runs on every change, a staging environment that is not production, gradual rollouts so a bad release hits one percent before it hits everyone, automated rollback, dashboards and alerts, and branch protection so nothing reaches the deploy step without passing the gates.

The same engineer who would never have run an untested script against the production database now lets a bot merge and deploy fifty times a day, and sleeps fine. Nothing about that engineer's trust in the bot changed. What changed is that the trust stopped living in a careful human at the keyboard and started living in the pipeline. That is the whole transition, and it is the template for agents.

The surfaces map almost one to one

If you have built CI/CD, you have already built the hard parts of agent autonomy. They are the same surfaces wearing different names.

The human moves up the loop, not out of it

The fear underneath all of this is that autonomy means the human leaves. CI/CD is the proof that it does not. Continuous delivery did not fire the engineers who used to run deploys. It moved them up a level, from running the deploy to designing the pipeline and reading the dashboard. The work got more leveraged, not absent.

Agent autonomy is the identical promotion. You stop doing the task and start designing the gates and reading the audit trail. You stop reviewing how the agent thought, which you cannot see anyway, and start reviewing what it is about to do, which is a diff, and what it already did, which is a log. A human in the loop is not a human watching the agent type. It is a human who owns the surface the agent runs on.

Where the analogy leaks

The honest part, because the failure modes are more useful than the metaphor. Code is deterministic and agents are not. A test that passes stays passing. An agent that did the right thing this morning can do the wrong thing this afternoon on the same input. So the surfaces have to be tighter than a CI pipeline, and the canary never fully graduates for high-stakes actions. You keep a human gate on the blast-radius minority forever, the same way even elite teams still keep a human approval on a production database migration.

Evals are also harder to write than unit tests. There is rarely a clean pass or fail for "did it do a good job," and where you draw the line on a good answer changes the score. That is real, and it is why the verification surface leans on independent re-checking and existence audits rather than a single confident assertion.

And the surfaces are not free. Build too many and you have recreated the bottleneck you were trying to remove, which is the same lesson as building any system: add the surface the blast radius actually demands, not every surface a best-practices post lists. You climb that gradient when an action's risk forces it, not because the architecture looks more responsible with another gate bolted on.

Start with the blast radius

The useful question is not "how autonomous can this agent be." It is "what is the worst thing it can do, and what surface catches that." Build that surface first. Then hand the agent the reversible, low-stakes majority of the work on day one, because that is most of the work, and keep the irreversible minority behind a gate until the surface that catches its failure actually exists. You already know this rhythm. You learned it the last time, when you stopped watching deploys and started trusting the pipeline.

All writing