Skip to content

antigravity-acp 1.0.0 filters oauth-personal model catalog to Gemini only #554

Description

@tiezbro

Summary

The public ACP Registry build of antigravity-acp currently advertises only Gemini models under oauth-personal, even when the same signed-in Antigravity account can list and execute Claude 4.6 and GPT-OSS 120B through the official Antigravity IDE/CLI.

This reproduces by driving the Registry binary directly over NDJSON; no Paseo proxy or model-catalog transformation is involved.

Affected Registry entry:

  • Registry version: antigravity-acp 1.0.0
  • Agent build: agy_acp_server_20260818_01_RC01
  • Tested platform: Linux x86_64
  • Tested binary SHA-256: 46b5925100903a23e0ec7da8b8a218c224494dfffeb3fd30fcd84e91acbc8b07
  • Verified: 2026-08-28

Reproduction

  1. Start the binary distributed by antigravity-acp/agent.json.
  2. Send initialize with protocolVersion: 1.
  3. Authenticate with methodId: "oauth-personal".
  4. Send session/new with a valid cwd and mcpServers: [].
  5. Inspect the model config option returned by session/new.
  6. Send session/set_config_option with configId: "model" and value: "claude-sonnet-4-6".

Observed model catalog: 11 Gemini model IDs only.

Observed model-selection error:

-32602 Model 'claude-sonnet-4-6' is not available for the current authentication method.

gpt-oss-120b-medium is rejected in the same way. The legacy session/set_model method reaches the same result.

Control result using the same account:

agy models

returns 14 entries, including:

claude-sonnet-4-6
claude-opus-4-6-thinking
gpt-oss-120b-medium

The CLI can execute these models successfully.

Source-level finding in the distributed binary

The distributed PAR contains its Python source. In
acp_server/model_selection.py, the CCPA fetchAvailableModels parser explicitly drops every non-Gemini model:

# Only include models that start with "gemini".
if not ccpa_id.startswith("gemini"):
    continue

server.py::_apply_session_model then validates model IDs against that filtered catalog and raises -32602 before constructing the agent or forwarding the model ID to the CCPA inference path. This makes the error message look like an authentication/backend rejection even though the immediate rejection is local to the ACP server.

The result was unchanged across four initialize variants, including standard clientCapabilities, a full capability set, and Zed-like clientInfo. AGY_ACP_DEFAULT_MODEL, session/set_model, and session/set_config_option do not bypass the filtered catalog.

Registry coverage gap

The Registry protocol matrix currently reaches session/new: Authentication required for this agent and therefore never inspects the authenticated model catalog. Manifest validation and unauthenticated handshake tests can pass while this behavior remains undetected.

Expected outcome / questions

Could the Google publisher please confirm whether Gemini-only ACP exposure is intentional?

  • If it is a defect, please publish an updated official agent build without the unconditional non-Gemini filter and update antigravity-acp/agent.json.
  • If it is intentional, please document that the ACP surface does not have model parity with the Antigravity IDE/CLI and clarify the misleading current authentication method error.
  • If practical, please add provider-owned authenticated coverage for the model catalog and model selection path.

Full protocol observations, evidence grading, ruled-out client parameters, and remaining unknowns:

https://github.com/tiezbro/paseo-agy-acp/blob/main/docs/research/google-antigravity-acp-model-catalog-investigation.md

cc @cynthialong0-0, author of the original Registry submission in #542.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions