Skip to content

fix(antigravity): no console window on Windows; say when the runtime check runs out of time - #603

Merged
yaacovcorcos merged 6 commits into
mainfrom
claude/antigravity-console-20261019
Oct 19, 2026
Merged

yaacovcorcos merged 6 commits into
mainfrom
claude/antigravity-console-20261019

Conversation

@yaacovcorcos

@yaacovcorcos yaacovcorcos commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

What Changed

  • No console window on Windows for Antigravity. Agents that own their process tree (ownDetachedProcessGroup) were spawned detached on every platform. A detached Windows process has no console, so every console program it starts gets a new visible one. Antigravity's launcher starts its inner process that way, so each install check (and each Antigravity session) opened a Windows Terminal window titled with a path. In AcpSessionRuntime.ts (marked seam) the agent is now detached only off Windows. Windows already stops the tree with taskkill /T, so it shares Effect's hidden console and the inner process does too.
  • A timed-out runtime check says so. When the post-download check of the Antigravity runtime outlived its 90-second limit, the error fell through to the install's catch-all "Check free disk space and directory access". It now reads: "Antigravity didn't finish starting within 5 minutes while Scient was checking it. Starting it can take a while on some computers. Try again." (marked seam in AntigravityInstallation.ts, one call site).
  • 5 minutes for the agent to start. The install check, model refresh (AntigravityDriver.ts) and sign-out (AntigravityAuth.ts) allowed T3's 90 seconds; each now allows 5 minutes, in a marked line. Sign-in already allowed 5 minutes. The health check stays at 90 seconds, because it never starts the agent.

Why

Seen in the dev app on Windows: a Terminal window opened during Antigravity's install check, and the install then failed with the disk-space message on a machine with 265 GB free.

  • Window: reproduced by starting the installed agy_acp_server.exe detached; Windows Terminal opened for its inner process at the same second. The detach came from Scient's ee950feee5; upstream T3 does not detach on Windows. Effect's Windows kill path uses taskkill /T whether or not the child is detached, and a non-detached child gets windowsHide.
  • Message: the dev-app trace shows the check's agent initialized but never answered initialize before the 90-second timeout. The agent is a self-unpacking bundle: every start unpacks about 7,300 files (320 MiB) into a fresh folder, measured at about 35 s on this machine with no reuse between starts. So a slow check isn't only a loaded machine, and the message doesn't blame one. The owner also reports very slow installs on another Windows machine with free memory, so the steps that wait for a start now allow 5 minutes. The cost is that a start that truly hangs takes longer to report; the install check can still be cancelled.

The other two checks using the same timeout keep upstream's exact text: one falls back to downloading a replacement, and the other reports a publication failure; neither shows the timeout to the user.

Documentation Impact

Documentation impact: Updated — docs/user/providers-antigravity.md (Troubleshooting: 5 minutes, installation checks), UPSTREAM.md

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Tests: AntigravityInstallation.test.ts 51 pass / 1 skipped; AntigravityAuth.test.ts 29; AntigravityProvider.test.ts 23; AntigravityDriver.test.ts 2 pass / 24 skipped on Windows (CI runs them). New cases make the real check hang until its limit, and assert the message, taskkill /PID … /T /F, and that the process tree is stopped before the disposable profile is removed (Windows ARM fixture, three cleanup-error variants). They fail without the seam. The spawn assertion now expects detached only off Windows. Server and provider-acp typecheck clean.

Review: Codex, two rounds. Round 1 found no Windows teardown, console-signal or other-caller regression (Grok and Droid share the launcher) and asked for paired markers, a narrower seam and a teardown-proving test; round 2 approved with no findings. Round 3 (the 5-minute limits) approved with one nit, that the health check doesn't start the agent, which is applied.

Not verified: a live install through the packaged app on Windows with the fix (the window cause and the no-window behaviour of a non-detached spawn were each reproduced natively, but separately).

🤖 Generated with Claude Code

Yaacov and others added 2 commits October 19, 2026 17:01
…check runs out of time

On Windows, agents that own their process tree were spawned detached. A
detached process has no console, so each console program it starts gets a new
visible one; Antigravity's launcher starts its inner process that way, so every
install check and Antigravity session opened a Windows Terminal window. Windows
already stops the tree with taskkill /T, so the agent now stays attached there
and shares Effect's hidden console (marked seam in AcpSessionRuntime).

A runtime check that outlived its 90-second limit fell through to the install's
catch-all "Check free disk space and directory access". It now says the agent
didn't respond in time.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review follow-up. Only the check after a fresh download shows its error;
the other two checks either fall back to a fresh download or report the
publication failure, so they return to upstream's exact text. The remaining
seam is in paired markers, and its message no longer blames a busy machine:
the agent unpacks about 320 MiB on every start, which is slow on quiet
machines too. The timeout is now proven through the real check, including
stopping the process tree before the disposable profile is removed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:M labels Oct 19, 2026
@github-actions

github-actions Bot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 5.6 KiB 5.6 KiB 0 B (0.0%) 6.8 KiB ✅
Codex Thread snapshot wire 4.3 KiB 4.3 KiB 0 B (0.0%) 4.9 KiB ✅
Codex Live turn WebSocket wire 1.3 KiB 1.3 KiB 0 B (0.0%) 2.0 KiB ✅
Codex Live turn WebSocket decoded 26.2 KiB 26.2 KiB 0 B (0.0%) 29.3 KiB ✅
Codex Live turn messages 2 2 0 (0.0%) 8 ✅
Claude Total thread wire 5.6 KiB 5.6 KiB 0 B (0.0%) 6.8 KiB ✅
Claude Thread snapshot wire 4.3 KiB 4.3 KiB 0 B (0.0%) 4.9 KiB ✅
Claude Live turn WebSocket wire 1.3 KiB 1.3 KiB 0 B (0.0%) 2.0 KiB ✅
Claude Live turn WebSocket decoded 26.6 KiB 26.6 KiB 0 B (0.0%) 29.3 KiB ✅
Claude Live turn messages 2 2 0 (0.0%) 8 ✅

Baseline: 15893fa · PR result: 9bcf037 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Full compact HTTP snapshot with live cursor.

  • Codex decoded thread snapshot: 133.1 KiB
  • Claude decoded thread snapshot: 133.4 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

Yaacov and others added 3 commits October 19, 2026 19:25
The official Windows agent unpacks about 7,300 files (320 MiB) into a fresh
folder on every start: about 35 s on a development machine, and longer than
T3's 90-second limits on slower disks, even with free memory. The install
check, health check, model refresh and sign-out now allow 5 minutes, each in
a marked line. Sign-in already allowed 5 minutes. A start that really hangs
now takes longer to report; the install check can still be cancelled.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Review follow-up. The health check never starts the agent (it only resolves
installation metadata), so the unpacking time doesn't apply to it, and a
longer limit would only hold its refresh slot longer. The docs now name the
installation check instead.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e detaching

CI follow-up. The seam keyed the detached flag on `processGroupPlatform`,
which tests set to "win32" on Linux to simulate Windows teardown. On the
Linux runner the agent then lost its own process group, and
AcpAdapterV2's simulated hard teardown could no longer reap its Bash and
sleep children. Whether a detached spawn opens a console window depends on
the OS that spawns it, so the flag now follows `HostProcess.Platform`; real
Windows still spawns attached, and Linux simulations keep the group.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
CI follow-up to 833f0ea. The install harness simulates a platform only
while building the installation; the validation runs in the caller's context,
where the host platform is the real one. On the Linux runner the simulated
Windows ARM cases therefore spawn detached, as intended, but the mock spawner
still expected the simulated platform's value and rejected the spawn. It now
expects the real host's, matching the seam.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@yaacovcorcos
yaacovcorcos added this pull request to the merge queue Oct 19, 2026
@yaacovcorcos
yaacovcorcos removed this pull request from the merge queue due to a manual request Oct 19, 2026
@yaacovcorcos
yaacovcorcos added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit d9f0b39 Oct 19, 2026
74 of 75 checks passed
@yaacovcorcos
yaacovcorcos deleted the claude/antigravity-console-20261019 branch October 19, 2026 21:36
yaacovcorcos pushed a commit to nattikahana/scient-desktop that referenced this pull request Oct 20, 2026
Bring ScientFactory#353 up to current main, including the T3 alignments ScientFactory#593 and ScientFactory#607
(React Compiler migration, browser test project), ScientFactory#596, ScientFactory#601, ScientFactory#603-ScientFactory#606,
ScientFactory#608-ScientFactory#610 and ScientFactory#567.

Composition:
- Workspace writes: ScientFactory#353's mutation service keeps main's known-workspace
  boundary and Git-folder write denial. Every write path (write, create,
  binary write, delete, rename, retained replace/remove, inspect) is
  authorized first, and the mutation lock re-checks protected paths on
  each non-history resolution. Test layers provide KnownWorkspaces.
- Web: conflicted files follow main's React Compiler patterns (no manual
  memo, refs synced in layout effects, render-phase resets, effect
  events, try/finally in module helpers) with ScientFactory#353's behaviour on top,
  including ScientLatexSurface, the PDF reader, the file preview panel,
  save coordinator, workspace refresh, Pandoc tool and source PDF preview.
- Tests moved to main's browser project are ported (createRoot, async
  act); ScientFactory#353's deletions of the Markdown rename button and its seam test
  are kept.
- pnpm-lock.yaml regenerated with pnpm install.

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

size:M vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant