Skip to content

News9 min read

When agents delegate to agents: what A2A verifies, and what your chain still has to

The Agent2Agent specification makes card signing optional and leaves authorization to each implementer, and public research shows a remote agent steering a client agent into an unauthorized trade. The questions to ask before your agents accept work from other agents, answered from the spec.

How attacks on AI agents work in practice, from public incidents and our own test corpora, and the controls that stop them.

September 14, 2026 · 9 min read

A2AMulti-Agent SystemsAgent IdentityDelegationPrompt Injection
Contents
  1. 01Does a signed agent card tell us who we are talking to?
  2. 02The partner authenticates every request. Isn't that authorization?
  3. 03The person signed in at the first hop. Does that authority carry down the chain?
  4. 04So what can the partner's agent make ours do?
  5. 05Which of these does the specification cover, and which are ours?
  6. 06How would we know it was happening?
  7. 07Can a gateway do this for us?
  8. 08What should we require before go-live?

The meeting that surfaces this risk is usually about procurement. A platform team has connected its internal planning agent to a partner's agent over A2A, the pilot works, and someone asks: what can the partner's agent make ours do? Nobody can answer, because the integration was designed around what the partner's agent does for us, not the reverse.

Google announced A2A on April 9, 2025, with support from more than 50 technology partners, as an open protocol for agents to collaborate across vendors, advertising capabilities in a JSON document called an agent card [2]. The specification has since reached a 1.0.0 release [1]. It is a messaging and discovery protocol, and its most important security sentences are the ones that hand decisions back to you. Our position: a conforming A2A deployment is secure only if every hop re-decides authority from its own policy. Below are the questions a review board should ask, answered from the specification and the public research.

Does a signed agent card tell us who we are talking to?

Not by itself. An A2A server publishes a card describing its identity, capabilities, skills, endpoint and authentication requirements, found at a well-known URI, through curated registries, or by direct configuration [1]. Cards "MAY be digitally signed" with JSON Web Signature, canonicalized with RFC 8785 first, and clients "SHOULD verify at least one signature before trusting an Agent Card" [1]. Verification fetches the public key using the kid and jku values, or from a trusted key store, and expired or revoked keys must not be used [1].

A signature checked against a key fetched from a URL the card itself names proves the card was not altered since someone holding that key signed it. It does not prove that someone is the organization you meant to work with. Identity comes from where you got the key: a trust store you maintain, a key pinned when the partnership was set up, or a registry you operate. An unsigned card, or one verified only against its own jku, is a self-description.

From a fetched agent card to a trusted oneFig. 1
Card fetchedwell-known URI or registryJWS verifiesJCS-canonical cardKey you trustpinned, not jku aloneSkill allowlistedper providerNOUnsigned or invalidtreat as untrustedNOKey only from cardintegrity, not identityNOSkill not on listrefuse or askSAFE TO DELEGATEa signature only proves who signed if you already trust the key · the card cannot vouch for itself

A card becomes usable for consequential delegation only after its signature verifies against a key you already trust and the skill requested is on your allowlist for that provider. An unsigned card is untrusted, and a key taken only from the card proves integrity, not identity.

There is a second layer. A server can offer an extended card to authenticated clients, with additional skills or organization-specific details, and clients retrieving it should replace their cached public card for the session [1]. The capabilities your agent sees after authenticating may differ from what anyone reviewed at approval. Allowlist skills from the card your agent actually uses.

The partner authenticates every request. Isn't that authorization?

No, and the specification says so. Clients discover the server's required schemes from the card, obtain credentials "through an out-of-band process," and send them on every request; servers must authenticate every incoming request [1]. Authorization is then "based on the authenticated identity and its own policies," and "Authorization logic is implementation-specific" [1]. Section 13.1 requires authorization checks on every operation and results scoped to the caller's boundaries, with models that are agent-defined, not prescribed [1].

That is not a flaw. It is the honest scope of a protocol. It also means a multi-agent system's security is decided almost entirely by policies each implementer writes, and a conforming deployment can still authorize far too much.

The person signed in at the first hop. Does that authority carry down the chain?

Only as content. A person asks a planner, the planner hands part of the task to a worker, the worker calls a remote agent. Each receiver can verify only the credential in front of it. The person's constraints, which customer and which limit, travel as text in a message unless something re-derives them.

The specification is explicit about one version of this. An agent needing further authorization mid-task can move the task to an auth-required state and push the request back to its client, and a client that is itself an agent can pass it further up [1]. The protocol "does not define the scope, representation, validity, or revocation semantics" of the resulting authorization, and agents "MUST NOT treat the TASK_STATE_AUTH_REQUIRED state transition, by itself, as authorization for any particular operation" [1]. Credentials exchanged in band can be exposed to every agent in the chain, so the specification recommends binding them to the originating agent and encrypting sensitive ones [1].

OAuth token exchange shows why recording a chain is not enforcing it. RFC 8693 lets a token carry nested act claims, the outermost naming the current actor, but only the top-level claims and the current actor are used for access control; prior actors are informational [5]. A downstream service can see that a person was involved several hops ago. It cannot treat that as the person's authorization without its own decision.

What each receiver can check along a chainFig. 2
RESPONSE READ AS INSTRUCTIONSPersonstarts the taskPlanneryour agentWorkeryour agentRemote agentother organizationRemote toolsits systemsWHAT THE RECEIVER CAN CHECK AT EACH HOPPerson signed infull contextPlanner's tokenperson as a noteWorker's tokenperson not visibleRemote's grantsoutside your policyeach hop verifies only the caller in front of it · re-decide what this caller may do for this person, every time

The planner sees a signed-in person; the worker sees the planner's token with the person only as a note; the remote agent sees the worker's token and applies its own grants. Meanwhile the remote agent's response flows back into your worker's context, where it can be read as instructions.

So what can the partner's agent make ours do?

Most A2A threat models have the server protecting itself from clients. Unit 42's research, published October 31, 2025, looks the other way [3]. In agent session smuggling, a malicious remote agent uses an established, stateful session to send covert instructions to the client agent, hidden among ordinary requests and responses. The proof of concept used a financial assistant built on Google's Agent Development Kit as the client and a research assistant as the malicious remote. In one scenario, harmless-looking clarification questions led the client to disclose its chat history, system instructions, tools and tool schemas. In another, hidden instructions in the remote's replies led the client to call its buy_stock tool, executing an unauthorized trade of 10 shares for the victim user [3].

Unit 42 says the research does not reveal a vulnerability in A2A itself and that it has not observed the attack in the wild; the risk comes from implicit trust between agents [3]. It recommends human approval for sensitive actions through a channel the model cannot influence, signed agent cards, grounding the remote agent's instructions against the original user request, and showing users tool invocations and remote instructions [3]. Habler and colleagues reach a compatible view from the other side, applying the MAESTRO threat-modeling framework to A2A and assessing risk across agent card management, task execution integrity and authentication [4].

Which of these does the specification cover, and which are ours?

Picture a fictional insurer whose claims planner delegates repair estimates to a body-shop network's agent. The network's card came from a public registry and is unsigned, its extended card adds a skill nobody reviewed called finalize settlement, and the integration forwards the claimant's portal token in band so the estimate agent can read uploaded photos. Each of those choices is a row below, and none of them breaks the protocol.

A2A risks, what the specification says, and what remains yours
RiskWhat the specification saysWhat you have to do
Impersonated or tampered cardSigning is optional; clients should verify at least one signature [1]Verify against keys you pin or hold in a trust store, never against a key the card alone points to
Unreviewed skillsExtended cards may add skills for authenticated clients [1]Allowlist skills per provider from the card your agent actually uses
Transitive authorityAuthorization is implementation-specific; the auth-required state is not itself authorization [1]Re-decide at every hop what this caller may do for which person, from your own policy
Credential exposure along a chainIn-band credentials can reach every agent; bind them to the originating agent [1]Keep credentials out of band, scoped to one audience, and never forward a user's token to a remote agent
Remote output steering your agentOut of scope for the protocol; demonstrated by Unit 42 [3]Treat remote responses as untrusted data, and make consequential tools ask a person
Push notification abuseAgents should validate webhook URLs to prevent SSRF and reject private ranges [1]Allowlist webhook destinations and authenticate every notification you receive
Runaway delegationRate limiting on all operations is recommended [1]Cap delegation depth and fan-out, and add circuit breakers so one failure cannot cascade [6]

How would we know it was happening?

Each message in a smuggling session looks reasonable on its own, so neither agent's view alone shows it. The signal is the relationship between a remote agent's output and what your agent does next. Log every cross-agent message with the task, the peer's verified identity and the card version in use, and link each tool call your agent makes to the most recent remote message in its context.

  • A consequential tool call, such as a payment, trade or outbound message, that follows a remote response and was not part of the original user request. That is the pattern Unit 42 demonstrated [3].
  • A remote agent asking about your agent's instructions, tools or schemas, especially over several turns, which matches the disclosure scenario [3].
  • A card whose signature, key or skill list changed since review, or an extended card that adds skills. Hold the integration until someone re-approves it.
  • Delegation depth or fan-out above your cap, or a peer whose request rate jumps: early signs of a loop or a cascading failure.

Can a gateway do this for us?

Partly. Intertrace's gateway covers A2A messages alongside model, MCP and tool traffic, deriving tenancy from the calling agent's runtime key rather than anything in the message. Decision fusion treats hidden instructions and instruction-override language as structural signals that can block alone, which applies to text a remote agent sends back. The tool calls your agent then attempts are classified from their arguments, and roles keep payments, outbound messages and admin changes asking a person, with every decision recorded by rule and layer. Pinning partners' card keys and allowlisting their skills stay part of each integration.

What should we require before go-live?

  • A list of every A2A peer, in both directions, with the most consequential tool reachable in the same session as each peer's messages.
  • A pinned signing key or trust anchor per external peer, and refusal of cards that do not verify against it.
  • A per-peer skill allowlist, reviewed from the extended card your agent actually receives.
  • Authorization re-decided at every hop from your own policy, bound to the person and resource the action is for. As OWASP puts it, "A valid message signature does not grant permission to perform the requested action" [6].
  • Credentials kept out of band and audience-scoped, and no user token forwarded to another organization's agent.
  • Remote responses marked untrusted in your agent's context, with payments, outbound messages and admin changes asking a person through a channel the model cannot write to.
  • Caps on delegation depth and fan-out, rate limits per peer, and a log of every cross-agent message with the chain that produced it.

Sources

Reporting, research and specifications this piece draws on. Links go to third-party sources; analysis and recommendations are Intertrace’s own.

  1. 01Agent2Agent (A2A) Protocol Specification (latest, version 1.0.0) · A2A Project
  2. 02Announcing the Agent2Agent Protocol (A2A) · Google Developers Blog
  3. 03When AI Agents Go Rogue: Agent Session Smuggling Attack in A2A Systems · Palo Alto Networks Unit 42
  4. 04Building A Secure Agentic AI Application Leveraging A2A Protocol (arXiv:2504.16902) · arXiv
  5. 05RFC 8693: OAuth 2.0 Token Exchange · IETF
  6. 06AI Agent Security Cheat Sheet · OWASP Cheat Sheet Series

About this desk

Intertrace Threat Research

Threat research

How attacks on AI agents work in practice, from public incidents and our own test corpora, and the controls that stop them.

All 18 pieces by Intertrace Threat Research

+ Runtime enforcement

See these controls on your own agent traffic.

Intertrace sits inline between your agents and the models, tools and MCP servers they call, and decides every call before it runs.

Keep reading

All insights →