Best Practices for Building Agents Recap
Arthur

Agent-to-Agent Trust and Delegation Chains

August 6, 20266 min read

Most writing about agent identity secures a single agent: give it a verifiable identity, scope its permissions, authenticate its calls. That model holds right up until the agent stops working alone. The moment one agent hands a task to another, and that one hands off again, you no longer have an agent with an identity. You have a chain, and the chain has properties no single link does.

Delegation is how multi-agent systems get work done. A planner routes to a specialist, the specialist calls a tool agent, the tool agent queries a data agent. Each handoff is useful. Each handoff also passes along trust and authority, and by the end of the chain an agent is often acting on borrowed permissions it never earned, on behalf of a request it never verified. That is the surface this post is about.

Why a chain is not just more agents

Securing five agents individually does not secure the system they form when they delegate to each other. The individual controls miss the thing that only exists in the relationship between them.

When Agent A delegates to Agent B, B does something on A's behalf. It inherits some of A's context, sometimes some of A's authority, and it trusts that A's request is legitimate because A is a known internal agent. B then delegates to C on the same basis. By the time C acts, it is three steps removed from the original intent, executing on a trust assumption that was never re-checked at any hop. Nobody in the chain verified that the request C received still reflects what the user or system actually asked for.

The single-agent security model has no concept of this. It authenticates each agent and scopes each agent's permissions, but it treats every incoming request from a known agent as trustworthy. In a delegation chain, "known internal agent" is exactly the trust an attacker wants to ride.

Three ways delegation chains fail

Delegation introduces at least three distinct failure modes, and they compound as the chain gets longer.

Authority dilution. Each hop tends to pass along the broadest permissions available rather than the narrowest ones the task needs. Agent A has wide access. It delegates to B without narrowing scope, B does the same to C, and now a narrow task at the end of the chain is executing with the full authority of the agent at the top. The permissions never tightened as the task got more specific, so the blast radius stays maximal all the way down.

Context corruption. What gets passed between agents is context, and context can be poisoned. If a malicious instruction enters early, through a user input or a poisoned document A retrieved, it rides the handoffs downstream as if it were legitimate intent. Each agent treats the corrupted context as trusted because it came from another internal agent, not from an obvious attacker.

Blast-radius propagation. A single compromised or misbehaving link poisons everything downstream of it. Because trust flows in one direction and is rarely re-verified, one bad agent in the middle of a chain can steer every agent below it. The chain amplifies a single compromise instead of containing it.

The through-line: trust compounds downward, and nothing in a naive delegation setup forces it to be re-earned at each step.

Re-verify at every hop, do not trust by position

The core defense is to stop treating "the request came from a known internal agent" as sufficient reason to act. Position in the chain is not authorization.

Every handoff should re-establish, not assume, three things: who the request ultimately serves, what the receiving agent is actually allowed to do, and whether the request still matches legitimate intent. A guardrail that runs in the hot path before every model call is the natural place to enforce this at each hop. It can screen the inbound context for injected instructions, validate that the requested action is in scope for the receiving agent, and reject handoffs that carry authority the task does not require. The point is to make each link defend itself rather than trust the link above it.

Scope also has to tighten as the chain descends. An agent receiving a delegated task should operate with the narrowest permissions that task needs, not the full authority of whoever delegated to it. Least privilege applied per-hop is what stops authority dilution from turning a specialist agent into a general-purpose one with the top agent's access.

Govern the chain, not just the agents

A governance review that inventories an agent's tools, sub-agents, and data sources is built for a single agent's risk surface. A delegation chain needs the whole graph as the unit of review, because the risk lives in the edges between agents as much as the agents themselves.

Governance teams assessing a multi-agent system need to see the full delegation graph: which agents can hand off to which, what authority travels along each edge, and where the chain touches sensitive tools or data. An agent that looks safe in isolation can be dangerous as a link, if it can delegate to something with broad access or accept context from an untrusted source. Reviewing agents one at a time misses exactly the relationships that create the risk. The delegation topology, and a named owner accountable for the chain as a whole, belong in the review.

Trace the whole chain as one execution

When something goes wrong three hops deep, you need to reconstruct the entire delegation path, not just the agent that produced the bad output. That requires instrumenting every handoff, tool call, and decision point across the chain so the full path is captured as a connected trace.

Distributed tracing is what makes a delegation chain debuggable. When the trace follows the request from the top agent through every hop, you can see where intent diverged, which agent introduced the corrupted context, and which handoff passed along authority it should not have. Without that connected view, a failure at the end of the chain looks like one misbehaving agent, and you have no way to walk back to the link that actually caused it. Capturing each handoff with its source, its inherited context, and its scope is what turns a black-box chain into something you can defend and audit.

Watch for delegation gone wrong in production

Prevention leaks, so you also need to catch bad delegation after it happens. Running binary pass/fail checks against production traffic surfaces the behavioral signatures of a poisoned chain: an agent acting outside its intended scope, executing on instructions no user gave, or handling data it should never have received through a handoff.

The signal is behavioral, and it shows up across the chain rather than in one agent. A downstream agent suddenly taking actions that do not match the top-level request, or an agent accepting a delegated task that falls outside its defined role, is a symptom worth investigating before it propagates. Monitoring the chain's behavior continuously catches the emerging pattern the same way you would catch any production failure mode, before it compounds through everything downstream.

Five practices for securing delegation chains

  1. Re-verify at every hop. Never treat a request as trustworthy just because it came from a known internal agent. Re-establish intent, scope, and authorization at each handoff.
  2. Tighten scope as the chain descends. A delegated task should run with the narrowest permissions it needs, not the inherited authority of the agent that delegated it. Apply least privilege per-hop.
  3. Screen inter-agent context. Handoff context is untrusted input. Check it for injected instructions before the receiving agent acts on it.
  4. Govern the graph, not the nodes. Review the full delegation topology, the authority on each edge, and a named owner for the chain, not just each agent in isolation.
  5. Trace and monitor the whole chain. Capture every handoff as a connected trace, and watch production behavior for agents acting outside their scope or on instructions no one gave.

TLDR

  • Single-agent security authenticates and scopes each agent, but treats requests from known internal agents as trustworthy. Delegation chains turn that trust into an attack surface.
  • Three failure modes compound as chains grow: authority dilution (broad permissions pass downstream), context corruption (poisoned intent rides the handoffs), and blast-radius propagation (one bad link poisons everything below it).
  • Defend by re-verifying at every hop, tightening scope as the chain descends, and screening inter-agent context instead of trusting it by position.
  • Govern the full delegation graph, not individual agents, and trace the whole chain as one connected execution so a failure three hops deep is debuggable.
  • Monitor production for the behavioral signatures of a poisoned chain: agents acting outside their scope or on instructions no user gave.

If you're building multi-agent systems and want to see how these controls work across a delegation chain, book a demo with an AI expert.

SHARE