Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

A2aAgent builds agent-card url from default region (us-central1), ignoring GOOGLE_CLOUD_AGENT_ENGINE_LOCATION #6877

Copy link
Copy link
@qingvincentyin

Description

@qingvincentyin
Issue body actions

Summary

When an A2A agent (vertexai.preview.reasoning_engines.A2aAgent) is deployed to Vertex AI Agent Engine in a region other than us-central1, the served Agent Card's url field is built with the wrong region (us-central1). The reasoningEngines/<id> resource itself is created in the correct region, but the card url — which A2A clients use as the base for message:send — points elsewhere, so client calls derived from the card hit the wrong region.

Environment

  • google-cloud-aiplatform==1.149.0
  • agents-cli (google-agents-cli) 0.4.0 — agent generated from its adk_a2a template with --deployment-target agent_runtime
  • a2a-sdk==0.3.26 (server-side; pinned ~=0.3.22 by the adk_a2a template)
  • Deploy target: Vertex AI Agent Engine (Agent Runtime), region us-east1
  • Agent: ADK agent wrapped via A2aAgent

Steps to reproduce

  1. Deploy an A2aAgent-wrapped ADK agent to Agent Engine in us-east1 (any non-us-central1 region).
  2. Fetch the authenticated agent card:
    GET https://us-east1-aiplatform.googleapis.com/v1beta1/projects/<project>/locations/us-east1/reasoningEngines/<id>/a2a/v1/card

Expectedcard.url:

https://us-east1-aiplatform.googleapis.com/v1beta1/projects/<project>/locations/us-east1/reasoningEngines/<id>/a2a

Actualcard.url:

https://us-central1-aiplatform.googleapis.com/v1beta1/projects/<project>/locations/us-central1/reasoningEngines/<id>/a2a

(The reasoningEngines/<id> resource is correctly in us-east1; only the card url is wrong.)

Root cause

In vertexai/preview/reasoning_engines/templates/a2a.py:

A2aAgent.__init__ captures the location from the SDK global config (L198):

"location": initializer.global_config.location,

set_up() then uses that captured value to build the card URL (L244, L249):

location = self._tmpl_attrs.get("location")
...
self.agent_card.url = f"https://{location}-aiplatform.googleapis.com/{version}/projects/{project}/locations/{location}/reasoningEngines/{agent_engine_id}/a2a"

initializer.global_config.location falls back to DEFAULT_REGION = "us-central1" (google/cloud/aiplatform/constants/base.py:21) whenever vertexai.init(location=...) has not been called — which is the case in the deployed runtime — so the URL is stamped with us-central1.

The Agent Engine runtime does inject the correct region as the env var GOOGLE_CLOUD_AGENT_ENGINE_LOCATION (confirmed present at runtime with the real region). AdkApp already honors it — vertexai/agent_engines/templates/adk.py:321:

location = os.getenv("GOOGLE_CLOUD_AGENT_ENGINE_LOCATION", "") or os.getenv("GOOGLE_CLOUD_LOCATION", "")

A2aAgent does not, so the two templates resolve the deploy region inconsistently.

Suggested fix

Resolve the location in A2aAgent.set_up() the same way AdkApp does, preferring the runtime-injected env var over the SDK default:

location = (
    os.getenv("GOOGLE_CLOUD_AGENT_ENGINE_LOCATION")
    or os.getenv("GOOGLE_CLOUD_LOCATION")
    or self._tmpl_attrs.get("location")
)

Resolve in set_up() (not __init__): __init__ also runs during deploy-time introspection, where the runtime env var is absent.

Workaround

In user code imported before the A2aAgent is constructed, set the SDK location at import:

import os, vertexai
_loc = os.environ.get("GOOGLE_CLOUD_AGENT_ENGINE_LOCATION")
if _loc:
    vertexai.init(location=_loc)
Reactions are currently unavailable

Metadata

Metadata

Assignees

No one assigned

    Labels

    api: vertex-aiIssues related to the googleapis/python-aiplatform API.Issues related to the googleapis/python-aiplatform API.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.