Skip to content

An agent cannot automate what it cannot see

Most operational work is fragmented across software that was never designed to meet. Automation fails at those seams. Agents do not need unlimited autonomy to cross them; they need boundaries the environment enforces.

Walk into almost any organization and count the systems. A CRM. An ERP. A billing platform. A scheduling tool somebody's team adopted in 2019. A building management system with a web interface from 2014. Three spreadsheets that are load-bearing. A camera network. A messaging workspace where the real decisions happen.

None of them were designed to meet. Each holds a partial, confident version of the same customer, the same site, the same asset. The organization does not have one world; it has eleven, and the work of running the place is the work of reconciling them by hand.

This is the environment automation actually has to survive, and it is why so much of it disappoints.

What "see" means

The title uses one word for several jobs. To act on a customer, an agent has to discover that the customer exists; tell that the account in the CRM, the payer in billing and the site in the building system are the same customer; reach the data; know what a field means and whether this copy of it is the one that counts; know which actions it is permitted to take; and observe what its action did. An agent can hold credentials to three customer records and still not know they are one customer. Access is the easy part.

So visibility, in this essay, means the ability to discover the relevant entities, their relationships, their state, the permissions on them and their history, inside one operational context. Most of that is not a property of the agent's intelligence. It is a property of where the agent is standing.

The seams are where automation dies

An automation that lives inside one system is easy and usually already exists. The valuable ones cross: when a request arrives, look up the customer, check the contract, reserve the resource, notify the site, record what happened. Five systems, five credentials, five data models, five ideas of what a "customer" is.

Built the usual way, that automation is a script with five integrations and no standing. It holds a set of API keys as broad as whatever was easiest to issue. It breaks when any of the five changes a field. Nobody can say what it is allowed to do without reading it. When it does something wrong, the record of what happened is spread across five audit logs that do not share an identifier.

So it gets wrapped in process. A patching schedule for its dependencies. A review before its permissions change. A quarterly exercise to work out what it still has access to. The automation saved an hour of work a week and cost a standing obligation — and the obligation compounds while the saving does not.

Why agents change the equation

Fragmentation has been tolerable for as long as automation was narrow. A script built around one workflow is deterministic; when the world drifts, it stops, and somebody notices. Its authority is small because its ambition is small.

An agent's value comes from the opposite: operating across systems, adapting to the exception, deciding what to do next. The more capable it is, the more of the crossing it can do — and the more dangerous it becomes to hand it that crossing through scattered credentials and per-application assumptions. A capable agent with five broad keys is not a productivity gain. It is a new principal in the organization with nobody's job description, whose limits are whatever it happens not to try.

Both costs of fragmentation rise with capability, then: the people who serve as the integration layer, and the authority nobody dares give the software. The way through is not less capable agents. Agents do not need unlimited autonomy; they need legible boundaries — a task with an edge on it, and an environment that enforces the edge. Call that bounded autonomy. The rest of this essay is about what has to be true underneath for it to exist.

Why the layers we already have do not add up to a boundary

The obvious objection is that all of this exists. There are APIs, identity and access management, integration platforms, event buses, data warehouses, service meshes, and lately gateways that sit in front of agents. Each of them is real, and each provides one property to one layer.

Identity management answers who may call which service. It does not answer what this agent may do to this customer across five systems, because the customer is not a thing it knows about. An integration platform moves records between data models, and every mapping it holds is one more place where the question "is this the same customer" is decided, differently, by whoever wrote the mapping. A warehouse knows what happened yesterday and cannot refuse a write today. An event bus carries facts without authority. A gateway can meter and log an agent's calls, but it sees calls, not entities; it can tell you the agent read something, not what.

These can be assembled into visibility, and organizations do assemble them, one automation at a time. That is the point: the assembly is the automation's job again. Every new agent re-derives identity, re-encodes permission, and re-links its own trail, and the boundary it ends up with is exactly as good as the last piece of glue. The claim here is not that visibility cannot be built any other way. It is narrower and harder to dismiss: visibility and authority are dramatically more robust as primitives of a shared execution environment than as responsibilities recreated independently by each automation — because a boundary rebuilt per automation is a boundary nobody can read from the outside.

Four primitives

Put underneath the applications, where every one of them shares it, the environment has to know four things. Identity: what exists. Context: how entities and systems relate. Authority: what this agent may do. Evidence: what happened. The agent becomes the thin layer on top, deciding how to accomplish a task within those, rather than the thick one that has to establish them.

When a customer is one entity rather than five records, an automation does not need to reconcile anything; it refers. The five records do not go away — the reconciliation does not disappear, it moves. It moves below the automation, into infrastructure whose job is to maintain one operational identity across the systems: which record is authoritative for which attribute, how a conflict is resolved, what the entity looked like at a point in time. That is hard, and it is hard once, in a place that is accountable for it, rather than hard again inside every agent, differently.

When permission is a grant against that entity rather than a key in a config file, the question "what is this allowed to do" has an answer that can be read, changed and revoked without opening the code. When every action lands in one record keyed to the same world, "what happened" is a query rather than an investigation.

That is what a refusal looks like when the environment owns the boundary:

10:02:11  agent  read   orders/cust-2481      3 rows · ok
10:02:14  agent  write  invoice/inv-1094      1 row  · ok
10:02:19  agent  read   payroll/*             refused — no grant on payroll

Nothing was patched to produce that third line. No integration was hardened. The agent asked, and the environment answered, because the boundary was never the agent's to enforce in the first place.

What changes in operations

The efficiency argument is usually made as time saved per task. The larger one is different: work that was previously impossible to delegate becomes delegable, because it can be bounded.

An organization will not hand a cross-system task to software it cannot constrain. It will hand it to a person, and the person becomes the integration layer — carrying context between systems that do not speak, absorbing the mismatch, and being the only durable record that the work was done correctly. That is where the real operational cost sits, and it is invisible on every dashboard because it looks like somebody doing their job.

Bounded autonomy moves that work. Not because the software got cleverer, but because for the first time it can be given a task with an edge on it — these entities, these actions, this window — and the edge is enforced by the ground it stands on rather than by the care of whoever wrote it.

The systems will stay fragmented. That is not a phase organizations pass through; it is what a real estate of software looks like after twenty years of decisions that were each locally correct. What can change is what sits underneath them. The question is not whether agents can operate across fragmented software. They can. The question is whether the environment gives them a world they can see, authority they can be bounded by, and a record of what they did.