Skip to content

feat(acp): Antigravity in the Chat UI over its ACP server - #28595

Merged
brennanb2025 merged 11 commits into
mainfrom
brennanb2025/agy-chat-8-antigravity-row
Oct 17, 2026
Merged

brennanb2025 merged 11 commits into
mainfrom
brennanb2025/agy-chat-8-antigravity-row

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 13 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​816 $\color{#cf222e}{\Huge{\mathbf{−}}}$​42 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​774
Prod 47 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​736 $\color{#cf222e}{\Huge{\mathbf{−}}}$​67 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​669

ELI5

People asked when Orca's Chat UI will support Google's Antigravity agent. Antigravity chats need Google's separate Antigravity chat server, a download of 111.5 to 333.7 MB depending on the machine. An earlier version of this stack downloaded it silently the first time a chat started: about 18 seconds of "Working for Ns" with no progress and no Cancel, and every extra chat opened started another download.

Now nothing downloads until you click Install. A new Antigravity chat shows an Install card in place of its message box, with the download size, then progress and Cancel. The same Install row sits in Antigravity's row of Settings > Chat > Providers and in the Antigravity section of Accounts. Starting a chat never downloads anything.

This PR is the one that adds Antigravity to Chat UI. Pick Antigravity like any other chat agent. Once the server is installed, chats work like Grok or OpenCode chats: streaming replies, tool rows, a per-chat permission picker (Ask, Accept edits, Full access), and Antigravity's questions shown as questions you answer. Signing in comes in #28650 and #28705. Until they land, a chat says it is not signed in.

What Changed

This revision (moving to the common pattern; each item is problem, then what changes):

  • Two "Providers" sections in Settings > Chat. Main gained its own Providers list (feat(native-chat): choose which agents open as a chat #29071: each chat agent with a switch for opening it as a chat), and this PR added a second Providers section holding only Antigravity's install row. Rebased onto main, the install row now sits inside Antigravity's row of that one list, and the separate section is gone. The Accounts section keeps its install row and its sentence about the separate server.

  • Command rows showed a raw blob. The server reports a command's result with its own field names (command_line, combinedOutput, exitCode) and no text blocks, so each command row showed the result as JSON with the output twice and no command line. Antigravity's protocol adapter now maps those fields to Orca's command row: the command line, its output once, and its exit code.

  • /logout in one chat signed out every Antigravity chat on the host. The server offers its own /logout, which clears the sign-in all of this host's Antigravity chats share, outside the pause that protects sign-in changes (feat(acp): pause an agent's chat starts while its shared sign-in changes #28649); another running server could then save its old sign-in back. Until Orca has its own sign-out, /logout is hidden from the chat's command list, and a message that is only /logout is refused before it is sent: "This command isn't available in Antigravity chats, so it was not sent."

  • The server's warning on "Allow Always (risky)" was dropped. For shell and web approvals the server attaches a prompt-injection warning to that choice; it is now shown on the approval card above the choices.

  • "Installed" could show for a server this host can't run. Antigravity now provides the start check feat(acp): a managed runtime installs only when asked, with progress and cancel #29023 runs before publishing: it starts the unpacked server once under a throwaway home folder, asks only initialize (never signs in), and keeps the copy only if it answers as antigravity-acp version 1.3.0 with session load and resume, sign-out support and Google sign-in, and its process is then proven stopped. It times out after 90 seconds, and the throwaway folder (including the server's roughly 1 GB self-unpack) is deleted afterwards.

  • The download size read "111.5 MB download." It now reads in whole MB, as the common pattern shows it: "112 MB download." on Apple silicon.

  • The server runs with PYTHONUNBUFFERED=1, as the common pattern sets it, so its output is never held back in a buffer. Its environment rules now live beside its runtime, shared by chat starts and the start check.

  • The spec no longer names its mode option's id; feat(acp): an agent can run each chat's own permission mode itself #28455 finds it by category.

  • Before: Antigravity could only run as the agy terminal agent. Picking it with Chat UI on opened a terminal.

  • After (behind Chat UI's experimental setting): Antigravity is a Chat UI agent on Orca's existing Agent Client Protocol (ACP) chat engine.

    • Orca runs Google's Antigravity ACP server (agy_acp_server.par), a separate program from agy, which has no ACP mode. Version 1.3.0 is pinned for macOS (Apple silicon 111.5 MB, Intel 117.2 MB) and Linux (x64 333.7 MB, arm64 321.7 MB). Google publishes no checksums, so Orca stores the size and SHA-256 of each archive and of both executables in it.
    • The terminal agent's Command setting is ignored for chats, because it names agy, not this server. A copy of the server already on PATH is used only when its helper program sits beside it and Orca has none installed.
    • No download on start. The server installs only from an Install button, using the install service, status and chat card from the PRs below this one (feat(acp): a managed runtime installs only when asked, with progress and cancel #29023 through feat(native-chat): a chat whose host has no program to run shows Install in place of its composer #29051). The button appears in three places, all showing the same host's status: the new chat's Install card ("Install Antigravity to start chatting."), Antigravity's row in the Providers list in Settings > Chat (the list of chat agents with an on/off switch each; for Antigravity the install row replaces the line saying whether the agy CLI is installed, because its chats don't use that CLI), and the Antigravity section of Accounts (for that host, when Chat UI is on, not for a WSL distro). Before installing, the row reads "{size} MB download." from the host's archive size, in whole MB, e.g. "112 MB download." on Apple silicon. During the download it shows progress and Cancel.
    • A start with nothing installed is refused before anything runs: "Antigravity isn't installed on the computer running this chat. Install it from the chat in a current version of Orca."
    • Orca pins no Windows server build yet, so Antigravity is not offered as a chat agent there: it isn't in the Providers list and no Install button appears.
    • Each machine that runs chats keeps one private Antigravity folder, antigravity-chat in Orca's data folder, where the server stores its own sign-in. Orca makes it owner-only before every start and never reads what is inside. Inherited Google API keys and settings (GEMINI_API_KEY, GOOGLE_*, GCLOUD_PROJECT, CLOUDSDK_CORE_PROJECT, ANTIGRAVITY_HARNESS_PATH, other AGY_ACP_*) are not passed to the server. The server is told to keep its sign-in in that folder rather than the keychain entry every copy on the machine shares, never to open a browser itself, and not to buffer its output.
    • Each chat has its own permission picker, as Claude and Codex chats do: Ask, Accept edits or Full access, mapped to the server's own modes (default, auto_edit, yolo) through feat(acp): an agent can run each chat's own permission mode itself #28455. There is no "Approve for me", since Antigravity has no automatic reviewer. A change mid-chat applies from the next message. Accept edits approves file edits only, and the picker says so: "Approves file edits; asks for the rest".
    • Antigravity's questions arrive as permission requests. They appear as questions with the server's own choices in every mode, Full access included, and are never auto-approved. An answer must be one of the offered choices; the server takes no free text.
    • Each server process gets its own temp folder, because the server unpacks itself there on every start.
    • A chat that needs sign-in ends as "not signed in" right away instead of waiting five minutes for a browser (through feat(acp): a sign-in prompt on an ACP agent's error output ends the start or turn signed out #28467).
    • A chat reopens its conversation with session/resume, because session/load replays the whole conversation, which the chat already holds.
    • The model list stays empty until a signed-in session lists models.
  • New optional launch-spec fields used here: ignoreAgentCommandSetting, resumePreference, and an account prepare step that runs before every start (never on reads).

  • The host's install status gains an optional downloadBytes, the pinned archive size. Older clients ignore it. A new client talking to a host without it shows "Not installed." as before.

  • Antigravity's protocol adapter gains a tool-update mapping (the hook OpenCode's and OMP's adapters already use), and adapters can now name commands a chat withholds; the refusal has its own plain sentence in all six languages.

Why

Google ships Antigravity's chat support only as this ACP server, so this reuses Orca's existing ACP engine instead of adding a second one. Letting the server run its own sign-in (next PRs) keeps Orca independent of Google's internal login formats. Mapping the picker onto the server's own modes keeps the server's own rules about what is an edit.

Linked Issue

N/A (maintainer). User request: when will Chat UI support the Antigravity CLI.

Visual Proof

This head (75dc90dcb7b, rebased onto main; M4Air, dev build, throwaway profile, hidden window driven over the Chrome DevTools Protocol (CDP) only, download throttled to about 1 MB/s so Cancel lands mid-download; driven by a non-Claude QA driver). Result: Settings > Chat has one Providers list; Antigravity's row shows its install row in place of the CLI line; Install, Cancel and Retry from that row reach the chat and Accounts live; the "Open Antigravity as a chat" switch saves.

Providers list, idle (Antigravity's row: "112 MB download." and Install):

providers idle

Downloading from the Providers row, followed live by the chat:

providers downloading

chat downloading

Cancelled from the Providers row ("Installation cancelled." and Retry in every surface):

providers cancelled

chat cancelled

Installed (about 80 s from Retry at 1 MB/s): the row reads "Installed." with Reinstall, and the chat gets its message box:

providers installed

chat installed

Accounts > Antigravity keeps its own install row and the sentence about the separate server:

accounts row

A new chat before install shows the install card in place of the message box (the "Start a chat" line above it is replaced by #30001):

chat install card

Not covered by this round: removing the runtime (it arrives in #29139/#29140), and the start check, command rows, /logout refusal and "Allow Always" warning (no signed-in account in QA, by rule). A Settings search for "antigravity" finds Accounts > Antigravity, not the Providers row, because main's Providers search entry names no agents; that is main's design for every agent and is left as is.

Earlier build, signed out: "hello" with nobody signed in shows the sign-in notice, not install text:

signed out

Picker, main versus this PR (an earlier hidden-window CDP comparison on M4Air: main 294927e097 versus 8cd32680e1b, isolated data, Chat UI on, and the same deliberately invalid terminal Command setting): Antigravity sits alongside the existing agents.

Main agent picker

PR agent picker

Before: selecting Antigravity opens and selects a terminal, and the scratch Command fails as expected. The absolute scratch path is covered with solid black boxes for privacy; the rest of the capture is unchanged.

Main Antigravity terminal result, path redacted

After, earlier build: selecting Antigravity opens a Chat tab despite that terminal setting. That build still downloaded the server on start, which this head no longer does. Sending hello settled promptly with one signed-out notice, no browser link, and no second "agent exited" error.

PR Antigravity signed-out result after first installation

Setup and default-tab limitation: the hidden-window New Workspace action stalled in the QA driver, so custom default-tab and setup seeding was not exercised live. Reading the source shows the same setup, default-tab and issue handoff as other Chat UI agents, with the chat appended and selected. The image below shows only the workspace the backend created; it does not prove seeded tabs or their order.

Attempted default-tab comparison, backend workspace only

Not exercised live: the per-chat permission picker, a signed-in chat, this revision's changes (listed above), floating windows, Linux cold start, and Windows. Windows QA was blocked before launch by the rig's console-allocation limit; the Windows refusal is covered by source and tests only.

Testing

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

  • A recorded real Antigravity exchange (scrubbed, 11 lines) replayed through the real chat adapter: sign-in retry, default mode set, a question answered with one of its own choices, the turn completing. Without this PR's question handling it shows an approval card instead.

  • Permission picker through the real chat host: a chat switched to Accept edits starts the server in auto_edit; switched to Full access mid-chat, the next message runs on a server started in yolo.

  • Launch contract: the private folder is used and made owner-only, inherited Google keys are removed, file storage is forced, and the terminal Command setting is ignored.

  • The launch-parity snapshot gains Antigravity cases, generated by the existing coverage check. Existing cases change only in session-id numbering.

  • The install row's label table gains the size line ("112 MB download.").

  • Start check: a stand-in server answering with the pinned server's recorded initialize passes for version 1.3.0 and fails Install for any other version (skipped on Windows, where Antigravity isn't offered).

  • The launch-parity snapshot gains PYTHONUNBUFFERED=1.

  • Archive and member sizes were read from each pinned archive's zip directory with HTTP range reads, matching the pinned URLs.

  • pnpm tc:node, pnpm tc:web, 453 test files and the code-quality gate passed before the restack onto the install PRs. PR CI covers the current head.

Review

Agent skill upstream boundary

  • Not applicable, or this change copies or mechanically translates no upstream skill-installer source, tests, fixtures, registry entries, path tables, comments, or documentation.

QA, round 2 (M4Air, 10-16, build of 2efa3308959 before this revision's last fixes; Grok drove the hidden window over the Chrome DevTools Protocol only)

  • The new chat card and Settings both read "112 MB download." (the pinned archive is 111,456,962 bytes). Commands and /logout were not exercisable: QA never signs in to Google.

Settings Accounts, not installed Chat downloading

Notes

  • Windows: Orca pins no Windows server build yet (see the differences below), so Antigravity chats are not offered there, and the refusal is an availability fact, so no Install button leads nowhere.
  • SSH and remote hosts: the server, its folder, the install status and the download all live on the host that runs the chat. Settings > Chat > Providers is for this machine. A remote host installs from the chat's Install card or from that host's Accounts section.
  • /logout is withheld in chats until Orca has a sign-out (see the differences below).
  • PR author: @BrennanKB5

Differences from the common pattern

  • Temporary: Windows hosts get no Antigravity chats because Orca pins no Windows build yet, though Google publishes one; follow-up (a Windows support ticket, not filed yet) must add the pins and also: a browser opener that works on Windows (true is not a command there, so the server would open a real browser), the .exe program names, a case-insensitive environment scrub, the temp folder's path length, each member's checksum, and process-tree and locked-file handling.
  • Temporary: chats don't load the person's global Antigravity skills from their own home folder, and Orca's inline-visuals skill doesn't reach Antigravity chats either (it would arrive the same way); follow-up: a ticket (not filed yet) to link those skill folders into the chat sign-in folder.
  • Temporary: /logout is hidden from the command list and refused, which is Orca-only; the common pattern intercepts a /logout message and runs its own sign-out, which stops the chats first. Follow-up: the sign-out change (feat(antigravity): sign Antigravity chats in with the server's own Google sign-in #28650 and feat(settings): sign Antigravity chats in from Accounts #28705 list it), after which /logout is routed to it.
  • Intended: Orca's client accepts only version 1 of the chat protocol in initialize, so a server answering version 2 fails the start check, where the common pattern also accepts 2. The pinned 1.3.0 server answers 1, and Orca runs no other build.
  • Intended: the start check also requires the checked server's process to be proven stopped, and fails the install otherwise, so a server that may still be running is never left behind by Install.
  • Intended: each pinned file is also checked by its own SHA-256, not only by size; this reuses Orca's shared install verifier.
  • Intended: the server finds its helper program beside itself in Orca's release folder, so no helper path is passed; the server works it out itself, and passing it would store a second copy of that fact.
  • Intended: one chat sign-in folder per host (Orca has no per-provider instances), made owner-only before every start.
  • Intended: the browser opener is set to a no-op on macOS and Linux; the server prints its sign-in line on its error output right after trying the browser, so chats detect it there and the separate sign-in flow handles the link, without the extra helper process the common pattern starts on every launch.
  • Intended: models come from the live chat session instead of a separate background server started just to list them; on every host that would be a second server unpacking about 1 GB.
  • Intended: Auto is not offered, because in the common pattern it maps to the same server mode as Ask.
  • Intended: the install row lives under Settings > Accounts for each host and under Chat > Providers for this computer, Orca's per-host settings layout.
  • Temporary: no /compact. A strings dump of the pinned 1.3.0 server lists plan as its only built-in command, so a /compact would reach the model as plain text; the common pattern does send it, and neither side has checked it against a signed-in server. Follow-up: try /compact in a signed-in 1.3.0 chat and turn it on if the server compacts.
  • Temporary: command rows cover commands and their output only; the server's subagent batches get no rows of their own, image results get no preview, and the "Allow Always" warning shows on the whole approval card rather than beside that choice. Follow-up: a richer tool-row mapping for Antigravity.
  • Intended: no settings file recording the sign-in method is written before a start; every start signs in with Google, and the server records the method itself when it does.
  • Intended: the server gets no file read/write access through the chat protocol, Orca's one policy for every chat-protocol agent. To check in QA: a non-image attachment outside the workspace.
  • Intended: no custom program path for the server; that would be a new setting.

Checklist

  • This PR is small and focused
  • I explained what changed and why (ELI5, the user-facing before/after, the mechanism, and why over the alternatives)
  • Before/after screenshots or videos attached for UI changes, or N/A with reason
  • Self-reviewed for correctness, security, and performance
  • Cross-platform, SSH/remote, and path/shortcut impact considered (or N/A)
  • pnpm lint, pnpm typecheck, pnpm test, and pnpm build pass (or CI will cover; local preferred)

@brennanb2025

Copy link
Copy Markdown
Contributor Author

Antigravity previously opened only as a terminal agent. This PR adds it to experimental Chat UI through Google's separate chat server. Review found that an existing terminal Command could launch the wrong program, and a host without a pinned server build could offer a chat that failed at startup.

The fixes let chats ignore that terminal setting while keeping the existing server lookup, and apply the same execution-host check to new chats and saved-chat restarts. Saved conversations remain readable on an unsupported host. A test-only correction also asserts the intended Linux launch argument before comparing the existing snapshots.

Three review rounds finished with no new finding in round 3 and an architecture verdict to keep the design. Latest-head CI passed, including all five Node test shards, static analysis/typecheck, both packaging jobs, guards and the final test-selection check. Locally, 65 targeted tests passed, including all 49 launch cases; Node/web typechecks and code-quality checks passed. The final test-only correction also passed all 49 cases and gated Node typecheck. Pre-push checks ran; the local Bun version mismatch and a machine-queue timeout were recorded, with the missing Node compiler evidence completed afterward.

On M4Air, hidden-window checks compared main with the identical reviewed production code: choosing Antigravity changed from a selected terminal to a selected Chat tab, preserving the existing Claude tab. A real first installation downloaded pinned server 1.3.0; sending hello settled promptly with one signed-out notice, no displayed browser URL, and no duplicate agent-exited error. The PR body has the before/after screenshots; only the baseline scratch path was blacked out. No Google sign-in or real user profile was used.

Custom default-tab/setup seeding was not exercised live: the hidden-window New Workspace action stalled in the driver. Source parity was verified; it follows the same setup/default/issue handoff as other chat agents. Windows UI QA was blocked, because the rig hit its console-allocation limit and its fallback agent override was unsupported; refusal is verified by source/tests, not a rendered Windows run. Signed-in, floating-window and Linux cold-start behavior remain untested live.

Deferred to separate work: offering managed chat without an installed terminal CLI; shared runtime single-flight installation and damaged-folder repair; generic floating-workspace activation handling. Native sign-in remains in the later sign-in PRs. Linux's roughly 1 GiB extraction has a 120-second budget, but slow-disk behavior was not measured. No merge or synchronization with main was performed.

@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-7-signin-prompt branch from eeecb2d to e73668c Compare October 14, 2026 17:32
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from 7e7d134 to 7ebb0e6 Compare October 14, 2026 18:28
@brennanb2025
brennanb2025 changed the base branch from brennanb2025/agy-chat-7-signin-prompt to brennanb2025/agy-chat-6-permission-mode October 14, 2026 18:30
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 411d720 to f05f141 Compare October 15, 2026 08:35
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from 7ebb0e6 to e6dddea Compare October 15, 2026 08:35
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from f05f141 to a341356 Compare October 15, 2026 08:39
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch 3 times, most recently from 440b90c to 4a5db36 Compare October 15, 2026 10:02
@OrcaWin

OrcaWin commented Oct 15, 2026

Copy link
Copy Markdown
Collaborator

QA screenshots for the explicit Antigravity install (M4Air, dev build of 4a5db36, throwaway profile, CDP only).

New Antigravity chat is blocked until installed (111.5 MB download)
new chat blocked

Downloading, started from the chat, shown in the chat and in Settings > Chat > Providers
downloading in chat
downloading in settings

Cancelled from Settings → both surfaces show "Installation cancelled." + Retry. "Cancelling…" with the button disabled rendered in both at once, but only for ~50 ms (MutationObserver log: click → settled in 216 ms), too brief to screenshot.
cancelled in settings
cancelled in chat

Installed: Settings shows Installed. + Reinstall, no Remove control. The chat gets its composer back (8.3 s from Retry, ~13 MB/s).
installed in settings
chat usable after install

"hello" with nobody signed in shows the sign-in notice, not install text. The chat stays usable during Reinstall.
signed out
usable during reinstall

Unreachable proxy: Retry is offered, but the error is the raw net::ERR_PROXY_CONNECTION_FAILED
failed in chat

@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from a341356 to 5b1bd65 Compare October 15, 2026 13:34
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from 4a5db36 to e15c614 Compare October 15, 2026 13:34
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 5b1bd65 to f9b8f4c Compare October 15, 2026 13:40
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from e15c614 to e10a8d3 Compare October 15, 2026 13:40
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from f9b8f4c to 4abb999 Compare October 15, 2026 13:57
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from e10a8d3 to 5fc77e8 Compare October 15, 2026 13:57
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 4abb999 to 85ab473 Compare October 15, 2026 14:24
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch 3 times, most recently from f95fef4 to 9d3ee05 Compare October 15, 2026 15:08
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 85ab473 to 2162aaa Compare October 15, 2026 16:03
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from 9d3ee05 to 52d774d Compare October 15, 2026 16:03
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 2162aaa to e6d2b82 Compare October 15, 2026 16:30
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from 52d774d to de5a9bd Compare October 15, 2026 16:30
@brennanb2025
brennanb2025 marked this pull request as ready for review October 15, 2026 17:09
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch 2 times, most recently from 5abca6a to f0862ad Compare October 17, 2026 00:43
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch from 5707583 to 2d88838 Compare October 17, 2026 00:43
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from f0862ad to a4510cc Compare October 17, 2026 01:07
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-6-permission-mode branch 2 times, most recently from 49fe731 to d57b9b2 Compare October 17, 2026 08:01
@brennanb2025
brennanb2025 changed the base branch from brennanb2025/agy-chat-6-permission-mode to main October 17, 2026 08:17
With the experimental chat setting on, Antigravity chats run Google's
Antigravity ACP server, which Orca installs only when the person clicks
Install: a pinned 1.3.0 release whose archive and both executables are
verified by hash and size (macOS arm64/x64, Linux x64/arm64). A start
never downloads it.

Each host keeps one private sign-in folder for these chats under Orca's
data folder, made owner-only before every start; the server keeps its
sign-in there as a file. A chat signs in with the server's Google method
through the existing auth-required retry; with no saved sign-in the
server's sign-in prompt ends the chat signed out. The Agent Permissions
setting maps to the server's own mode, and a question the server asks
shows as a question that takes one of its choices, never auto-answered.
A chat reopens its session with session/resume.
…per chat

Each mode maps to the server's own (default, auto_edit, yolo). No Approve for me:
the server has no automatic reviewer. Accept edits gets its own description,
since auto_edit approves file edit tools only.
…its download size

The Antigravity chat server installs only when the person clicks Install. Besides
the chat's own Install card, Settings > Chat gains a Providers section and the
Antigravity accounts section gains the same install row for its host (never a WSL
distro), both following the host's install status. A host now reports its pinned
release's download size, so an idle row reads "111.5 MB download." instead of
"Not installed.".
…w Always warning, and an install that proves the server runs

- A command's line and output now show in Orca's command row: the dialect maps the server's
  command_line/combinedOutput/exitCode to the shared shape and drops its duplicate output copy.
- The server's own /logout is hidden from the command list, and a message that is only /logout is
  refused before it is sent: it would sign out every Antigravity chat on this host outside Orca's
  sign-in gate. Dialects can now name withheld commands; the refusal has its own plain sentence.
- The server's prompt-injection warning on "Allow Always (risky)" is shown on the approval card.
- Install starts the unpacked server once under a throwaway home, asks initialize only, and keeps
  the copy only if it answers as the pinned release and its process is proven stopped.
- The server runs with PYTHONUNBUFFERED=1; its environment lives beside its runtime.
- The permission mode option is found by its category, so the spec no longer names it.
…limit

Main's file already sat at the limit, so the account-home services pass inline instead of
through a variable.
@brennanb2025
brennanb2025 force-pushed the brennanb2025/agy-chat-8-antigravity-row branch from a4510cc to 62784fe Compare October 17, 2026 08:23
…ission launches

Main now starts ACP chats without full access and applies the chat's own mode after
start, as the Grok and OpenCode snapshots already record.
@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 6896d000-6367-4603-af6f-c7b60801022c
📥 Commits

Reviewing files that changed from the base of the PR and between 0ba5ccc and 75dc90d.

⛔ Files ignored due to path filters: 1
  • src/main/runtime/__snapshots__/structured-agent-launch-parity.test.ts.snap is excluded by !**/*.snap
📒 Files selected for processing: 56
  • src/main/acp/acp-account-binding.ts
  • src/main/acp/acp-conversation-copy.test.ts
  • src/main/acp/acp-conversation-copy.ts
  • src/main/acp/acp-dialects/acp-dialect.ts
  • src/main/acp/acp-dialects/antigravity-dialect.ts
  • src/main/acp/acp-launch-specs.ts
  • src/main/acp/acp-prompt-content.ts
  • src/main/acp/acp-scripted-agent.test-support.ts
  • src/main/acp/acp-structured-acquire.ts
  • src/main/acp/acp-structured-adapter.test-support.ts
  • src/main/acp/acp-structured-antigravity.test.ts
  • src/main/acp/acp-structured-compaction.test.ts
  • src/main/acp/acp-structured-host.test-support.ts
  • src/main/acp/acp-structured-launch-preparation.ts
  • src/main/acp/acp-structured-launch-resolution.ts
  • src/main/acp/acp-structured-location-support.ts
  • src/main/acp/acp-structured-options.ts
  • src/main/acp/acp-structured-session-adapter.ts
  • src/main/acp/acp-timeline-requests.ts
  • src/main/acp/fixtures/antigravity-v1-question.jsonl
  • src/main/antigravity/antigravity-acp-environment.ts
  • src/main/antigravity/antigravity-acp-runtime-probe.test.ts
  • src/main/antigravity/antigravity-acp-runtime-probe.ts
  • src/main/antigravity/antigravity-acp-runtime.ts
  • src/main/codex-accounts/runtime-home-catalog-account-key.test.ts
  • src/main/node-runtime/managed-runtime-installation.ts
  • src/main/runtime/orca-runtime-structured-agent-registration-seam.test.ts
  • src/main/runtime/session-tabs/structured-session-create-support.ts
  • src/main/runtime/structured-agent-create-support-opencode-rig.test.ts
  • src/main/runtime/structured-agent-launch-parity.test.ts
  • src/main/runtime/structured-agent-model-catalog-discovery.test.ts
  • src/main/runtime/structured-agent-runtime-metadata.test.ts
  • src/main/runtime/structured-agent-runtime-metadata.ts
  • src/main/runtime/structured-agent-runtime-registration-types.ts
  • src/main/runtime/structured-agent-runtime-registrations-acp.test.ts
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.test.ts
  • src/renderer/src/components/managed-runtime/managed-runtime-install-view.ts
  • src/renderer/src/components/native-chat/agent-session-failure-words-text.ts
  • src/renderer/src/components/native-chat/native-chat-permission-mode-labels.ts
  • src/renderer/src/components/settings/AntigravityAccountsSection.tsx
  • src/renderer/src/components/settings/NativeChatProvidersSetting.tsx
  • src/renderer/src/i18n/en-runtime-required.json
  • src/renderer/src/i18n/locales/en.json
  • src/renderer/src/i18n/locales/es.json
  • src/renderer/src/i18n/locales/fr.json
  • src/renderer/src/i18n/locales/ja.json
  • src/renderer/src/i18n/locales/ko.json
  • src/renderer/src/i18n/locales/zh.json
  • src/shared/agent-chat-permission-mode.ts
  • src/shared/agent-session-failure-copy.ts
  • src/shared/agent-session-failure-words.ts
  • src/shared/agent-session-failure.ts
  • src/shared/agent-session-sign-in.ts
  • src/shared/managed-runtime-install.ts
  • src/shared/structured-agent-session-dispatch-rejection.ts
  • src/shared/structured-agent-session-permission-option.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 1 remain after this review.

📝 Walkthrough

The pull request adds Antigravity as an ACP agent with a pinned managed runtime, platform-specific launch settings, and account-home preparation. ACP handling now supports Antigravity permission questions, warnings, tool-update normalization, and resume preferences. It also adds handling for withheld commands, runtime availability checks, and shared Antigravity permission and failure mappings. Settings now show managed-runtime installation controls and download sizes, with related translations.

Priority: ➖ Normal

Merge Risk: ⚪ Minimal · up to 75dc9

No confirmed issue remains that should block merging after normal checks.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 56.52% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 46 functions across 48 files. (8 skipped:… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly identifies the primary change: adding Antigravity to the Chat UI through its ACP server.
Description check Passed The description is complete and covers the required sections, including user impact, implementation details, rationale, visual proof, testing, platform limitations, and checklist status. The empty Rev…
Full details: Description check

Explanation

The description is complete and covers the required sections, including user impact, implementation details, rationale, visual proof, testing, platform limitations, and checklist status. The empty Review section and unchecked screenshot checklist do not prevent approval because the required visual proof is included.

Full details: Docstring Coverage

Explanation

Docstring coverage is 56.52% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 46 functions across 48 files. (8 skipped: 8 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brennanb2025
brennanb2025 merged commit 2117d77 into main Oct 17, 2026
51 checks passed
lurunzi added a commit to lurunzi/orca that referenced this pull request Oct 17, 2026
Brings in 10 more upstream commits, including stablyai#28595 (Antigravity chats over
Google's Antigravity ACP server). That server only has builds for macOS and
Linux, so on Windows the fork's agy transcript chat stays the Antigravity chat.

Adaptations:
- The launch pre-flight leaves out a registered agent whose managed program
  has no build for this host, so Antigravity on Windows launches as a
  terminal from the start: its early tab is published again and the
  transcript chat view applies, instead of a structured attempt that the
  host then refuses.
- The transcript chat view follows the per-agent chat switch upstream added
  to Settings > Chat > Providers (isNativeChatDefaultFor), not only the
  global Chat UI switch.

Conflicts: the Codex adapter keeps both readPromptSuggestion (fork) and
heldSends (upstream); subscriber delivery uses upstream's deliveryPort with
the fork's prompt-suggestion checkpoint. structured-session-create-support
shares one hostUnsupported refusal helper to stay under max-lines once
formatted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants