Repository navigation
Description
Before submitting
- I searched existing issues and did not find a duplicate.
- I included enough detail to reproduce or investigate the problem.
Area
apps/server
Steps to reproduce
- Start T3 Code (
npx t3or desktop app) onmain(commit 4ee6bfd). - Configure the Antigravity provider and start a conversation.
- Prompt the model to ask a multiple choice question with options or multi-select items (e.g. "ask me to pick one or more options using your user input tool").
- Inspect the initialize handshake and session RPC traffic.
Expected behavior
- The Antigravity provider session initializes with ACP elicitation capability (
clientCapabilities.elicitation: { form: {} }). - When the model invokes its elicitation tool with a form containing choices or multi-select (
type: "array"withitems.anyOf/items.enum), T3 Code displays the interactive choices/checkboxes in the composer (ComposerPendingUserInputPanel/PendingUserInputCard). - User submissions serialize cleanly into declared schema types (arrays for
type: "array", booleans fortype: "boolean"). - The agent receives the response without schema rejection or falling back to single-item permissions.
Actual behavior
- Capability Dropped:
AntigravityAcpSupport.ts(makeAntigravityAcpRuntime) hard-codesclientCapabilities: { fs: ..., terminal: false }, omittingelicitationentirely. Because the agent never seeselicitation: { form: {} }during initialization, it falls back to single-selectsession/request_permission(interaction_*) tool approval prompts. - Pinned Binary Version Outdated:
antigravityRelease.tsis pinned to1.1.1(agy_acp_server_1.1.1), missing the upstream 1.3.0 release from ACP registry PR Bottom input bar icons breakage #647. Furthermore, Intel Macs (darwin-x86_64) currently resolve tonull. - Multi-Select & Schema Mismatches in Shared ACP Adapter:
handleElicitationinAcpAdapterV2.tsonly extracts choices whenrecord?.enumexists on top-level fields; it ignoresrecord?.itemswhenrecord?.type === "array".- Questions with fixed options do not set
allowCustomAnswer: false, enabling clients to return empty strings""or free text where the agent strictly requires an array. elicitationContentdoes not coerce boolean answers (which go out as strings"true"/"false") and can sendNaNasnullover JSON-RPC.
Version or commit
main @ 4ee6bfd
Environment
- OS: macOS (darwin-arm64, darwin-x64), Linux, Windows
- Provider: Antigravity ACP (
antigravity-acp) /gemini-3.8-flash-high
Logs or stack traces
During initialization handshake:
--> {"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":2,"clientCapabilities":{"fs":{"readTextFile":true,"writeTextFile":true},"terminal":false}}}
<-- {"jsonrpc":"2.0","result":{"agentInfo":{"name":"antigravity-acp","version":"1.3.0"},...}}Notice clientCapabilities.elicitation is missing from the client initialize request, preventing session/elicitation usage.
Workaround
None. Users are limited to single-select approval prompts via the legacy fallback.
Additional context & Proposed Fix
The client UIs (ComposerPendingUserInputPanel.tsx and mobile PendingUserInputCard.tsx) already support multi-select questions and answers (selectedOptionValues). Only the server ACP layer needs to be updated.
We have drafted and tested a 2-PR stack to address this cleanly without bundling independent concerns:
-
PR 1: Bump Antigravity ACP agent to 1.3.0
- Updates
ANTIGRAVITY_RELEASE_VERSIONto"1.3.0"matching the real agentinitializehandshake response. - Updates URLs to the new pattern (
agy-acp-server-1.3.0-<platform>.zip) and addsdarwin-x64(Intel Mac) alongside the other 5 platforms. - Updates checksums and verified startup assertions in
AntigravityInstallation.test.ts.
- Updates
-
PR 2: ACP Elicitation v2 & Multi-Select Support in shared AcpAdapterV2
- Adds opt-in
elicitation?: booleantoAntigravityAcpRuntimeInput, activated specifically inAntigravityAdapterV2.tsfor chat sessions (leaving the installation validator runtime untainted). - Updates
AcpAdapterV2.ts(handleElicitation) to detect multi-select onrecord?.type === "array", supportingitems.anyOf,items.oneOf, anditems.enum, while preserving single-select options for all non-array fields (benefiting Antigravity, Grok, and ACP registry agents). - Sets
allowCustomAnswer: falseon fixed option lists to prevent malformed string submissions. - Hardens
elicitationContentwith boolean type coercion, array preservation, andNaNkey omission.
- Adds opt-in
Willingness to contribute: I have this fix planned and verified against the local test suite (vp test run ...), and I am ready to open the PRs for this stack immediately upon maintainer approval.
Activity
t3dotgg commentedon Oct 21, 2026
Note
🤖 Claude Opus 5.5 responding on behalf of Theo
Thanks for the report. One part of this is fixed on main in #15746. Please test on the nightly built from main on 2026-10-21, or on the next stable release. One part is still open: ACP elicitation capability and multi-select answer handling. If that part still matters to you, please open a new issue for that part only.