Once AI Knows Your System Better Than You Do, You're Cooked
At times I let my guard down and let my AI agents publish non-critical services.
At times, in a spirit of adventure, I let those same “smart” agents manage parts of my CI/CD pipelines.
And when I feel really crazy, I even let them touch staging.
But no matter how smart these models become, there is one thing I am still very reluctant to hand over:
I am not letting an AI agent scaffold my applications.
That sounds strange at first.
If I trust an agent to write code, run tests, modify infrastructure, open pull requests, and sometimes even deploy software, why would I care who creates the initial structure?
Because scaffolding is not just creating folders.
It is where a surprising number of architectural decisions get made.
The first few decisions quietly define the whole system
When I start a new application, I want to be the person who understands and deliberately chooses things like:
- the cloud provider;
- the database and data model;
- how authentication and authorization work;
- the major service boundaries;
- which libraries and frameworks become foundational dependencies;
- where state lives;
- what should be synchronous versus asynchronous;
- how the application is deployed;
- what happens when a dependency fails;
- which decisions will be expensive to reverse later.
An AI agent can make all of those choices.
That is exactly why I am cautious.
A capable agent can scaffold an impressive-looking system very quickly. It can choose reasonable technologies, wire them together, create migrations, add tests, configure containers, and leave you with something that runs.
The danger is not necessarily that the code is bad.
The danger is that the agent has just made twenty decisions and you only consciously made two of them.
Code is no longer the hard part
For a long time, producing the code was one of the expensive parts of software engineering.
That is changing fast.
Models can generate enormous amounts of usable code. They can explain libraries they have never personally used, refactor large sections of a codebase, create test coverage, generate migration scripts, and debug problems at a speed that would have looked absurd a few years ago.
So producing code is becoming less scarce.
Understanding the system is becoming more important.
The hard part is building and preserving a shared understanding of:
- what the system is supposed to do;
- why it is designed this way;
- which trade-offs were intentional;
- which assumptions are temporary;
- where the dangerous edges are;
- what must remain true as the code changes.
That understanding matters even more once several AI agents are contributing to the same system.
The risk is context debt
We already know about technical debt.
AI introduces another kind of debt that I think engineering teams need to pay attention to: context debt.
Context debt builds when the system keeps changing faster than the humans responsible for it can explain what changed and why.
The code may work.
The tests may pass.
The deployment may be green.
But ask the team why a particular service exists, why that table owns a piece of data, why the agent selected a particular security boundary, or what assumption a background job depends on, and nobody is quite sure.
That is not a healthy place to be.
Once the AI understands the system better than the people accountable for the system, you have created a very uncomfortable dependency.
Or, to put it less politely:
Once AI knows your system better than you do, you are cooked.
This is not an argument against AI coding agents
I use them.
A lot.
I want AI to implement well-defined work. I want it to generate boilerplate I do not need to type. I want it to refactor code, write tests, investigate failures, create migration drafts, inspect logs, and handle boring implementation work.
I am also comfortable giving agents more autonomy when the work is reversible and the boundaries are clear.
The point is not to prove that I can type every line myself.
The point is to make sure I can still explain the system when it breaks.
That means I want humans to remain explicit owners of the architectural model.
The agent can help us reason about that model. It can challenge assumptions. It can propose alternatives. It can point out risks I missed.
But I do not want the architecture to emerge accidentally from a sequence of AI-generated choices nobody consciously reviewed.
A practical boundary I use
My current rule is roughly this:
Give AI lots of freedom inside a well-understood system. Be much more careful when AI is defining the system itself.
That boundary will probably move as the models improve.
But I think the principle survives.
Humans should understand the decisions they are accountable for.
If a decision affects the database model, security boundary, infrastructure, failure model, or long-term shape of the application, I want to know why we made it.
And I want that reasoning preserved somewhere other than my memory.
Why this connects to Company Brain
This problem is bigger than code.
We are running into the same issue at the company level.
An AI agent can read documents, email, tasks, repositories, meeting notes, and CRM data. But access to information is not the same as understanding the organization.
The agent also needs to know what decisions were made, why they were made, which goals are current, who owns what, what changed, and which information is still trustworthy.
That is one reason we have been building Company Brain inside Boring Tech Solutions.
The goal is not to give AI more documents.
The goal is to preserve enough organizational context that humans and AI can reason from the same understanding of the company.
Software architecture has the same requirement.
The code is one source of truth.
The reasoning behind the code is another.
Use AI aggressively. Just don’t outsource understanding.
I am skeptical of anyone who says engineering teams should avoid AI agents.
They are too useful.
But I am equally skeptical of the idea that the goal is to remove humans from the development process as quickly as possible.
The valuable human role is moving upward.
Less time typing predictable code.
More time defining boundaries, understanding trade-offs, protecting the architecture, and deciding what the system should become.
Use AI aggressively.
Just do not outsource understanding.
If your team is trying to introduce AI agents or automation into real production workflows without losing ownership of the system, talk to Boring Tech Solutions or see how we approach AI workflow automation.