Environment Engineering · Episode 03

Give the Agent an Identity

Who is acting, on whose authority, and for how long.

Artifact · Authority Matrix Follows · Episode 02 — Construct the Task World Next · Episode 04 — Contain the Compromise
Before you read

A refund appears in the payment ledger.

₹1,847. One customer. One disputed transaction. The amount sits within the agent's ₹2,000 ceiling. The policy version is current. The environment attestation is valid. Every control from Episodes 01 and 02 held.

The actor field reads svc-support-automation.

That value identifies a technical caller. It does not explain the action.

It does not tell you whether the refund was triggered by the customer, initiated by a support employee, authorized by routine policy, or approved as an exception. It does not identify which agent run exercised the authority. If the same account serves ten agents, it does not even tell you which agent acted.

Six months from now, in a financial controls review, someone will point at that row and ask who authorized it. The honest answer is: the automation did. That answer is not acceptable, and it is not a logging problem. It is a design problem, and it was made months earlier by someone provisioning a service account so a prototype would work.

Episode 01 bounded what the run could cause. Episode 02 specified the world in which it reasoned. Neither answers the next production question:

Whose authority did the agent exercise?

This episode separates the identities and decisions that a single shared credential collapses — the affected subject, the task initiator, the technical actor, the authority owner, the policy decision, and the execution grant.

The artifact this episode produces is the Authority Matrix.

Vocabulary for this episode

This episode has the highest jargon density in the series, most of it borrowed from identity engineering. None of it is optional — the words are load-bearing — but none of it requires prior knowledge either.

Word What it means here
Principal Any entity that can be authenticated and hold permissions. A human, a service, an agent
Credential The secret or certificate a principal uses to prove it is who it claims to be
Grant A specific, bounded permission issued to a principal — this operation, on this resource, up to this limit, until this time
Claim A statement carried inside a token. "This token is for agent X, valid until 14:35, for the payment gateway only"
Audience Which system a credential is valid against. A credential with a broad audience can be redirected at other systems
Bearer token A credential where possession alone is sufficient. Whoever holds it can use it — like cash
Attenuation Deriving a narrower credential from a broader one. Authority shrinks as it passes down a chain
Just-in-time (JIT) Issuing a permission at the moment of use and withdrawing it immediately after, rather than holding it standing
Standing authority Permissions a principal holds continuously, whether or not it is currently doing anything
Enforcement point The system that actually applies a constraint. Not where the rule is written — where it is checked
Revocation Cancelling a credential before it expires on its own

Three terms this series coins, because the standard vocabulary does not separate things that must be separated:

Authority Matrix — the artifact mapping each consequential action to its principal, authority source, resource binding, ceiling, lifetime, enforcement point, and required evidence.

Zero standing high-consequence authority — the achievable version of "zero standing privilege." The agent may hold standing permission to authenticate and read its work. It holds no standing permission to move money.

Enforcement context versus evidence context — the split between what a credential must carry to allow an action and what the audit trail must carry to explain it. Conflating them is the most common identity design error in agent systems.

Who this episode is for, and what you will own

More than any other episode, this one looks like it belongs to someone else. It does not. Identity infrastructure belongs to the platform team; the decisions that infrastructure implements do not.

You do not own this You do own this
Choosing SPIFFE, Entra, or a cloud IAM Deciding whose authority each action carries
Implementing token exchange Deciding whether a user delegated authority they actually held
Setting credential lifetimes Deciding what must expire with the action rather than the day
Building the approval service Deciding what an approval must bind to
Configuring the policy engine Deciding which rules it evaluates, and who owns them
Implementing revocation Deciding what must be stoppable, at what granularity, within what time
Provisioning the agent identity Deciding when it is decommissioned, and who reviews it
Emitting correlation IDs Deciding what must be reconstructible six months later

Every item in the right column is a statement about accountability. None of them can be inferred from a working system, because a working system produces no evidence that its accountability is inadequate. That evidence arrives during the first investigation.

Platform builds the identity system. You decide what it must be able to prove.

Where this sits in the series

The three artifacts couple tightly, and the coupling is worth stating precisely:

The envelope says a refund may be issued. The manifest says which payment system it reaches. The matrix says whose authority moved the money, and how you prove that afterward.

Two mechanisms carry forward directly. Episode 01's consequence classes become an identity-layer control10 — a run that cannot establish authorizing basis drops from C3 to C2. And Episode 02's run attestation becomes one link in this episode11's evidence chain: the manifest attests to the world, the matrix attests to the authority, and a correlation identifier stitches both to the business outcome.

01The actor field

The instinct is to say the service account is not a real identity. That is rhetorically satisfying and technically wrong.

A service account is an identity. It authenticates. It appears in access reviews. It can be assigned permissions and revoked. The problem is not its existence but its shape.

In most agent deployments it is shared across runs, long-lived, scoped to the union of every task any agent performs, unbound to the specific case at hand, and unable to carry the context that made the action legitimate.

A service account can identify the caller. It cannot, by itself, explain the action.

That gap has four operational consequences, and each compounds as the fleet grows.

Revocation becomes all-or-nothing. Disabling one misbehaving agent disables every agent sharing the credential. On the day you most need a precise instrument, you have a blunt one.

Least privilege becomes arithmetically impossible. The account must hold the union of every permission any consumer requires. Add a fifth agent and the account gets broader. It never gets narrower, because narrowing it breaks something.

Incident scope becomes unbounded. A compromised credential implicates every action it ever took. The investigation cannot narrow, because nothing in the record distinguishes one agent's actions from another's.

Approval becomes decorative. A human authorizes an action in one system while the target system records the service account. The two are connected only by a timestamp and someone's recollection of what they were looking at.

None of these are identity-infrastructure problems. They are product problems, because each one is a decision about what the business must be able to prove afterward — and nobody but product is going to make that decision.

02Identity is not authority

The word identity is doing the work of six different questions in most agent conversations. Separating them is the whole of this episode.

Question Concept Refund example
What process is calling? Technical actor Billing dispute agent, v3, production
Who or what is affected? Business subject Customer 4831, transaction T17
What began this run? Initiator Authenticated customer dispute
Under whose policy is it permitted? Authority owner Billing Operations
Who approved this specific exception? Approver Named reviewer, for exceptions only
What exactly may it do right now? Granted authority Refund T17, up to ₹2,000, for five minutes

The error most teams make

An earlier draft of this series made a mistake worth naming, because it is the mistake nearly everyone makes on the first pass.

It treated the customer as the delegating subject — as though the agent acted on the customer's behalf in the OAuth sense.

But a customer disputing a charge does not possess the merchant's refund authority. They cannot delegate what they never held. The customer initiates the task and is affected by its outcome. The authority to move money belongs to Billing Operations, exercised under refund policy v11, and in exception cases granted by a named reviewer.

A request can initiate an action without authorizing it.

This distinction is not pedantic. It determines what your logs mean.

If the system records the customer as the authorizing party, the audit trail asserts that the customer approved a merchant disbursement. That is false. It will not survive a financial controls review, and the person who has to explain it will not be the engineer who configured the token exchange.

The test to apply: for every action, ask whether the party recorded as authorizing it could have performed that action themselves, with their own credentials, on that day. If no, they did not authorize it. They requested it.

03Choose the authority model

A common claim is that delegation is the correct default. That is too broad, and the breadth hides the actual product decision.

Agent actions derive authority from at least five distinct sources. Choosing among them is a business decision that determines what your identity infrastructure must support.

Model Authority derives from When appropriate Refund example
Own-principal The agent's own assigned organizational permissions Scheduled or system-initiated work, no human in the loop Nightly reconciliation sweep
Policy-authorized An organizational rule evaluated by a policy service Routine actions within a defined ceiling Refund within ₹2,000 under policy v11
Approval-derived A named human authorizing one specific action Exceptions above the routine ceiling Refund of ₹8,400
On-behalf-of delegation A signed-in user's own authority The agent genuinely extends that user's reach Employee copilot sending from that employee's mailbox
Impersonation The agent becomes indistinguishable from the user Almost never

The warning · Impersonation produces logs that are confidently false. The record states that a human performed an action an autonomous system performed. Six months later, in an investigation, that is worse than an ambiguous log — because it asserts something untrue with full system authority. Someone will build a conclusion on it.

The refund agent uses three of these models simultaneously, which is typical and worth making explicit rather than letting it happen by accident:

Use delegation when authority genuinely derives from a user. Use an agent principal when it derives from organizational policy. Do not disguise one as the other.

Getting this wrong is less a security failure than an accounting failure. The system will faithfully record authority flowing from a party who never held it, and it will do so consistently, at scale, for months.

04Who authorized the authorizer?

Here is a gap that survives in almost every agent identity design, including the first draft of this one.

The matrix says exception refunds above ₹2,000 require approval from a "named reviewer." That sounds rigorous. Then nobody asks the next four questions.

Does that reviewer actually hold ₹8,400 refund authority? In most organizations, human approval limits exist — in a delegation-of-authority policy, a finance manual, or an ERP configuration. Agent approval flows are frequently built without reference to any of them. A support lead who can personally approve ₹5,000 ends up approving ₹8,400 through the agent, because the agent's approval interface has no limit of its own.

How is that authority verified at approval time? Usually it is not. The approval service checks that someone with the reviewer role clicked approve. It does not check that this specific person holds this specific amount of authority for this specific category of expenditure.

What happens when they change roles? Human authority is revoked through HR processes and access reviews. Agent approval routing is typically configured once and pointed at a group, a rota, or worse, a list of names in a config file. The person who left in March may still be an eligible approver in August.

Can the approver approve their own escalation? If an approval routes to whoever is on shift, and the agent escalated a case that person was already working, the reviewer is approving their own work. In a human process this is usually prevented by segregation of duties. In an agent process it is usually not prevented at all, because nobody modeled it.

The principle

Approval-derived authority inherits the approver's limits. If the approver's own authority is not modeled, the approval is a rubber stamp with a name attached to it.

The delegation chain does not begin at the agent. It begins at whoever the organization actually authorized to move that much money, and the agent's approval flow is one more hop in a chain that already existed before anyone built an agent.

What the matrix must record

Field Example
Approver population Billing Operations leads, current roster from the identity provider
Approver's own authority ceiling ₹10,000 per transaction, from the delegation-of-authority policy
Source of that ceiling Finance DoA v4, effective 2026-04-01
Verification at approval time Authority checked against the DoA at the moment of approval, not at configuration time
Segregation rule The approver may not be the case owner
Roster freshness Sourced live from the IdP group, never a static list
Escalation above approver ceiling Routes to Finance, not to a second lead

What you own: finding out whether a human approval limit exists for this category of action, and insisting the agent's approval path respect it. This is usually a thirty-minute conversation with Finance that nobody has had, and it frequently discovers that the agent's exception ceiling was chosen by an engineer who picked a round number.

The question to ask: "If a human did this manually, who would have to sign off, and up to what amount?" Then check whether the agent's approval path routes to that person, respects that limit, and reads that roster.

05Grant authority per action

Once the authority source is settled, the question becomes what the agent actually holds while it runs.

Zero Trust supplies the shape of the answer. NIST SP 800-207 defines zero trust as concepts designed to enforce accurate, least-privilege per-request access decisions, with access rules made as granular as possible1.

More useful than the principle is the architecture. NIST separates three components: the policy engine, which makes the ultimate decision to grant access; the policy administrator, which establishes or shuts down the communication path and generates any session-specific credential; and the policy enforcement point, which enables, monitors, and terminates the connection.

The placement · The agent is not the policy engine. It is the subject of a decision made elsewhere. An agent that evaluates its own permissions has no meaningful permissions. It should receive a grant that already encodes the decision.

Zero standing high-consequence authority

Zero standing privilege is often asserted as the controlling principle. In practice it is unattainable and unnecessary. Most production agents need standing ability to authenticate, consume from a queue, emit telemetry, and read their assigned work.

The goal is not zero standing access. It is zero standing high-consequence authority.

Capability Standing? Why
Authenticate as itself Yes Required to do anything
Read its assigned case Yes Bounded — but see section 07
Read arbitrary customer billing data No Reach must be case-bound
Refund any transaction No High consequence, granted per action
Refund T17 up to ₹2,000 for five minutes Just-in-time Bound to case, resource, amount, and time
Modify subscription No grant exists Capability absent at every layer

Just-in-time access grants time-limited, task-specific permissions only when needed and revokes them immediately afterward, minimizing the window in which elevated access can be exploited2. The stronger variant issues ephemeral credentials generated per session and de-provisioned on completion.

This maps unusually well onto agents, because Episode 02 already defined the run as a bounded unit with a start, a completion condition, and a maximum duration. That is exactly the shape just-in-time access assumes.

The cost, stated honestly

Just-in-time grants are not free, and a review that ignores this will produce a design engineering quietly abandons.

Cost Effect When it matters
Latency A round trip to the authorization service per consequential action High-frequency agents; interactive workflows
Availability coupling The authorization service becomes a hard dependency of every action Its uptime is now your product's uptime
Failure handling A grant request can fail mid-run, after other work is done Long runs; multi-step transactions
Operational load Grant issuance appears in logs, metrics, and incident surface Every fleet, at scale

For a refund agent issuing one payment per run, the cost is negligible. For an agent making forty consequential calls a minute, it is a design constraint.

The mitigation is scoping, not abandonment. Grant per action class bounded to the run rather than per individual call. Batch where the consequence class is uniform. Keep the tight per-action grant for the irreversible step Episode 01 identified, which is usually one step, not forty.

06Where the constraint lives

The matrix specifies that the refund grant is bound to case, transaction, and amount. It does not specify how. That distinction matters enormously, because a broad bearer token plus a system-prompt instruction can satisfy the requirement on paper while satisfying nothing in reality.

Pattern Constraint enforced by Suitable when
Token claim validation Resource server checks custom claims The target system can read and enforce them
Capability token The token represents one narrow operation Fine-grained issuance is available
Mediating gateway A gateway validates context, then calls a broader API The downstream system is legacy or coarse-grained
Downstream object policy Target system evaluates resource-level rules Tenant isolation, row-level security

Product specifies the required constraint. Engineering selects the pattern.

The one unacceptable answer is enforcement in the agent's own reasoning — the same behavioral-versus-structural distinction Episode 02 drew about policy delivered as context, and the one Episode 04 builds its entire compromise analysis on.

The mediating gateway row deserves a note, because it is the honest answer for most enterprises. Your payment system probably cannot evaluate a custom claim saying "case 9912 only." A gateway that holds the broad credential, validates the narrow context, and then calls the broad API is a legitimate structural control — provided the agent cannot reach the broad API directly. That proviso is the whole control, and it belongs in the manifest's denied list from Episode 02.

07Read authority is not free

Here is a tension between this episode and Episode 04 that is worth resolving openly rather than leaving for a reader to notice.

Section 05's table grants standing read authority to the agent's assigned case, billing events, and dispute history, on the grounds that reads are "bounded, low consequence."

Episode 04 then argues that reading private data is one of three conditions that make an agent acutely dangerous — private data, untrusted content, and an outbound channel. Under that analysis, read authority is not low consequence at all. It is exactly half of an exfiltration path.

Both are correct, and the resolution is that "consequence" means two different things.

Lens Read authority is... Because
Episode 01 · consequence of the action Low A read changes nothing, reverses trivially, costs nothing
Episode 04 · consequence under compromise High Whatever the agent can read, a compromised agent can attempt to send

So the standing-read grant is defensible only when the outbound side is structurally bounded. Read authority and egress authority are not independent decisions, even though they are configured in different systems by different teams.

What this changes in the matrix

Read grants get three properties they usually do not have:

Scope, not just permission. "Read billing events" is too broad. "Read billing events for the assigned case" is the grant. If the enforcement point cannot express the scope, a mediating gateway must.

Sensitivity class. Not all reads are equal. Reading a dispute description and reading a stored payment instrument are different exposures, and only one of them belongs in an agent's standing authority.

A stated pairing with egress. The matrix should record, next to each read grant, what the manifest's egress policy is. Broad standing reads with an open egress allowlist is the combination to catch in review, and neither artifact catches it alone.

Read grant Scope Sensitivity Paired egress posture
Assigned case Case ID Internal Default-deny, 4 required hosts
Billing events Customer + case Financial Default-deny
Dispute history Customer + case Financial Default-deny
KB corpus Global, published only Public Default-deny
Stored payment instrument No grant exists Regulated

A read grant is only as bounded as the egress policy it sits next to. Review them in the same conversation or you will approve each one reasonably and end up with an unreasonable pair.

What you own: deciding which reads are genuinely required, at what scope, and insisting the review looks at read authority and egress together rather than in two separate meetings six weeks apart.

08What identity proves, and what it does not

Workload identity systems establish which workload is calling. SPIFFE assigns each workload a SPIFFE ID and issues an SVID — an X.509 certificate or JWT — that the workload uses to authenticate to other workloads3. To minimize exposure from a leaked key, private keys and certificates are short-lived and rotated frequently3 and automatically. The infrastructure generates these on the workload's behalf rather than requiring it to hold a long-term secret4.

It is tempting to claim this lets a downstream system verify the manifest's image digest, policy version, and network posture. It does not — not by itself. Three things are being conflated:

Layer What it establishes Refund example
Identity Which workload is calling This is the billing dispute agent
Attestation Which properties are verifiably true of it Running image digest X, manifest v4.2
Authorization Whether those properties permit this action May refund T17 up to ₹2,000

Standard workload identity delivers the first. The second requires additional attestation evidence, claims, or admission controls. The third requires a policy decision.

The manifest declares the intended world. Workload identity authenticates the calling workload. If access decisions depend on properties like image digest or manifest version, those properties must be separately attested and carried into the decision.

Two calibrations worth stating so nobody over-reads the guarantee. Credential lifetime is an operator configuration, not a specification property — state it as a choice your platform team makes, not a default you inherit. And short lifetimes reduce the revocation window without eliminating the need for an emergency path: a compromised credential remains dangerous for its remaining validity, and trust-bundle changes may require immediate action regardless.

Agent identity as a governed principal

Platforms are now formalizing this specifically for agents. Microsoft Entra Agent ID introduces agent identity as an identity construct for AI agents, extending existing capabilities such as Conditional Access and identity governance5.

The credential design is worth noting precisely. Authentication credentials are configured on the blueprint, which uses them to acquire tokens on behalf of agent identities; credentials do not reside on the agent identity6 itself. The blueprint authenticates with its own credential and obtains an exchange token for a specific child agent identity6.

That separation is the point: **the thing that is the agent and the thing that carries authority are deliberately different objects.**

But the maturity should not be overstated. Conditional Access targeting of agents is in preview, and a substantial set of familiar controls does not apply to agent identities at all — multifactor authentication, authentication strength, device compliance, approved client apps, session controls, sign-in frequency7, and location conditions.

The strategic read for an AI PM: enterprise identity providers are moving to treat agents as governable principals, which means agent access will increasingly face the same access-review and lifecycle machinery as employee access. But the control surface is thinner than the human equivalent today, so more of the burden currently falls on the grant itself rather than on conditional policy around it.

Plan for that to shift. A design that puts everything in the grant will still work when conditional controls mature. A design that assumes conditional controls exist today will not work now.

09Preserve the evidence chain

Here is where identity designs most often go wrong: they try to put the entire provenance record inside the credential.

Tokens should be minimal, audience-bound, short-lived, and limited to what the resource server needs to make a decision. Loading them with case IDs, model versions, manifest versions, and approval references creates propagation, privacy, and size problems — and puts business context in front of systems that have no need for it.

Put enough context in the credential to enforce the action. Put enough evidence in the audit trail to explain it. Do not turn the token into the audit log.

Two surfaces, cleanly separated:

Enforcement context — what the target system needs to allow or deny: agent principal, audience, operation, resource binding, amount ceiling, expiry, and an approval or authorization handle.

Evidence context — what the organization needs to reconstruct the action: run ID, agent and model version, manifest version, case ID, policy version, initiator, approval record, tool request, and authoritative outcome.

The two are joined by a stable correlation identifier that appears in both.

The ledger correction

A tempting accountability claim is that a refund can be traced "from the payment ledger alone." That is both unrealistic and undesirable.

A payment ledger should record the transaction, amount, execution principal, timestamp, idempotency reference, and outcome. It should not carry delegation chains, model versions, or support reasoning. Forcing it to do so couples unrelated systems and pushes sensitive context into a financial record that has its own retention rules and its own audience.

The correct standard is a correlated chain across authoritative systems:

Evidence System of record
Initiating request Case management
Policy decision and inputs Authorization service
Agent, model, and manifest versions Run attestation (Episode 02)
Approver identity and their authority basis Approval service
Approved action intent Approval service
Payment outcome Payment ledger
End-to-end linkage Shared correlation ID

This extends the receipt discipline from Episode 02 rather than duplicating it. The manifest attests to the world; the matrix attests to the authority; a correlation identifier stitches them to the business outcome.

The practical test: hand someone a correlation ID and ask them to reconstruct the action without asking anyone a question. If they need to ask a human what happened, the chain has a gap, and the gap is where the investigation will stall.

On delegation chains as evidence

RFC 8693 defines the act claim as a means to express that delegation has occurred and identify the acting party. The outermost act claim represents the current actor, while nested claims represent prior actors, with the least recent most deeply nested8.

The specification then says something that changes the design:

RFC 8693 · Prior actors are informational only. For the purpose of applying access control policy, the consumer of a token must only consider the token's top-level claims and the party identified as the current actor by the act claim. Prior actors identified by any nested act claims are informational only and are not to be considered in access control decisions.

A delegation chain is evidence of how authority travelled. It is not proof that every delegation was valid.

The RFC also defines may_act, which states that one party is authorized to become the actor and act on behalf of another — usable by the authorization server to determine whether the requested delegation should be permitted at all8. That is the pre-authorization primitive, and it sits at issuance rather than at consumption.

The product implication: the protocol can preserve delegation, but only policy can make the delegation valid. Each exchange requires its own evaluation.

10Multi-agent attenuation

An orchestrator dispatching to sub-agents raises the stakes on everything above, because the easy path silently destroys the properties you just built.

Two models exist. Propagation hands the sub-agent the parent's credential — simple, and it means the sub-agent inherits the parent's full authority regardless of its task, with the target system unable to distinguish them. Attenuated delegation issues the sub-agent a derived credential with strictly narrower authority.

Four invariants should hold, and none of them are enforced by any protocol automatically:

  1. Authority never increases down the chain. A sub-agent cannot hold permissions its parent lacked.
  2. Lifetime never extends down the chain. A derived grant expires no later than its parent.
  3. Audience narrows at each hop. A credential usable against multiple unrelated services can be redirected even when its permissions are otherwise tight.
  4. The chain is recorded as evidence, not consumed as authorization. Per RFC 8693, the current actor governs the decision; prior actors are informational8.

The third invariant is the one most often missed. Narrow permissions on a broadly scoped audience still leave a redirection path — the permission says what may be done, the audience says where, and tightening only one of them is half a control.

The fourth is where teams over-trust the protocol. Token exchange can issue broader authority if the authorization server permits it. Attenuation is a policy property that must be configured and tested, not a protocol guarantee.

The most common accidental violation of rule one: giving a sub-agent its own service account "for simplicity." This breaks the chain and grants authority the parent never held, and it usually happens during a sprint where the token exchange was the blocker and someone found a workaround.

11When the initiator is another agent

Section 02's initiator field quietly assumes a human or a schedule started the run. In any multi-agent system, that assumption fails immediately, and the failure is not obvious because the field still contains a valid value.

An orchestrator dispatches to a refund sub-agent. What is the initiator?

The naive answer is the orchestrator. That is true and useless. It tells you which process began this run and nothing about why the work exists or who is answerable for it.

Two facts, not one

Multi-agent systems need the initiator split into two fields that are frequently identical in single-agent systems and never identical in multi-agent ones:

Field Meaning Refund sub-agent example
Proximate initiator What directly triggered this run Dispute orchestrator, run orch-4471
Root initiator The human, customer, or scheduled event that began the whole chain Authenticated customer dispute, case 9912

The root initiator must propagate unchanged through every hop. It is the only field that answers "why does this work exist?" — and it is the field an investigation actually needs.

The failure when this is missing: an investigation traces a refund to an orchestrator, traces the orchestrator to a queue, traces the queue to a batch job, and stalls. The chain is complete and explains nothing, because at no point does anything say a customer disputed a charge on July 14th.

Three rules

The root initiator propagates unchanged. It is copied down every hop, never regenerated. A sub-agent that mints a fresh root initiator has severed the chain.

The proximate initiator is recorded per hop. This is what reconstructs the topology when something goes wrong in the middle.

Depth is bounded and recorded. An agent that can dispatch to agents that can dispatch to agents needs a maximum depth, enforced structurally. Without it, one malformed task can produce a chain nobody designed, and the fan-out bound Episode 01 set becomes the only thing standing between you and an incident.

Where authority actually comes from

This is the part teams get wrong under time pressure.

Authority does not derive from the chain. It derives from the same five models in section 03, evaluated fresh at each hop. A sub-agent issuing a refund is policy-authorized under refund policy v11 — exactly as it would be if a human had dispatched it. The orchestrator's involvement is evidence of how the work arrived, not the basis on which it is permitted.

The chain explains how the work got here. Policy decides whether it may proceed. Never substitute the first for the second.

What you own: deciding that root initiator is a required field, that it propagates, and that no agent may act on the strength of "an orchestrator asked me to." If your matrix has one initiator field, it works today and breaks the first time you add a second agent.

12The identity nobody decommissions

Human identities have a lifecycle everyone understands. Someone joins, gets provisioned, changes roles, gets re-reviewed, leaves, gets deprovisioned. It is imperfect but it exists, it has an owner, and it runs on a schedule.

Agent identities usually have half of one. They get created. Nothing else is defined.

What accumulates

Orphaned identities. The agent was deprecated in March. Its identity still exists, still authenticates, still holds whatever grants it was given. Nobody disabled it because nobody owned it, and the deprecation ticket said "remove the service" rather than "remove the principal."

Permission accretion. Every incident where the agent needed one more permission added one more permission. None were ever removed, because removing a permission requires knowing it is unused, and nobody measures that.

Ownership decay. The identity was provisioned by an engineer who has since changed teams. During an access review the owner field points at a person who has no idea what it is, so they approve it, because the alternative is finding out.

Version sprawl. Agent v1, v2, and v3 each have identities. v3 is in production. v1 and v2 still authenticate.

What the matrix must specify

Lifecycle event Decision to record
Creation Who approves a new agent identity, and against which matrix
Ownership A named accountable owner, and what happens when they change roles
Review cadence How often grants are re-justified — and by whom
Grant expiry Whether standing grants expire by default and require renewal
Version retirement Whether an identity is retired when its version is superseded
Decommission trigger What event retires the identity, and who confirms it
Orphan detection How an identity with no active runs is surfaced

The one that pays for itself immediately: grants that expire by default.

If every standing grant carries a renewal date, permission accretion self-corrects — unused permissions lapse silently, used ones get re-justified by someone who knows why. Without expiry, the only mechanism that removes a permission is someone deliberately auditing for it, which happens after the incident that made it interesting.

An agent identity with no decommission trigger is permanent. Every one you create is a standing grant you have promised to review forever, and nobody is reviewing them.

What you own: the review cadence, the accountable owner, and the decommission trigger. Platform can build all three. None of them can be inferred, because a working agent produces no signal that its identity has outlived it.

The question to ask in the review: "When this agent is retired, what specifically removes its ability to authenticate, and who confirms it happened?" If the answer is a person's good intentions, write it down as a finding.

13Validate, revoke, degrade — and count the cost

Episode 02 established that a specification which cannot block a run is documentation. Identity requires the same discipline, plus one thing the manifest did not need: a way to stop a run already in flight.

Validation before execution

Condition Behavior Work goes to
Agent identity cannot be authenticated Refuse to start Platform incident
Authority source not determinable for a consequential action Refuse to start Billing Operations, manual
Grant scope exceeds the manifest's declared reach Refuse to start Engineering — this is a defect
No authorizing basis for a C3 action Degrade to C2, proposal only Human reviewer, proposal queue
Approval expired, reused, or bound to different parameters Refuse the action, escalate Named approver, re-approval
Approver's own authority ceiling exceeded Refuse, route upward Finance
Evidence sink unreachable No consequential write Billing Operations, manual
Execution outcome uncertain Reconcile before retry, never restart blind Reconciliation process

The fourth row carries forward Episode 02's most useful mechanism. Degraded mode is not failure — it is the run continuing at a lower consequence class. An agent that cannot establish authorizing basis drops from Act to Propose. It still investigates, still produces a recommendation, still delivers value. It no longer produces irreversible effects on unverified authority.

The last row is the coupling to Episode 01's idempotency argument, restated at the identity layer: a resumed run must not assume its previous grant went unused.

Count the refusal cost

Same discipline as Episodes 01 and 02, and the same reason: a validation table with eight refusal conditions and no capacity conversation is not a control design, it is an unplanned load transfer.

Three questions per row:

  1. How often will this fire at forecast volume?
  2. Who receives the work, and do they know?
  3. Is this a rare platform incident or a routine event dressed as an exception?

The rows most likely to surprise you are authority source not determinable and evidence sink unreachable. Both look like rare infrastructure failures. Both turn out to fire regularly in the first month, because the authorization service and the audit pipeline are newer than the systems around them.

If a refusal condition fires more often than the receiving team can absorb, fix the dependency or widen the bound with a compensating control. Leaving it is choosing to degrade the product while the dashboard stays green.

Revocation

The question a reviewer will ask during an incident is narrow: **what can a human do in the next sixty seconds to stop this specific agent?**

The answer is determined entirely by choices made at design time.

Revocation granularity is decided at identity design time. If the credential is shared, so is the kill switch.

Three granularities should be available, each without affecting other agents:

Granularity Stops Operated from
One run A single execution in flight Out-of-band control plane
One agent version Every run of that version Deployment control plane
One agent identity Everything that agent can do Identity infrastructure

If your architecture can only offer "disable the service account," you have one blunt instrument for a fleet, and you will hesitate to use it — which means in practice you have none.

Short credential lifetimes help but do not substitute. Expiry handles the leaked credential. It does not handle the agent misbehaving right now, within its valid window, which is the case you are actually worried about.

Test all three in a drill. A revocation path that has never been exercised is a claim, not a control. Episode 04 makes the same argument about interruption, and for the same reason.

14The confused deputy

One failure mode deserves its own treatment, because agent systems are structurally prone to it in a way ordinary software is not.

The confused deputy problem occurs when an entity that lacks permission to perform an action coerces a more-privileged entity into performing it, exploiting the trust placed in that entity9's identity.

An agent is a nearly ideal confused deputy. It holds real authority. It acts on instructions. It processes untrusted input — customer messages, documents, retrieved content, tool outputs. Any of those can attempt redirection, and the agent has no reliable way to distinguish a legitimate instruction from an injected one.

AWS's mitigation illustrates the principle rather than supplying the mechanism. The external ID is controlled by the calling service, unique per customer, and checked in the trust policy, ensuring the party controlling the role is the party making the request9. The transferable idea is that authority should be bound to the context for which it was issued, so a privileged intermediary cannot redirect it toward a different customer or resource.

Applied to the refund agent: a grant issued for case 9912 and transaction T17 is invalid for any other case or transaction. Manipulation may change what the agent attempts. It cannot change what the grant authorizes.

The question is not whether the agent can be manipulated. It is whether a manipulated agent holds a grant that authorizes the manipulated action.

That reframing is the bridge into Episode 04, which assumes manipulation has already succeeded and asks what still holds.

15Translating this to your product

The refund agent makes authority legible because money forces the question. Every agent has the same six roles whether or not anyone has named them.

Coding agent Support agent Internal ops agent Research agent
Business subject The repository and its owners The customer The record or system changed Usually none
Initiator The developer, or a CI event The customer or an agent A schedule or an alert A researcher
Authority owner The repo's code owners Support Operations The system owner The team's data access policy
Typical wrong model Running as the developer's own token "On behalf of the customer" Shared ops service account Personal credentials
Correct model Own-principal + policy, PR only Policy-authorized; customer initiates Own-principal + approval for writes Own-principal, read-scoped
Approval gap Merge rights not modeled against branch protection Refund limits not modeled against DoA Change approval not modeled against CAB Data access not modeled against classification
The grant that must not exist Force-push to main; direct prod deploy Modify account terms; suppress collections Delete; bypass change control Write to any system of record
Revocation granularity needed Per version — a bad prompt affects every run Per identity — customer trust Per run — one bad batch Per identity
Evidence anyone will ask for Which commit, whose review, which policy Who authorized this customer outcome Which change, whose approval Which sources, which access basis

The generalizable questions, whatever you build:

  1. For each action, could the party recorded as authorizing it have done it themselves that day? If no, they initiated rather than authorized.
  2. Does a human authority limit already exist for this action, and does the agent's path respect it?
  3. What does the agent hold standing, and is any of it high-consequence?
  4. Can you stop one agent without stopping all of them?
  5. Hand someone a correlation ID — can they reconstruct the action without asking a human?

16The artifact

Field artifact 03
Authority Matrix
Billing dispute resolution · v3.2 · effective 2026-08-01

Definition. The Authority Matrix maps each consequential action to its principal, authority source, resource binding, ceiling, lifetime, enforcement point, and required evidence — and states what happens when authority cannot be established.

Field Value
Matrix am-billing-dispute v3.2
Envelope reference ce-billing-dispute v2.1
Manifest reference env-billing-dispute v4.2
Agent identity agent://billing/dispute-resolver
Product owner Billing Operations
Identity owner Platform Identity
Accountable identity owner Named individual, reviewed quarterly

Part A · Principals

Role Who or what Note
Business subject Customer 4831, transaction T17 Affected party
Root initiator Authenticated customer dispute, case 9912 Begins the chain; does not authorize
Proximate initiator Dispute intake service Directly triggered this run
Technical actor Billing dispute agent, v3 Workload identity, short-lived credential
Authority owner Billing Operations Owns refund authority
Authorization basis Refund policy v11 Evaluated by policy service
Approver Billing Operations lead, live IdP roster Exceptions only
Approver's authority basis Finance DoA v4, ₹10,000 ceiling Verified at approval time
Enforcement point Payment gateway, CRM, mail gateway Where constraints are applied

Part B · Action grants

Action Authority model Resource binding Ceiling Lifetime Enforced at
Read assigned case Own-principal Case ID Read-only Run CRM object policy
Read billing events Own-principal Customer + case Read-only Run CRM object policy
Read dispute history Own-principal Customer + case Read-only Run CRM object policy
Read KB corpus Own-principal Published documents only Read-only Run Retrieval service
Issue refund Policy-authorized Transaction + case ₹2,000 5 min Payment gateway
Exception refund Approval-derived Exact transaction + amount ₹8,400 Single use Payment gateway
Send customer email Policy-authorized Verified address One message 5 min Mail gateway
Write audit record Own-principal Append-only Run Evidence store
Read stored payment instrument None No grant exists
Modify subscription None No grant exists
Suppress collections None No grant exists

Standing authority. Authenticate and read assigned case only. All write authority is granted just-in-time and expires with the action. All standing grants carry a 90-day renewal date.

Read–egress pairing. All read grants above are approved on the condition that manifest v4.2 maintains default-deny egress with four required hosts. A change to the egress policy requires re-review of this section.

Part C · Evidence chain

Evidence System of record
Initiating dispute Case management
Root and proximate initiator Case management + run attestation
Policy decision and inputs Authorization service
Agent, model, manifest versions Run attestation (Episode 02)
Approver identity and authority basis Approval service
Approved action intent Approval service
Refund outcome Payment ledger
Linkage across all of the above Correlation ID, present in every record

Approval binding. Approval binds to the action intent — executor, resource, operation, amount, validity window, single-use identifier, and the evidence snapshot the reviewer saw. A single-use execution grant is derived from that intent. Approval never authorizes a reusable credential.

Segregation. The approver may not be the case owner.

Part D · Failure behavior and refusal cost

Condition Response Work goes to
Identity not authenticated Refuse to start Platform incident
Authority source indeterminate Refuse to start Billing Operations
Grant exceeds manifest reach Refuse to start Engineering — defect
No authorizing basis for C3 Degrade to C2, proposal only Proposal queue
Approval expired or parameter mismatch Refuse action, escalate Named approver
Approver ceiling exceeded Refuse, route upward Finance
Evidence sink unavailable No consequential write Billing Operations
Outcome uncertain after submission Reconcile before any retry Reconciliation
Emergency stop required Revoke per run, version, or identity within 60 seconds Incident response

Part E · Identity lifecycle

Event Decision
Creation Approved by Platform Identity against an approved matrix
Accountable owner Named individual; reassignment required on role change
Grant review Quarterly; unrenewed standing grants lapse
Version retirement Identity retired when the version leaves production
Decommission trigger Service decommission ticket must include identity removal
Orphan detection Identities with no runs in 30 days are surfaced for review

Accountability statement

Any refund issued by this agent carries a correlation identifier that resolves, across tamper-evident records, to the initiating case, the root initiator, the agent run and version, the environment attestation, the policy decision or named approval and that approver's authority basis, and the payment outcome. No action is attributable only to "the automation."

If that statement cannot be made truthfully, the identity design is incomplete.

17How to run the review

Ninety minutes. This is the episode where product cannot proceed alone — whoever owns identity infrastructure must be in the room, and for section 04 you need someone from Finance or whoever owns your delegation-of-authority policy.

Minutes 0–10 · Frame it. Read the actor field opening aloud. State the goal: by the end, every consequential action has a named authority source and a reconstructible evidence path.

Minutes 10–25 · Roles. For each consequential action, who is the business subject, who initiated it, what workload acted, whose policy authorized it? Are any of these the same party by accident rather than design? Is anything modeled as user-delegated when the user never held that authority?

Minutes 25–35 · The approver. Does a human authority limit exist for this action? Where is it written? Does the agent's approval path respect it, read a live roster, and prevent self-approval? This is the segment most likely to discover something nobody knew.

Minutes 35–50 · Grants. What standing authority exists, and is any of it high-consequence? Is each write grant bound to case, resource, amount, audience, and time? Walk the read grants alongside the manifest's egress policy. Which actions have no grant at any layer, and is that list as long as it should be?

Minutes 50–60 · Enforcement. For each constraint, which enforcement point applies it? Is any constraint enforced only in the agent's reasoning or system prompt? For the mediating gateway pattern — can the agent reach the broad API directly?

Minutes 60–70 · Evidence. From a correlation ID, can you reconstruct initiator, authority basis, agent version, world configuration, approval, and outcome? Which system holds each piece? Where does the chain break?

Minutes 70–80 · Delegation and revocation. Does authority strictly narrow at each hop? Does audience narrow? What stops this run, this version, this identity — each independently, within a minute? When was that last tested?

Minutes 80–90 · Lifecycle and the confused deputy. Who owns this identity, when is it reviewed, what retires it? And: if untrusted input manipulated the agent into attempting a different action, which grant would authorize it?

Leave with: a completed action grant table, a named approver population with a verified ceiling, a refusal-cost owner per condition, three tested revocation paths, and a decommission trigger.

18Anti-patterns

19What product owns

Identity infrastructure belongs to platform teams. Eight decisions do not.

  1. Authority source. Does each action derive from organizational policy, the agent's own permissions, a named approval, or a user's delegated authority?
  2. Business subject and initiator. Who is affected, and what began the run — recorded as distinct facts, with root and proximate initiator separated.
  3. Approver authority. Whether a human limit exists for this action, and whether the agent's approval path respects it.
  4. Action grant. The exact resource, operation, ceiling, audience, and lifetime permitted — including which reads, at what scope.
  5. Evidence requirement. What must be reconstructible, and which system holds each piece.
  6. Degraded behavior. What the run may still do when authority evidence is incomplete, expressed as a consequence class.
  7. Revocation objective. What must be stoppable, at what granularity, within what time — and tested.
  8. Identity lifecycle. Who owns it, how often grants are re-justified, and what retires it.

None require identity expertise. All determine whether the system is governable.

The envelope bounds what may happen. The manifest defines the world. The matrix determines whose power is exercised inside it — and whether anyone can prove it afterward.

The line

A service account can identify the caller. It cannot, by itself, explain the action.

A request can initiate an action without authorizing it.

Approval-derived authority inherits the approver's limits. If the approver's own authority is not modeled, the approval is a rubber stamp with a name attached.

Put enough context in the credential to enforce the action. Put enough evidence in the audit trail to explain it.

The protocol can preserve delegation. Only policy can make it valid.

Revocation granularity is decided at identity design time. If the credential is shared, so is the kill switch.

20The AI PM page

Field artifact · Episode 03 · print this

Before your team provisions an identity

How to use this. The Authority Matrix is what your team produces together. This page is what you bring to the room. Block 2 is the meeting — and unlike Episodes 01 and 02, you cannot run it alone. Bring identity infrastructure, and bring whoever owns your delegation-of-authority policy.

1 · Decisions you own

Decision What you need first Who must be there
Authority source per action Whether the party recorded could have acted themselves Domain owner
Approver authority The human delegation-of-authority policy Finance or DoA owner
Action grants Resource, operation, ceiling, audience, lifetime Identity, domain owner
Read scope and egress pairing The manifest's egress lists Security, identity
Evidence requirement What an investigation will need Risk, audit
Degraded behavior What value survives at lower authority Domain owner, operations
Revocation objective What must stop, how fast, how precisely Identity, incident response
Identity lifecycle Who owns it, what retires it Identity, your own team

2 · Questions you must get answered

  1. For each action — could the party we record as authorizing it have done it themselves, with their own credentials, that day? If no, they initiated. Fix the record.
  2. Does a human authority limit already exist for this action, written down somewhere? Find it before you set the agent's ceiling.
  3. Is the approver roster live from the identity provider, or a list someone maintains? Static lists outlive the people on them.
  4. Can the approver approve their own escalation?
  5. What does the agent hold standing, and is any of it high-consequence?
  6. Which reads are standing, and what is the egress policy sitting next to them? Ask both in the same breath.
  7. Which constraints are enforced in the agent's reasoning rather than at a gateway? Those are preferences.
  8. What stops this run, this version, this identity — separately, in sixty seconds? When was that last tested?
  9. Hand someone a correlation ID: can they reconstruct the action without asking a human?
  10. When this agent is retired, what removes its ability to authenticate, and who confirms it?

3 · Assumptions to test

4 · Conversations to schedule

With About When
Finance / DoA owner Whether a human approval limit exists for this action Before the exception ceiling is set
Identity platform Grant granularity your infrastructure can actually issue Before the matrix is drafted
Security Read grants alongside the egress policy Same meeting, not two
Domain owner Which actions must have no grant at any layer Before the first C3 action
Incident response Three revocation paths, and drilling them Before pilot
Audit or risk What must be reconstructible, and for how long Before GA

5 · Signals this work was skipped

What you leave with

A completed grant table. A named approver population with a verified ceiling and its source document. A refusal-cost owner for every condition. Three revocation paths with drill dates. A decommission trigger.

One line to carry out: a service account can identify the caller. It cannot explain the action.

Next · Contain the Compromise

Three artifacts now govern the run. The envelope bounds consequence. The manifest constructs the world. The matrix establishes authority and evidence.

Each assumes the system behaves roughly as designed — that the agent follows instructions, the harness enforces policy, the sandbox holds, and the grant is used as issued.

Episode 04 removes that assumption.

Assume untrusted input has redirected the agent. Assume the sandbox has been escaped. Assume a grant has leaked while still valid. Assume the tool contract has been bypassed.

What still holds?

That question separates a control from a hope. A ceiling enforced at the payment gateway holds when the agent is compromised. The same ceiling in a system prompt does not. A case-bound grant holds when the agent is manipulated. A broad bearer token does not.

Episode 04 works backward from compromise to identify which controls survive it, and rebuilds the boundary so that a failure at any single layer does not become an organizational incident.

Episodes 01 through 03 design for a system that works. Episode 04 designs for the day it does not.

You now hold
Artifact 03 The Authority Matrix — principals, action grants, evidence chain, and failure behavior for one agent workload.
The next question
If execution is compromised, which of these controls still holds?
Continue
Environment 04 Contain the Compromise — artifact: the Containment Model.
Back one step
Environment 02 Construct the Task World — the world this actor enters.
Sources
  1. NIST SP 800-207 — Zero Trust Architecture: least-privilege, per-request access decisions, and the separation of policy engine, policy administrator, and policy enforcement point.
    nvlpubs.nist.gov — NIST.SP.800-207.pdf
    csrc.nist.gov/pubs/sp/800/207/final
  2. Just-in-time access — time-limited, task-specific permissions issued on demand and withdrawn on completion. Cited as an illustration of the pattern, not as a normative standard.
    paloaltonetworks.in — what is just-in-time access
  3. SPIFFE — concepts: the SPIFFE ID and the SVID as the workload's authentication material, issued short-lived and rotated frequently. Actual lifetimes are operator-configured, not fixed by the specification.
    spiffe.io/docs/latest/spiffe/concepts
  4. SPIFFE — working with SVIDs: the infrastructure generates short-lived keys and certificates on the workload's behalf rather than requiring it to hold a long-term secret.
    spiffe.io/docs/latest/deploying/svids
  5. Microsoft Entra Agent ID — agent identity as a first-class principal in the directory, with governance and access controls extended to agents.
    learn.microsoft.com — what is Microsoft Entra Agent ID
    learn.microsoft.com — overview of agent identities
  6. Microsoft Entra — agent identity blueprints: credentials are configured on the blueprint, which acquires tokens on behalf of agent identities; credentials do not reside on the agent identity itself.
    learn.microsoft.com — agent identity blueprints
  7. Microsoft Entra — Conditional Access for agent identities, and recommended policies for autonomous agents. Several capabilities are in preview and thinner than the equivalent controls for human identities; treat availability as evolving rather than at parity.
    learn.microsoft.com — Conditional Access for agents
    learn.microsoft.com — recommended policies for autonomous agents
  8. RFC 8693 — OAuth 2.0 Token Exchange: the act claim and the nesting of prior actors; the requirement that access control consider only top-level claims and the current actor; and may_act as the pre-authorization primitive at issuance.
    datatracker.ietf.org/doc/html/rfc8693
    rfc-editor.org/info/rfc8693
  9. AWS — the confused deputy problem: a less-privileged party coercing a more-privileged one, and the external ID bound to the calling context as mitigation. Cited as an illustration of context-bound authority, not as an agent control.
    docs.aws.amazon.com — the confused deputy problem
  10. Environment Engineering 01 — the Consequence Envelope: consequence classes, the irreversible step, and the run budget.
    /writing/environment/e01-begin-with-consequence
  11. Environment Engineering 02 — the Environment Manifest: run attestation, egress lists, and degraded mode as a lower consequence class. Further reading. Secondary explainers — useful after the primary sources above, not load-bearing for anything argued here. Auth0 on the many faces of OAuth token exchange, a readable narrative separating delegation from impersonation. Descope's worked walkthrough of act and may_act. Compass Security's independent analysis of the Entra blueprint-to-agent exchange, with specifics worth verifying against Microsoft Learn.
    /writing/environment/e02-construct-the-task-world
Further reading

Secondary explainers. Useful after the primary sources above have grounded the claim; not load-bearing for anything argued here.

On coined terms. Authority Matrix, the five authority models, zero standing high-consequence authority, enforcement context versus evidence context, the correlation-ID evidence chain, the accountability statement, and audience attenuation as a multi-agent invariant are framings coined for this series, not established industry terms. Every non-original technical claim is sourced above.