Skip to content

GcpSkillRegistry.get_skill() always fails with 302: Agent Registry media download redirect to GCS signed URL is not followed #6908

Description

@codebee-aoki

🔴 Required Information

Describe the Bug:
GcpSkillRegistry.get_skill() always fails when downloading the skill archive. The Agent Registry API serves the revision media download (?alt=media) as a 302 redirect to a short-lived GCS signed URL. The httpx.AsyncClient created in _create_httpx_client does not follow redirects (httpx default), and httpx's response.raise_for_status() raises on 3xx responses, so _make_request surfaces the redirect as an error and the skill archive can never be downloaded:

RuntimeError: API request failed with status 302: ...

This makes skill loading from the GCP Agent Registry (e.g. via SkillToolset.load_skill) unusable against the real API.

Steps to Reproduce:

  1. Install google-adk==2.7.1.
  2. Point GcpSkillRegistry at an Agent Registry project/location containing any skill.
  3. await registry.get_skill(name="<any-skill>").
  4. The metadata request succeeds, then the ?alt=media media download fails with the RuntimeError above.

Expected Behavior:
The client follows the 302 redirect to the GCS signed URL and downloads the skill archive. (This is safe: httpx removes the Authorization header when following a cross-origin redirect, so the OAuth bearer token is not forwarded to the signed-URL host.)

Observed Behavior:
RuntimeError: API request failed with status 302: ... raised from _make_request for every skill download.

Environment Details:

Model Information:

  • Are you using LiteLLM: No
  • Which model is being used: N/A (client-side registry download; no model involved)

Fix

PR #6824 is open with the fix: pass follow_redirects=True to both httpx.AsyncClient constructions in _create_httpx_client (plain and mTLS/ssl-context branches). It includes unit tests and has been verified end-to-end against a real Agent Registry catalog (the identical change applied as a monkey-patch on Agent Engine runtime restores skill downloads).

Metadata

Metadata

Assignees

Labels

services[Component] This issue is related to runtime services, e.g. sessions, memory, artifacts, etc

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions