A user authenticates. A session is issued. From that moment, most enterprise applications stop asking an interesting question and start trusting an answer that was given once, at the door.
I have come to think that is the defining security mistake of the last twenty years, and one that AI agents are about to make very expensive.
Authentication answers who. It has never been a good answer to what — and somewhere along the way, enterprise software quietly decided it was.
Where the assumption entered
The assumption is not foolish. It was economical. Verifying identity is expensive; carrying that verification forward as ambient trust is cheap. Once the perimeter was inside your building, and the session was inside your perimeter, the marginal cost of asking again looked like friction with no return.
NIST's guidance says the opposite, in language worth reading twice. NIST SP 800-207A describes zero trust as removing \"the implicit trust in users, services, and devices based only on their network location, affiliation, and ownership,\" and describes the shift as one from security controls built on network parameters to controls built on identities.
Read the second half of that carefully. It is not only user identities. NIST describes policies based on \"application and service identities in addition to the underlying network parameters and user identities,\" enforced by API gateways, sidecar proxies and application identity infrastructure.
That is a statement about workloads, not people. It is the sentence most authentication-centric architectures have never absorbed.
What authentication never claimed to answer
| Question | What answers it | What often answers it instead |
|---|---|---|
| Who is this principal? | Authentication | Authentication — correctly |
| May this principal reach this resource? | Access control | A role assigned months ago |
| Should this specific operation execute now? | Runtime authorization | Nothing, usually |
| Was the decision correct at the time? | Attributable record | An application log line |
| Is the authority still valid? | Continuous re-evaluation | The session's original grant |
The third row is where the money and the risk live. Access control governs a resource boundary. It rarely governs the operation boundary — which write, against which tenant's records, under which authority, with what prior state.
In a 2026 paper proposing execution authority as a separate protocol layer, the authors draw exactly that line: access control \"typically occurs at session establishment and governs the resource boundary,\" while execution authority governs \"within an authorized session, which specific operations should proceed under current runtime conditions.\"
One author's affiliation holds intellectual property filings related to the work, which is worth knowing before treating the framing as neutral. The distinction holds regardless.
Why agents change the arithmetic
A human typing slowly inside an over-privileged session is a bounded problem. The person gets tired, gets distracted, gets interrupted by a meeting. Volume is naturally limited.
An agent does not get tired. It executes the shortest path to a goal, at machine speed, inside whatever authority the session already carries — and it does so while nobody is watching the screen.
The protocol layer has already conceded the gap. The Model Context Protocol standardizes how agents connect to tools and data, with an authorization model built on OAuth 2.1. As the 2026 paper summarizes it, the protocol's own specification states that it cannot enforce security principles at the protocol level, deferring consent and authorization to implementations.
That is not a criticism of the protocol. It is an accurate description of where the responsibility sits: with the application that implements it. And a conference session at Identiverse 2026 on the authorization frontier makes the same point from the practitioner side — externalized authorization, built on NIST's attribute-based access control and zero trust models, is what makes consistent decisions possible \"across apps, APIS, and MCP servers.\"
Consistency across surfaces is the whole argument. A policy that holds for the web application, the API, the batch job and the agent — or it does not hold at all, because the weakest surface becomes the path.
The persistence layer as an enforcement boundary
Here is the design position I would put in front of any CIO or CISO reviewing an application architecture.
Application components should not hold direct authority over tables. They should hold the ability to request an operation. The persistence layer — the database and the procedures that mediate access to it — should evaluate that request against current identity, tenant boundary, granular permission and the specific operation, then decide.
This reframes the database from a place where information is stored into a place where authority is enforced. It is a real architectural difference, not a labeling exercise. A component that can issue UPDATE against a table has authority no policy engine can revoke at runtime. A component that can only call a procedure with a named operation and a bound identity has asked permission, every time.
The practical consequences compound:
- Revocation becomes possible in real time. Change a permission, suspend an integration, withdraw an agent's authorization — and the next operation evaluates against the new state, not the state that existed when the session opened.
- Tenant boundaries stop depending on application correctness. A multi-tenant platform whose isolation exists only in the query builder is one missing WHERE clause from a disclosure.
- The audit record is produced by the enforcement point. Not reconstructed afterward from application logs that may or may not have captured the context.
- Agents inherit bounded authority. An agent calling a mediated operation is subject to the same evaluation as a human, because the decision does not depend on who is typing.
None of this is novel cryptography. It is mostly disciplined engineering, applied where the earlier discipline stopped.
\"Current\" is the hard word
Every serious version of this argument eventually rests on one adjective. Authorization must be evaluated against current identity, current tenant, current permission, current operation.
A 2026 framework published in IEEE Xplore takes that seriously enough to prove properties about it. Its fifth guarantee states that no access is \"granted or retained solely based on prior authentication,\" and that all access decisions are continuously re-evaluated against authentication assurance, contextual trust and estimated attack risk.
Two design details in that work are worth borrowing even if you never implement the framework.
The first is asymmetric decay. Trust accumulates additively through positive evidence, but penalties are unbounded in frequency and additive in magnitude, so \"faster trust decay than accumulation\" is a design goal rather than an accident. In plain terms: it should be easier to lose standing than to earn it back.
The second is the honest limitation. The authors state their guarantees hold \"relative to the accuracy of attribute measurements, the correct initialization of authentication strengths, and the timely observation of security outcomes.\" Every version of this architecture inherits that dependency. Enforce on a bad signal and you have automated the wrong decision.
Their evaluation, incidentally, ran on a synthetic dataset of roughly 50,000 authentication sessions and 500 users, with about 30% modeling adversarial behavior. That is a testbed, not a production result, and it should be read as such.
What a record must be able to answer
When a controller, an auditor or a customer asks why a number changed, the answer has to come from the system without a support ticket.
Four questions, in order:
- Which authenticated principal initiated this? A person, a service identity, an agent — attributable, not \"the application.\"
- What was the principal acting as? Which tenant, which role, which authority, granted by whom and still valid when?
- What operation executed, and against what prior state? Not just that a value changed, but what it was and which procedure changed it.
- Was the request anomalous for that principal? Authorized but out of character — a bulk read at 2 a.m., an agent exceeding its usual pattern.
The fourth is the one most audit trails miss, and the one that matters most when the principal is an agent. A permission table will clear an agent that reads forty thousand records overnight, because reading was allowed. Something else has to notice that the volume was not.
An illustrative scenario, clearly labeled
Constructed to show the method. No real company, person or incident is described.
A support application holds a database connection with broad read and write rights on customer records. An AI assistant is added to draft resolutions. It calls the application's API, so it inherits everything the connection can do.
In week three, an agent chained from a customer email — which a customer can write — into a tool call that updates a billing field. It was authorized, because the connection could write. Whether it was correct depended on a human reading the draft before it was saved.
Now rebuild the same feature with a mediated persistence layer. The application holds no table grants. Every operation is a named call — read a record, stage a field change, request an approval — with the principal bound and the tenant asserted. The agent's authority is scoped per task and expires with it. The consequential write is staged, not applied.
The agent still runs. It simply cannot do the thing nobody intended, because there was no path that permitted it.
Five questions for an architecture review
1. Can any application component reach the database directly? Not \"does it.\" Can it. If a leaked credential grants table-level authority, the answer to every question below is moot.
2. Does the connection string carry more authority than the function needs? A background process that updates one field should not hold administrative rights on a schema because it was easier once.
3. Where does the tenant boundary get enforced? In the query builder, in middleware, or in the layer that owns the rows — with a test that proves it.
4. What happens at the next permission change? Ask to watch a revocation take effect. Minutes or a restart cycle tells you which architecture you own.
5. Who can tell an agent from a human in the record? If the audit trail collapses both into one service account, the accountability question has already been answered badly.
Where this goes wrong
Three failure modes are common enough to plan against.
Vendor-driven implementation. A practitioner guide on zero trust architecture names this first among predictable failures: treating the model as a product to buy rather than an architecture to build. No single vendor delivers it, because the work spans identity, policy, data and application layers.
Policy complexity. The same guide names the pattern — segmentation and authorization programs collapsing under thousands of hand-crafted rules unless automation and observation come first. An enforcement boundary that generates a rule per exception becomes the bottleneck it was meant to remove.
Identity debt. This architecture assumes a clean foundation. Stale accounts, shared service credentials and inconsistent role models do not merely weaken it; they make the evaluation meaningless, because it is evaluating bad inputs quickly.
The conversation worth having
The purpose of this line of thinking is not to keep unauthorized people out. That was always the easier problem, and the industry has gotten reasonably good at it.
The harder problem is that everything already inside — a user, a service, a scheduled job, an agent — should remain accountable for what it is permitted to do, at the moment it does it, against the specific record it touches.
Authentication establishes who you are. It should not establish unlimited authority over what you do next, for as long as a token lives.
That is a different conversation from application security. It is an architecture conversation, it belongs in the design review rather than the incident review, and I think more CIOs, CISOs and enterprise architects should be having it before the agents arrive rather than after.
Hashtags
#CustomSoftware #SystemsIntegration #EnterpriseAI #BusinessAutomation #ZeroTrust #AIGovernance #LeastPrivilege #DataSecurity #EnterpriseArchitecture #AIAgents #CyberResilience #RiskManagement #ITLeadership #CISO #DataGovernance #CustomAI #DigitalTransformation #BusinessStrategy #AccessControl #OperationalExcellence