Agent-to-agent delegation needs an explicit operating review: the child receives a bounded task, not a copy of every upstream credential and permission.
A portfolio AI agent is asked to compare unresolved gate alerts across three self-storage facilities. It delegates the maintenance analysis to a specialist agent. The specialist discovers an open vendor-scheduling tool and a portfolio service credential in its environment. It could book a technician. The parent wanted analysis, however, not dispatch.
This is where multi-agent architecture can turn a sensible division of labor into an authority failure. The task moved. The authority did not necessarily move with it.
An agent can receive enough context to investigate a question without receiving permission to change a work order, contact a vendor, alter access, message a customer, or expose data from another facility. Treating delegation as an automatic transfer of credentials, approvals, and business authority collapses distinctions that operators depend on.
The safer rule is direct: delegate the task through a narrower authority envelope, then require a return receipt that proves what the child agent did, did not do, and still needs.
A task and an authorization are different objects
Multi-agent systems usually make task movement visible. A parent task creates a child task; the child reports a status; an artifact comes back. That is useful orchestration. It is not enough governance.
The A2A Protocol specification, for example, defines a task as a stateful unit of work with a unique identifier and an artifact as an output generated from a task.[^1] It also defines an interrupted TASK_STATE_AUTH_REQUIRED state when authentication is needed to continue.[^2] Those mechanics give architects a useful vocabulary. They do not decide whether a particular self-storage action is authorized.
An operator still needs separate answers to five questions:
- Who initiated the parent task?
- Which agent is performing this child task?
- What data may the child inspect?
- What operations may it attempt?
- What must return to a human, governing system, or parent agent before work can continue?
If those answers live only in natural-language instructions, they are too easy to broaden, lose, or reinterpret. Put them in a machine-enforced delegation record.
Build a delegation envelope, not a copied session
The delegation envelope should be a first-class control object. It binds one child task to one purpose, one resource boundary, one time window, and one permitted result.
At minimum, record:
- parent task, child task, and context identifiers;
- initiating subject, parent actor, and child-agent identities;
- exact portfolio, facility, account, asset, and tenant boundary;
- stated purpose and consequence class;
- source references and evidence cutoff time;
- data the child may receive and data it must not receive;
- allowed operations and prohibited operations;
- tool allowlist and exact resource scope;
- audience and destination for the result;
- authorization basis, scope, issue time, and expiration;
- maximum delegation depth;
- expected artifact and return schema;
- authorization-request, failure, and handback conditions; and
- the correction or revocation reference.
The envelope should be evaluated by infrastructure before the child runs and again before each consequential tool call. A prompt that says “read only” is not a permission boundary if the child still holds a credential that can write.
OWASP’s current AI security guidance applies the same principle to oversight: risk-tier agent actions, place approval checkpoints in infrastructure rather than model instructions, and bind high-risk approval signals to the specific parameters and expiration.[^3] That guidance is not a self-storage standard. Its architectural value is that the agent cannot talk its way around a control the runtime enforces.
Attenuate authority instead of cloning it
The child should receive the least authority needed to produce the expected artifact. Do not clone the parent’s session, credential set, data window, or portfolio reach.
For a gate-alert comparison, the child may need:
- three stable facility IDs;
- the named gate asset at each property;
- time-bounded alert summaries;
- current work-order status; and
- an approved taxonomy for comparing unresolved conditions.
It may not need tenant names, payment history, unit contents, administrator credentials, customer-message tools, or authority to schedule service. Keeping those fields out of context reduces both exposure and semantic confusion. The child cannot accidentally use a detail it never received.
OAuth token exchange offers a relevant implementation analogy. RFC 8693 distinguishes a subject token from an actor token and supports audience and target-resource parameters.[^4] An authorization server can reject an invalid subject or actor token or a target it will not serve. That can help issue a narrower, audience-bound credential for a downstream service.
But a token is not the whole operating decision. RFC 8693 does not determine whether a maintenance agent should contact a gate vendor, whether an approval is still current, or whether a facility manager may authorize the expense. The application must bind technical scope to the operator’s policy and retain the actor chain.
Make “authorization required” a valid result
A child agent will sometimes discover that the next useful step sits outside its envelope. The correct result is not improvisation. It is an explicit authorization request.
The request should state:
- the blocked operation;
- the target resource and facility;
- why it appears necessary;
- the evidence supporting the request;
- the exact additional scope sought;
- the consequence and reversibility class;
- the qualified decision owner;
- what will happen if the request is denied or expires; and
- whether any side effect has already occurred.
The A2A specification’s in-task authorization pattern is helpful here. It permits an agent to interrupt a task, explain the required authorization, and let the client negotiate, correct, reject, or fulfill the request.[^2] It also warns that passing credentials through chains of agents can expose those credentials and recommends binding credentials to the agent that originated the request.
For an operator, the important behavior is the stop. The child returns authorization_required; the parent does not silently substitute a broader credential; and the authorization owner receives a bounded question instead of an open-ended request to “let the agent finish.”
A returned artifact is not proof of an operational effect
Suppose the child returns a comparison table with three gate-alert cases. The artifact may be complete even though no work order changed and no vendor was contacted. That distinction should remain visible.
The parent should validate:
- child-task identity and terminal state;
- artifact type and schema version;
- artifact hash and storage reference;
- source references and evidence cutoff;
- child-agent and model/build identity;
- tools called and resources addressed;
- authorization requests or rejected calls;
- provider receipts, if any;
- governing readbacks, if any; and
- unresolved limitations.
Then classify the return. Useful dispositions include analysis_accepted, authorization_required, rejected_scope, failed_no_effect, side_effect_unverified, and reconciliation_required.
Do not let completed carry more meaning than it has. It can mean the child finished its assigned analysis. It does not prove the facility condition, vendor acceptance, customer notification, safe operation, or a change in the governing system.
Preserve the actor chain without forwarding the whole conversation
Auditability does not require copying every parent message and every sensitive record into the child context. It requires a controlled chain of references.
The parent should retain the initiating subject, parent actor, authorizer, delegation ID, child actor, artifact identity, and return disposition. The child should receive only the references and claims needed for its job. Sensitive source records can remain behind approved retrieval interfaces that recheck facility, tenant, audience, and purpose on every call.
NIST SP 800-53 Revision 5.1 is a broad, customizable catalog of security and privacy controls, not an agent protocol. Its least-privilege, access-control, and accountability concepts are still useful design constraints for processes acting on behalf of users.[^5] The portfolio implementation has to translate those concepts into exact facilities, actions, data classes, and approval paths.
This approach also helps with correction. If a source record changes, the operator can identify which child artifacts depended on it without searching an undifferentiated transcript. The correction link can invalidate a pending artifact, trigger re-analysis, or warn a reviewer that the evidence cutoff is no longer current.
Limit delegation depth and lifetime
An agent chain should not expand indefinitely. Every delegation adds another place where context, policy, credentials, and state can drift.
Set a maximum depth and require each child to create a still-narrower envelope before it delegates again. The grandchild must not inherit the union of every upstream permission. It should receive the intersection of:
- the original authorized purpose;
- the parent’s remaining authority;
- the new subtask’s minimum need;
- the target service’s accepted scope; and
- the current policy at call time.
Add an expiration short enough to match the work. Recheck authorization if the facility, source, policy, actor, model, tool contract, requested operation, or consequence class changes. Revocation should stop new calls and mark unfinished child work for reconciliation. Do not assume that canceling a parent task reversed a side effect a child may already have produced.
A fictional portfolio example
The following scenario and all names, records, identifiers, times, and results are fictional teaching material.
At Cinder Vale Storage Group, a portfolio coordination agent receives parent task CV-P-104: compare unresolved gate alerts at CV-011, CV-024, and CV-037 before the regional maintenance review.
It creates child task CV-C-104A for a maintenance-analysis agent. The delegation envelope permits read-only retrieval of the three facility IDs, named gate assets, alert summaries from the prior 24 hours, and governing work-order states. It prohibits customer data, credential material, access changes, vendor contact, alert-rule changes, and work-order writes. The expected artifact is a structured comparison with source references and unresolved conditions.
The child finds that CV-024 has a repeated controller-disconnect alert and an open work order. It also detects an available vendor-scheduling tool. Because scheduling is outside the envelope, it returns authorization_required with the facility, asset, evidence references, proposed operation, requested scope, qualified owner, and expiration. It does not call the vendor.
For CV-011 and CV-037, it completes the read-only comparison and returns artifact CV-A-104A, its SHA-256 hash, the evidence cutoff, two read-only tool receipts, and side_effect_claim=none. The parent verifies the schema and references, then marks the artifact analysis_accepted. The separate scheduling question remains unresolved.
A second proposed child task is rejected before execution because it requests a portfolio administrator credential and full customer histories. Those inputs are unnecessary for the stated purpose. The rejected request remains in the delegation register so the design team can correct the planner.
Nothing in the scenario establishes a real facility event, system capability, vendor interaction, deployment, performance result, or business outcome.
Use the receipt as an operating test
The accompanying Agent Delegation and Return Receipt turns the architecture into a reviewable record. The template and fictional example force the team to show both sides of the exchange: what the parent granted and what the child returned.
Before release, test at least these cases:
- The child attempts a tool outside the allowlist.
- The child asks for a different facility.
- The evidence cutoff expires during execution.
- A source correction arrives before return.
- A credential is technically valid but has the wrong audience.
- The child requests authorization for a consequential action.
- The parent is canceled after a child side effect.
- The child returns an artifact with an unknown schema.
- A grandchild would exceed maximum delegation depth.
- The child reports completion without a governing readback.
The expected outcome is not that every task completes. It is that the system refuses unsupported authority, records the reason, and returns enough evidence for the next legitimate decision.
Multi-agent architecture should make specialization safer, not make accountability harder to find. When work passes from one agent to another, move only the purpose, evidence, data, and authority that the child actually needs. Everything else stays behind the boundary.
The return receipt closes the loop: this was the task, this was the authority, this was the actor, this was the artifact, these were the side effects, and this is what remains unresolved.
Editorial disclosure and claim boundary: This article was prepared with AI-assisted research, drafting, and editorial QA under Jared Mastroianni’s byline. It proposes a product-neutral architecture and reports no customer, facility, agent, system, vendor, deployment, capability, certification, performance, revenue, occupancy, safety, legal-compliance, award, coverage, or recognition result. The Cinder Vale scenario and all accompanying data are explicitly fictional. Operators must apply their own current policies, access controls, privacy and security review, contracts, system documentation, qualified technical judgment, and applicable law.
[^1]: A2A Protocol, Specification v1.0.0, core concepts for tasks and artifacts; accessed October 8, 2026.
[^2]: A2A Protocol, Specification v1.0.0, task states and in-task authorization; accessed October 8, 2026.
[^3]: OWASP AI Exchange, General Controls, least-model-privilege and human-oversight guidance; accessed October 8, 2026.
[^4]: Internet Engineering Task Force, RFC 8693: OAuth 2.0 Token Exchange, January 2020; accessed October 8, 2026.
[^5]: National Institute of Standards and Technology, SP 800-53 Rev. 5, Update 1, security and privacy control catalog; accessed October 8, 2026.
Companion operating tools
These governed companion materials are rendered accessibly because this WordPress instance does not accept the source Markdown and CSV files as media uploads. Blank templates and fictional examples are operating aids, not proof of a real facility event, deployment, customer, result or compliance state.
agent delegation and return receipt
Use this control object whenever one AI agent assigns a bounded operational subtask to another agent. It separates the child’s task from its authority, minimizes the data transferred, and makes the return state inspectable.
1. Parent delegation
Record before child execution:
- delegation, parent-task, child-task, and context IDs;
- initiating subject, parent actor, child actor, and current build identities;
- exact portfolio, facility, tenant, asset, record, and audience scope;
- stated purpose, consequence class, evidence references, and cutoff time;
- allowed and prohibited data;
- allowed and prohibited operations;
- tool allowlist and resource scope;
- authorization basis, scope, audience, issue time, expiry, and revocation reference;
- current and maximum delegation depth;
- expected artifact, schema version, and return deadline; and
- authorization-request, failure, cancellation, correction, and handback conditions.
Do not transfer a reusable secret in the receipt. Reference the controlled grant or token exchange. Enforce the boundary outside the model.
2. Child acceptance gate
Before starting, the child must answer:
- Can I bind the task to one permitted purpose and resource scope?
- Is the evidence cutoff still current enough for the decision?
- Are the allowed data and tools sufficient without prohibited data?
- Does the authorization audience match the target service?
- Am I within the delegation-depth and time limits?
- Can I return the expected artifact without creating an unapproved side effect?
If any answer is no, return rejected_scope, needs_information, or authorization_required. Do not broaden the task.
3. Authorization request
If the next useful operation exceeds the envelope, return:
- blocked operation and target;
- evidence and reason;
- exact additional scope requested;
- consequence and reversibility class;
- qualified decision owner;
- expiry and denial behavior; and
- side effects already observed, including
none.
The parent must not satisfy the request by silently lending a broader credential.
4. Child return
Return a structured receipt containing:
- child task state;
- artifact ID, type, schema, location, and SHA-256;
- evidence references and cutoff;
- tool calls attempted and their controlled receipts;
- authorization request or rejected-call references;
- claimed side effects;
- provider receipts and governing readbacks;
- unresolved conditions and limitations; and
- returning actor and time.
5. Parent reconciliation
Validate the envelope and return separately. Assign one disposition:
analysis_acceptedauthorization_requiredrejected_scopefailed_no_effectside_effect_unverifiedreconciliation_requiredsuperseded_by_correction
completed is not a sufficient disposition. It may describe the child task while the operational question remains open.
6. Minimum release tests
- A disallowed tool call is blocked by infrastructure.
- A request for another facility is denied.
- A wrong-audience credential cannot be used.
- Expired evidence forces revalidation.
- A source correction invalidates dependent pending artifacts.
authorization_requiredstops the child without losing the evidence packet.- Parent cancellation checks for child side effects.
- Unknown return schemas are quarantined.
- Maximum delegation depth is enforced.
- No governing readback means no claim of operational completion.
This is a product-neutral architecture tool, not legal advice, a provider specification, or proof that any deployed system enforces these controls.
agent delegation receipt fictional example
agent delegation receipt fictional example — record 1
- record type
- delegation_and_return
- fictional
- true
- delegation id
- CV-D-104A
- parent task id
- CV-P-104
- parent context id
- CV-CTX-104
- initiating subject id
- CV-REGIONAL-MAINTENANCE-REVIEW
- parent actor id
- coordination-agent
- parent agent build
- CV-COORD-7.2
- child task id
- CV-C-104A
- child actor id
- maintenance-analysis-agent
- child agent build
- CV-MAINT-4.6
- delegation depth
- 1
- max delegation depth
- 1
- portfolio id
- CV-PORTFOLIO
- facility ids
- CV-011|CV-024|CV-037
- tenant boundary
- no_tenant_records
- resource scope
- named_gate_assets|alert_summaries_24h|current_work_order_state
- purpose
- compare_unresolved_gate_alerts
- consequence class
- analysis_only
- source refs
- CV-SRC-ALERT-011|CV-SRC-ALERT-024|CV-SRC-ALERT-037|CV-SRC-WO-024
- evidence cutoff
- 2026-10-08T14:10:00-04:00
- allowed data
- facility_id|gate_asset_id|alert_summary|work_order_state
- prohibited data
- tenant_name|payment_history|unit_contents|credentials
- allowed operations
- read_alert_summary|read_work_order_state|produce_comparison
- prohibited operations
- write_work_order|schedule_vendor|contact_customer|change_access|change_alert_rules
- tool allowlist
- alerts.read|workorders.read
- audience
- regional_maintenance_review
- authorization basis
- CV-POL-DELEGATION-3.1
- authorization scope
- read:CV-011,CV-024,CV-037;artifact:return
- grant reference
- CV-GRANT-104A
- issued at
- 2026-10-08T14:12:00-04:00
- not before
- 2026-10-08T14:12:00-04:00
- expires at
- 2026-10-08T14:42:00-04:00
- revocation reference
- CV-REVOCATION-LEDGER
- authorization state
- current
- authorization request reason
- vendor scheduling discovered for CV-024 but not attempted
- expected artifact type
- gate_alert_comparison
- return schema version
- CV-DELEGATION-RETURN-1.0
- return deadline
- 2026-10-08T14:35:00-04:00
- handback conditions
- wrong facility|stale source|write required|unknown schema
- child task state
- completed
- child artifact id
- CV-A-104A
- child artifact sha256
- 9e77dbdbf6baea71ea0183f84c79d5c8ff938c5763522926179722826625ab3b
- child message reference
- CV-MSG-104A-RETURN
- tool calls attempted
- alerts.read CV-011,CV-024,CV-037|workorders.read CV-024
- provider receipts
- CV-RCP-READ-011|CV-RCP-READ-024|CV-RCP-READ-037|CV-RCP-WO-024
- governing readbacks
- none
- side effect claim
- none
- unresolved conditions
- CV-024 scheduling decision remains unresolved
- return disposition
- analysis_accepted
- returning actor id
- maintenance-analysis-agent
- returned at
- 2026-10-08T14:31:00-04:00
- reviewer
- regional-maintenance-reviewer
- review state
- accepted
- correction link
- none
- limitations
- Fictional teaching row; hash is a fictional example value and does not identify a real artifact or prove any facility condition
agent delegation receipt fictional example — record 2
- record type
- authorization_request
- fictional
- true
- delegation id
- CV-D-104A
- parent task id
- CV-P-104
- parent context id
- CV-CTX-104
- initiating subject id
- CV-REGIONAL-MAINTENANCE-REVIEW
- parent actor id
- coordination-agent
- parent agent build
- CV-COORD-7.2
- child task id
- CV-C-104A
- child actor id
- maintenance-analysis-agent
- child agent build
- CV-MAINT-4.6
- delegation depth
- 1
- max delegation depth
- 1
- portfolio id
- CV-PORTFOLIO
- facility ids
- CV-024
- tenant boundary
- no_tenant_records
- resource scope
- CV-024_named_gate_asset
- purpose
- request_vendor_schedule_decision
- consequence class
- consequential_external_action
- source refs
- CV-SRC-ALERT-024|CV-SRC-WO-024
- evidence cutoff
- 2026-10-08T14:10:00-04:00
- allowed data
- facility_id|gate_asset_id|alert_summary|work_order_state
- prohibited data
- tenant_name|payment_history|credentials
- allowed operations
- prepare_authorization_request
- prohibited operations
- schedule_vendor|contact_vendor|write_work_order
- tool allowlist
- none
- audience
- regional_maintenance_review
- authorization basis
- CV-POL-DELEGATION-3.1
- authorization scope
- request_only
- grant reference
- CV-GRANT-104A
- issued at
- 2026-10-08T14:12:00-04:00
- not before
- 2026-10-08T14:12:00-04:00
- expires at
- 2026-10-08T14:42:00-04:00
- revocation reference
- CV-REVOCATION-LEDGER
- authorization state
- authorization_required
- authorization request reason
- scheduling may be useful but exact vendor scope cost authority and owner are outside the envelope
- expected artifact type
- authorization_request
- return schema version
- CV-DELEGATION-RETURN-1.0
- return deadline
- 2026-10-08T14:35:00-04:00
- handback conditions
- deny|expire|qualified owner decision
- child task state
- auth_required
- child artifact id
- none
- child artifact sha256
- none
- child message reference
- CV-MSG-104A-AUTHREQ
- tool calls attempted
- no consequential tool call attempted
- provider receipts
- none
- governing readbacks
- none
- side effect claim
- none
- unresolved conditions
- vendor scheduling unresolved
- return disposition
- authorization_required
- returning actor id
- maintenance-analysis-agent
- returned at
- 2026-10-08T14:29:00-04:00
- reviewer
- regional-maintenance-reviewer
- review state
- pending
- correction link
- none
- limitations
- Fictional teaching row; an authorization request is not approval vendor contact provider acceptance or scheduled service
agent delegation receipt fictional example — record 3
- record type
- rejected_delegation
- fictional
- true
- delegation id
- CV-D-104B
- parent task id
- CV-P-104
- parent context id
- CV-CTX-104
- initiating subject id
- CV-REGIONAL-MAINTENANCE-REVIEW
- parent actor id
- coordination-agent
- parent agent build
- CV-COORD-7.2
- child task id
- CV-C-104B
- child actor id
- maintenance-analysis-agent
- child agent build
- CV-MAINT-4.6
- delegation depth
- 1
- max delegation depth
- 1
- portfolio id
- CV-PORTFOLIO
- facility ids
- portfolio_wide
- tenant boundary
- all_tenant_records
- resource scope
- portfolio_admin_and_customer_history
- purpose
- compare_unresolved_gate_alerts
- consequence class
- overbroad
- source refs
- CV-PLANNER-REQUEST-104B
- evidence cutoff
- 2026-10-08T14:11:00-04:00
- allowed data
- facility_id|gate_asset_id|alert_summary
- prohibited data
- portfolio_admin_credential|full_customer_history|payment_history
- allowed operations
- none
- prohibited operations
- all writes|all external communication
- tool allowlist
- portfolio.admin|customers.read
- audience
- unspecified
- authorization basis
- CV-POL-DELEGATION-3.1
- authorization scope
- none
- grant reference
- none
- issued at
- 2026-10-08T14:13:00-04:00
- not before
- 2026-10-08T14:13:00-04:00
- expires at
- 2026-10-08T14:13:00-04:00
- revocation reference
- CV-REVOCATION-LEDGER
- authorization state
- rejected_scope
- authorization request reason
- requested data credentials and portfolio reach exceed stated purpose
- expected artifact type
- rejection_receipt
- return schema version
- CV-DELEGATION-RETURN-1.0
- return deadline
- 2026-10-08T14:14:00-04:00
- handback conditions
- scope correction required
- child task state
- rejected
- child artifact id
- none
- child artifact sha256
- none
- child message reference
- CV-MSG-104B-REJECT
- tool calls attempted
- no tools called
- provider receipts
- none
- governing readbacks
- none
- side effect claim
- none
- unresolved conditions
- planner requires correction
- return disposition
- rejected_scope
- returning actor id
- maintenance-analysis-agent
- returned at
- 2026-10-08T14:13:30-04:00
- reviewer
- ai-governance-owner
- review state
- rejected
- correction link
- CV-CORRECTION-104B
- limitations
- Fictional teaching row; rejected before execution and does not establish a real planner credential customer dataset or security event
agent delegation receipt template
agent delegation receipt template
- record type
- fictional
- delegation id
- parent task id
- parent context id
- initiating subject id
- parent actor id
- parent agent build
- child task id
- child actor id
- child agent build
- delegation depth
- max delegation depth
- portfolio id
- facility ids
- tenant boundary
- resource scope
- purpose
- consequence class
- source refs
- evidence cutoff
- allowed data
- prohibited data
- allowed operations
- prohibited operations
- tool allowlist
- audience
- authorization basis
- authorization scope
- grant reference
- issued at
- not before
- expires at
- revocation reference
- authorization state
- authorization request reason
- expected artifact type
- return schema version
- return deadline
- handback conditions
- child task state
- child artifact id
- child artifact sha256
- child message reference
- tool calls attempted
- provider receipts
- governing readbacks
- side effect claim
- unresolved conditions
- return disposition
- returning actor id
- returned at
- reviewer
- review state
- correction link
- limitations
