
Reserve an AI Agent’s Budget Before It Spends
A field guide to atomic reservations, concurrent spend, approval binding, reconciliation, and hard economic limits for tool-using AI agents.
Read MoreZharfAI Team

An invoice agent reads a supplier email, extracts new bank details, recommends release, calls the payment tool, and later marks the entry reconciled. Each step may look reasonable. Together they give one decision path custody of the evidence, approval case, asset, and proof of a correct outcome.
The reader decision is: which steps may share one control domain, and which responsibilities require independent authorization and verification? The answer depends on consequence, reversibility, incentives, evidence, and how one compromised component could influence another.
The rule is: do not let one effective actor create, approve, execute, and certify a consequential request. “Effective actor” includes the human account, agent, model context, service identity, credential, runtime, policy administrator, and evidence source—not merely its workflow label.
Teams often draw four boxes—prepare, review, execute, reconcile—and assume the boxes create independence. They do not if all four run under one service account, share one writable memory, trust the same model-generated summary, or can alter the same audit record. Four prompts to one agent are four stages of one authority path.
Independence has at least five dimensions:
| Dimension | Independent when | False separation |
|---|---|---|
| Principal | different accountable identities hold incompatible roles | one user or agent switches role labels |
| Capability | credentials and downstream policy prevent role crossing | prompts ask a broadly privileged tool not to cross |
| State | one role cannot rewrite another role's input or receipt | all stages share mutable memory or a spreadsheet |
| Evidence | the checker can query authoritative facts independently | the checker sees only the proposer's narrative |
| Failure domain | one injection, bug, vendor outage, or administrator cannot control every gate | several agents use the same model, runtime, connectors, and admin |
Not every task needs different vendors or two humans. The control must survive the failure it is meant to contain. Two personas inside one injected context do not contain prompt injection. Two services controlled by one person may not contain insider abuse. For accidental model error, a deterministic validator over authoritative data can challenge more effectively than a second model opinion.
NIST SP 800-53 Revision 5 AC-5 calls for identifying duties that require separation and defining supporting access authorizations. The catalog also covers dual authorization for selected privileged actions and protection of audit information from the operators it records. These are system controls, not prompt instructions.
The 2025 GAO Green Book, effective for fiscal year 2026 in its federal scope, separates authority, custody, and accounting. It also says compensating controls are needed when full segregation is impractical, while segregation cannot eliminate collusion.
The April 2026 interagency model-risk management guidance describes effective challenge by objective experts with independence, competence, influence, and authority. It explicitly excludes generative and agentic AI, so it is not an agent regulation. Its bounded lesson is to judge independence through incentives, conflicts, expertise, and outcomes—not labels.
The voluntary NIST AI RMF Core calls for accountability, differentiated human–AI roles, oversight, and proportionate risk management. OWASP Excessive Agency identifies excessive functionality, permissions, and autonomy as root causes and recommends downstream authorization.
GitHub's protected-branch guidance can require approval of the latest reviewable push by someone other than its pusher and invalidate approval when the diff changes. RFC 9396 defines structured OAuth authorization details for actions, locations, identifiers, and transaction fields.
The role graph, approval envelope, worked example, and metrics below are ZharfAI analysis derived from those sources. They are a vendor-neutral engineering pattern, not legal, audit, banking, or investment advice.
Start with the protected outcome, not the current job titles. Write the entire transaction from evidence acquisition to final verification. Then mark combinations that would let one actor both cause a harmful state and conceal, approve, or misdescribe it.
A practical decomposition is:
Not every pair conflicts. One agent may classify and validate reversible, sampled support tickets. But material processes should presume separation between:
This extends the human approval boundary. That guide asks where human judgment belongs. Separation of duties asks whether the person or mechanism at that boundary can actually challenge the request without sharing the requester's incentives, authority, or blind spots.
Represent roles as nodes and incompatible combinations as edges. Attach enforcement to every edge:
| Conflict edge | Minimum enforcement | Stronger form for high consequence |
|---|---|---|
| propose → approve | approver identity differs; complete evidence packet | separate reporting line, qualified reviewer, independent source query |
| approve → execute | executor accepts only a current approval envelope | separate service identity and credential; dual authorization |
| execute → reconcile | reconciler reads provider/system-of-record outcome | separate data path, delayed settlement evidence, exception owner |
| administer → approve exception | policy change and waiver logged separately | code-owner review, time delay, two-person break-glass |
| produce evidence → assess evidence | immutable source references and hashes | independently collected sample or third-party record |
Role names are fragile: a person may hold two accounts, two agents may inherit one user token, and a separate approval service may remain writable by the workflow administrator. Record the principal, workload identity, credential issuer, permissions, runtime, model provider, state store, administrative owner, and incentive owner.
The agent identity and authorization guide provides the companion identity model. A distinct agent label becomes useful only when downstream services can verify it and policy can deny incompatible actions.
“Approved” is unsafe when it floats free of what was reviewed. Create a canonical intent object before review and calculate an immutable digest over every field that could change consequence:
{
"intent_id": "payable-4821-v3",
"action": "release_payment",
"resource": "invoice-4821",
"counterparty_id": "supplier-771",
"destination_id": "bank-account-fingerprint-9c2e",
"amount": {"currency": "EUR", "value": "123.50"},
"evidence_refs": ["invoice:sha256:...", "po:sha256:..."],
"policy_version": "payables-18",
"expires_at": "2026-08-28T10:15:00Z",
"intent_digest": "sha256:..."
}
The approval record should bind the approver, role, decision, reason, time, policy version, and expiry to that digest. The executor recomputes the digest and rejects any mismatch, expired approval, reused approval, conflicting role assignment, or missing prerequisite. Changing the amount, destination, attachment, recipient, tool argument, or policy after approval creates a new intent and requires a new decision.
RFC 9396 is a useful precedent for making authorization specific enough to show an approver the action, location, identifier, amount, currency, and counterparty. It does not by itself provide separation of duties, a signed approval, business-policy semantics, or replay prevention; those remain system responsibilities.
An approver cannot challenge what they cannot see. The review packet needs original source references, normalized facts, discrepancies, policy, proposed effect, prior related actions, and post-approval behavior. Treat model explanations as claims, not source evidence.
For material checks, let the validator or reconciler retrieve at least the decisive facts independently. Examples include resolving supplier identity from the maintained vendor registry rather than the email, reading the current access state from the resource server rather than the agent transcript, or querying settlement status from the payment provider rather than trusting a tool's generated success sentence.
The checker also needs procedural power:
An independent person with no useful evidence is ceremony. A strong validator with no ability to stop execution is observability. Effective challenge requires both information and intervention.
The control plane, not the conversational layer, should decide which role may invoke which capability. Use separate service identities and narrowly scoped credentials for proposal, approval, execution, reconciliation, and administration where the conflict graph requires it.
An execution adapter should accept a consequential request only after deterministic checks confirm:
The model may draft the intent and explain why it thinks the action is appropriate. It must not choose its own approver, mint approval, expand the credential, rewrite the evidence, mark its execution reconciled, or disable the control that rejected it. The tool-permission security guide explains why tool enforcement must remain outside model instructions.
Consider a company paying an ordinary approved invoice when a supplier email also requests a new bank account. The amounts below are illustrative; this is an architecture example, not a claim about a ZharfAI deployment.
First, the intake agent proposes rather than changes. It extracts the invoice, purchase-order reference, supplier, destination, and email provenance. A destination mismatch creates an exception. Its credential can draft a payable, but cannot edit vendor master data or release funds.
Second, a deterministic validator rebuilds the case. It checks arithmetic, duplicates, purchase-order status, limits, and destination fingerprint against the current vendor registry. It records missing and failed checks; model confidence is not approval.
Third, an independent supplier-verification role resolves the destination through a previously registered contact channel, not details in the request. That update receives its own identity, evidence, and approval rather than hiding inside invoice approval.
Fourth, the payable approver sees a bound intent: sources, verification, conflicts, amount, currency, destination fingerprint, policy, and expiry. Approval binds to its digest; any edit invalidates it.
Fifth, the payment adapter executes once. Its payment-only identity consumes the approval, writes an idempotency key, and stores the provider receipt. A timeout leaves the intent indeterminate, preventing a blind retry.
Finally, reconciliation uses external evidence. A separate process compares the provider statement, receipt, subledger, and general ledger. It opens exceptions but cannot rewrite the payment event. The audit-evidence architecture connects records to a defined assertion without treating logs alone as proof.
Six people are not the goal; low-risk steps can be automated. The goal is that no compromised input, model context, credential, administrator, or mutable record can originate the bank change, approve it, release money, and erase the discrepancy.
Full separation has costs: delay, specialist capacity, handoff errors, fragmented context, and more systems to secure. Apply it according to the protected outcome and credible failure.
| Situation | Proportionate pattern |
|---|---|
| reversible internal classification | automated proposal and validation; sampled independent outcome review |
| bounded record update with authoritative checks | agent proposes; deterministic policy executes within tight limits; independent exception sampling |
| external communication with material commitment | separate proposer and qualified approver; destination-bound release control |
| money, access, deletion, production change, or rights impact | distinct execution capability; transaction-bound approval; independent reconciliation |
| catastrophic or abuse-sensitive action | dual authorization, separate administrative control, time limit, and rehearsed emergency procedure |
Small teams may lack people for complete organizational separation. Two logins do not make one person independent. Consider lower limits, delayed settlement, third-party receipts, daily owner review, randomized external sampling, restricted destinations, affected-party notification, role rotation, or a service provider supplying independent evidence.
Compensation must target the same risk and be testable. A monthly dashboard does not compensate for one administrator who can instantly change policy, execute a transfer, and delete the log. Document the residual risk, owner, review date, and trigger for stronger separation.
| Appearance of control | Hidden failure | Better design |
|---|---|---|
| two AI agents review each other | same model, context, tools, memory, and injected source | independent evidence path plus deterministic or human challenge |
| a human clicks approve | packet hides sources and changes after review | source-linked packet and digest-bound approval |
| executor is a separate service | proposer can mint its token or edit its policy | separate issuer, admin role, and downstream authorization |
| reconciliation job reports success | it reads the executor's own event table | compare with authoritative external settlement or state |
| two people approve | both rely on the same misleading summary or can collude | independent source access, rotation, monitoring, and consequence review |
| audit log is immutable | population is incomplete or failures lack identifiers | assign intent before processing and reconcile population totals |
| break-glass is documented | same operator activates, uses, and closes it | time-bound access, second-party notification, retrospective independent review |
Correlated failure matters as much as formal role conflict. Two validators using the same model endpoint can reproduce the same systematic error. Two services on one writable database can share one compromise. One cloud administrator may be able to impersonate every workload. Record these common-control points and decide whether the residual risk is acceptable.
Count real populations, not policy documents:
Do not reward approvers for throughput alone or validators for never finding a problem. Track whether challenge changes decisions, narrows permissions, discovers missing evidence, and catches outcome discrepancies without making safe work impossible.
Before enabling a consequential AI action, answer:
The final question is not “How many approvers are in the workflow?” It is: after one actor is wrong, compromised, hurried, or self-interested, which independent control can still see the truth and stop or expose the consequence? If there is no concrete answer, the duties are not separated.

A field guide to atomic reservations, concurrent spend, approval binding, reconciliation, and hard economic limits for tool-using AI agents.
Read More
A source-checked build guide for six ledger-owning agents, one routing desk, evidence-bound handoffs, and human control over consequential actions.
Read More
A field guide to closing intake, authority, dependencies, work, evidence, and data so an AI service can be replaced or retired with a verifiable end state.
Read MoreIf this note maps to a real system in your organisation, start with the services page or a shipped case study.