AI agents

Not built

Confused deputy in a multi-agent chain

A read-only agent gets a privileged agent to act for it through a coordinator. No edge between agents exists, so Trustivan gates each action on its own credential instead.

The scenario

An engineering organisation runs several agents that talk to each other. A release-notes agent reads merged pull requests and drafts announcements. A deployment agent, trusted by the platform team, can promote builds and change feature flags. A coordinator agent routes requests between them and is reachable from the company chat. The release-notes agent has read-only access by design, and the deployment agent accepts requests from the coordinator because the coordinator is a known internal identity.

A contributor's pull request description contains text the release-notes agent treats as an instruction: ask the coordinator to enable flag billing_v2 for all customers so the notes can reference it. The release-notes agent cannot change flags, so it asks the coordinator, which asks the deployment agent, which checks that the request came from the coordinator and complies. Each hop evaluated the identity immediately before it. No hop evaluated the chain, the origin of the instruction, or whether the agent that started it had the authority to ask.

Why it happens

  • Trust is evaluated one hop at a time. Each agent authenticates its caller and stops there; nothing carries the originating principal or the purpose through the chain.
  • The confused deputy is an old problem with new actors. An agent with authority performs a task on behalf of one that has none: the classic pattern, now at machine speed and phrased in natural language.
  • Delegation has no ceiling. Authority should shrink along a delegation chain; in practice the most privileged agent in the chain sets the effective authority of every request that reaches it.
  • Instructions arrive as data. Pull-request descriptions, documents and messages are untrusted content, yet they become requests the moment an agent reads them.

How Trustivan helps

Agent-to-agent trust and chain evaluation are not built, by design: no connector reports an edge between agents. The bullets below say what is gated instead, one agent and one action at a time.

  • Model agent-to-agent relationships as identity. No connector reports which agent calls which, and the identity graph holds no agent-to-agent edge, by design. Drawing one nobody observed would be fabrication.

    Not built
  • Evaluate authority across the chain. With no agent-to-agent edge, no chain is evaluated. Each action is decided on the credential the calling agent presents, so the deployment agent is judged on its own tool entitlements.

    Not built
  • Attenuate delegated authority. Narrowing scope at each hop needs the chain, which is not built. What narrows authority today is a tool entitlement per agent and an access grant that ends within seven days.

    Not built
  • Detect delegation abuse as a pattern. Recognising requests that climb in privilege across agents needs the same chain, and nothing evaluates one, by design. A mutating call on a high-impact resource with no grant still challenges at the last hop.

    Not built
  • Hold someone accountable for each agent. An agent in the inventory carries an owner and a declared autonomy, and the unowned_agent policy flags one without. That is what the gate and the posture engine evaluate against.

    Available

What the evidence looks like

A delegation control would have to show the whole chain and the point where authority should have stopped growing. Illustrating the problem, for the flag change:

QuestionIllustrative answer
WhyFeature-flag change reached a privileged agent through a chain that began with a read-only agent acting on untrusted content
Whatrelease-notes-agent → coordinator-agent → deploy-agent → set_flag(billing_v2, all customers)
WhoOriginating principal: release-notes-agent (read-only); instruction origin: an external contributor's pull request description
WhereFeature-flag service prod · three agent identities · two delegation hops
HowEach hop authenticated only its immediate caller; no hop carried origin, purpose or authority
Blast radiusBilling behaviour for all customers; invoices issued under the flag cannot be recalled
RecommendationDeny; authorize the final action against the originating principal's authority; require attenuated delegation tokens; add approval for all-customer flag changes
ActionAction refused by a chain-aware control · delegation chain recorded · deploy-agent trust review opened · pull request flagged for review
EvidenceDelegation chain trace · agent identity records · pull request provenance · flag-service request log
Illustrates the problem, not Trustivan output: no agent-to-agent edge exists, so Trustivan records and evaluates no chain. Names are invented.

Authority should shrink along the chain.

See how TRUSTIVAN connects identity, credential, access, agent and action context into one control plane.