Skip to main content
The three clouds serve A2A themselves, so the gateway still forwards A2A. What changes per cloud is how the agent is named, how TrustGate signs in to it, and a few transport differences. You never build an agent URL by hand: the gateway derives the card URL and the endpoint from the identifiers you give.
The card of a hosted agent can be read only with a credential, so Add agent asks for the sign-in before it reads the card.

Sign-in

A hosted agent accepts only its own cloud’s credential. AWS IAM (SigV4), Microsoft Entra ID and Google service account each offer these credentials: On a SaaS gateway, Assume a role requires the External ID that the role’s trust policy requires. Without one, anyone who knew another organisation’s role ARN could have the gateway assume it. Use the gateway’s AWS identity is not offered there. On a gateway served by your own data plane the external id is optional. A cloud credential is sent only over HTTPS, and only to the host derived for the agent. Secrets are encrypted at rest and masked when read back.

When calls go as the user

With as the user sign-in there is no user when the agent is added, yet its card still needs a credential. Reading the card asks for an application credential, used only to read the card:
  • AgentCore: OAuth client credentials (card_auth: "client_credentials").
  • Foundry: a Microsoft Entra ID credential (card_auth: "cloud" with cloud_auth.azure).
Calls then need a caller that the identity provider signed in. An API key gets -32093.

Amazon Bedrock AgentCore

On AWS:
  • Deploy the agent to an AgentCore runtime with the A2A protocol.
  • Set the runtime’s inbound authorization to match the sign-in: IAM for AWS IAM (SigV4), or a JWT authorizer that accepts the tokens of the OAuth client or the identity provider you choose in TrustGate.
  • For SigV4, allow the AWS identity TrustGate uses to invoke the runtime. For an assumed role, put the external id in its trust policy.
In TrustGate: the Agent runtime ARN (arn:aws:bedrock-agentcore:{region}:{account}:runtime/{id}) and an optional Endpoint qualifier (default DEFAULT). The region comes from the ARN. As the user, signed by TrustGate is not offered: AgentCore cannot validate a token TrustGate signs yet. No sign-in and API key in a header are refused too. Sessions. Every call carries X-Amzn-Bedrock-AgentCore-Runtime-Session-Id. Messages of one A2A context reuse the session the gateway recorded with that context; a new conversation gets a new one. A caller cannot choose the session. Errors. AgentCore answers JSON-RPC errors with their real HTTP status. The gateway relays the agent’s error over HTTP 200, and:
  • a 401 that asks for authentication is -32093;
  • a 403 with no JSON-RPC error (the signature refused) is -32092 upstream_auth_failed;
  • -32054 Session operation in progress is retried twice, after 100 ms and 400 ms, on calls that are not streams. AgentCore did not process the call, so a retry does not repeat work.

Microsoft Foundry

On Azure:
  • Enable the a2a protocol on the agent’s endpoint.
  • Give the identity TrustGate uses the Foundry Agent Consumer role on the project. For on-behalf-of, the users need it.
Foundry accepts only Microsoft Entra ID tokens, for the scope https://ai.azure.com/.default, even to read the card. In TrustGate: the Project endpoint (https://{account}.services.ai.azure.com/api/projects/{project}) and the Agent name. Versions. Foundry serves 1.0 and 0.3 on the same endpoint; 0.3 is in preview on Foundry. The default is 1.0. Every call carries A2A-Version with the pinned version, because Foundry answers 0.3 to a request that names none. Limits. Foundry’s A2A endpoint takes text only and does not stream: streaming and subscribe methods answer -32004 without reaching it.

Google Vertex AI Agent Engine

Preview. Vertex AI support follows Google’s documentation and has not yet been verified against a deployed Agent Engine.
On Google Cloud:
  • Deploy the agent to Agent Engine as an A2aAgent.
  • Give the service account TrustGate uses an IAM role on the project that allows it to query the Agent Engine.
In TrustGate: the Project, the Location (a region such as us-central1) and the Agent Engine ID, the number at the end of the resource name. The gateway calls https://{location}-aiplatform.googleapis.com/v1beta1/projects/{project}/locations/{location}/reasoningEngines/{id}/a2a and reads the card at /v1/card under it. There is no as the user option: the token is always the service account’s. HTTP+JSON. Vertex AI serves A2A 0.3 over HTTP+JSON only. Callers still speak JSON-RPC 0.3 to the gateway, which sends each method as its REST request and wraps the answer as the JSON-RPC result. The card a caller gets names JSON-RPC at the gateway’s URL.

From the API

Set provider and the object named after it instead of card_url and url, and auth.mode: "cloud" with cloud_auth:
preview-agent-card takes the same fields and uses the credentials for that read only. A sign-in another cloud’s agent would need, or a card_url on a hosted agent, is refused with 422 and a message naming what the agent accepts. The response carries the derived endpoint and cloud_auth with secrets masked.