@@ -17,19 +17,19 @@ probe that would graduate it.
1717
1818```
1919registry:
20- 'claude-sonnet-4-5@20250929 ' -> google.adk.models.anthropic_llm.Claude
20+ 'claude-sonnet-4-6 ' -> google.adk.models.anthropic_llm.Claude
2121 Claude.supported_models() = ['claude-3-.*', 'claude-.*-4.*']
2222
2323constructed (offline, no ADC):
24- parent : lead model=claude-sonnet-4-5@20250929 -> Claude
24+ parent : lead model=claude-sonnet-4-6 -> Claude
2525 web sub : lead_web_search model=gemini-2.5-flash -> Gemini
2626
2727OK: Claude main agent + Gemini-pinned web sub-agent compose. Mixed-model invariant holds.
2828```
2929
3030Two facts established:
3131
32- 1 . ** ADK natively resolves Claude on Vertex.** ` LLMRegistry.resolve("claude-sonnet-4-5@20250929 ") `
32+ 1 . ** ADK natively resolves Claude on Vertex.** ` LLMRegistry.resolve("claude-sonnet-4-6 ") `
3333 returns ` google.adk.models.anthropic_llm.Claude ` , backed by ` AsyncAnthropicVertex ` —
3434 Claude served through Vertex AI, no extra package. An ` LlmAgent(model="claude-…") ` is a
3535 valid ADK agent.
@@ -38,27 +38,35 @@ Two facts established:
3838 ` GoogleSearchTool ` /` url_context ` , which are ** Gemini built-ins** — they cannot run on a
3939 Claude model. So a Claude parent must pin its wrapped web sub-agents to Gemini.
4040
41- ### The Vertex Claude id is ` @versioned `
41+ ### The Vertex Claude id resolves bare (a ` @version ` suffix is optional)
4242
43- A Vertex Claude model id carries an ` @version ` suffix (` claude-sonnet-4-5@20250929 ` ),
44- unlike the Anthropic API ids the folder uses (` claude-haiku-4-5 ` ). Any future passthrough
45- would have to map folder ids → the ` @versioned ` Vertex ids, per region availability.
43+ ADK resolves the ** bare** Vertex Claude id (` claude-sonnet-4-6 ` ) — confirmed above against
44+ ` Claude.supported_models() = ['claude-3-.*', 'claude-.*-4.*'] ` — and an ` @versioned ` form
45+ (` claude-sonnet-4-5@20250929 ` ) resolves too. So a future passthrough maps folder ids →
46+ Vertex Claude ids subject to ** per-region/Model-Garden availability** , not a mandatory
47+ version-pinning step.
4648
4749## What this does NOT prove (the live half — blocked)
4850
4951` claude_on_vertex_deploy.py ` is the live probe that would close the loop: it deploys ONE
5052` reasoningEngine ` with a Claude-on-Vertex root + Gemini web sub-agent, queries it (the
5153instruction prepends a literal ` CLAUDEVTX ` token so the reply confirms which brain
5254answered), and tears it down. It is ** env-driven and committed without identifiers** , and
53- has ** not been run** — it needs preconditions that aren't satisfiable in this session :
55+ has ** not been run yet ** . Preconditions :
5456
5557- ** Claude enabled in the project's Vertex AI Model Garden** — a one-time console action;
56- Claude on Vertex is an enable-per-project, region-gated partner model.
57- - ** A region that serves the chosen Claude model** (e.g. ` us-east5 ` — not every region
58- serves every Claude model).
58+ Claude on Vertex is an enable-per-project, region-gated partner model. * Now satisfied:*
59+ ` claude-sonnet-4-6 ` was enabled in this project (2026-06-04), so this is no longer the
60+ blocker — only running the probe is.
61+ - ** The model-call region (the one live unknown).** An Agent Engine * resource* deploys to a
62+ real region; at runtime the in-engine ADK Claude client calls ` AsyncAnthropicVertex ` with
63+ ` GOOGLE_CLOUD_LOCATION ` . If the model is served only at the ** global** endpoint (the
64+ Vertex quickstart uses ` region="global" ` ), the probe injects ` GOOGLE_CLOUD_LOCATION=global `
65+ as an engine env var (` CLAUDE_VERTEX_REGION=global ` ) while the engine stays in a real
66+ region. Whether one knob or the override is needed is exactly what the live run settles.
5967- ** A billable project + staging bucket + ADC** , exactly like a normal Google deploy.
6068
61- Until that runs green, "Agent Engine will deploy * and run* a Claude-on-Vertex engine
69+ Until the probe runs green, "Agent Engine will deploy * and run* a Claude-on-Vertex engine
6270end-to-end" is ** NOT-PROVEN** — distinct from the offline-verified construction.
6371
6472## What shipped in agentlift as a result of this spike
@@ -85,10 +93,11 @@ user-facing passthrough flag. Concretely:
85931 . Run ` claude_on_vertex_deploy.py ` against a project with Claude enabled in Model Garden;
8694 capture the ` CLAUDEVTX ` -prefixed reply as a receipt (the unforgeable signal that the
8795 Claude brain — not the Gemini default — answered).
88- 2 . Encode the wire behavior: the folder-id → ` @versioned ` -Vertex-id map (per region), and
89- whatever ` requirements ` /region constraints the live deploy revealed.
96+ 2 . Encode the wire behavior: the folder-id → Vertex-Claude-id map (per Model-Garden/region
97+ availability; bare id ok), and whatever ` requirements ` /region constraints the live
98+ deploy revealed (notably whether the model call needs the ` global ` endpoint).
90993 . Replace the planner guard with a real passthrough (e.g. ` --google-model claude-… ` or a
91100 per-agent opt-in), keeping ` web_model() ` pinning the web sub-agents to Gemini.
92101
93102* Offline half confirmed 2026-06-04 with google-adk 1.34.3. Live half: NOT-PROVEN (Model
94- Garden enablement required ).*
103+ Garden now enabled for ` claude-sonnet-4-6 ` ; deploy probe not yet run ).*
0 commit comments