# \[macOS\] Sign-in never completes on 2.19.1: OAuth callback answered but token never persisted (with controlled experiments)

**URL:** <https://discuss.ai.google.dev/t/macos-sign-in-never-completes-on-2-19-1-oauth-callback-answered-but-token-never-persisted-with-controlled-experiments/187099>\
**Category:** Google Antigravity\
**Tags:** feedback\
**Created:** [October 6, 2026, 2:32am UTC](https://discuss.ai.google.dev/t/macos-sign-in-never-completes-on-2-19-1-oauth-callback-answered-but-token-never-persisted-with-controlled-experiments/187099 "2026-10-06T02:32:24Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ok\_saw](https://d1dlmcr85iqnpo.cloudfront.net/user_avatar/discuss.ai.google.dev/ok_saw/32/155084_2.png) [@Ok\_saw](https://discuss.ai.google.dev/u/Ok_saw)\
**Post date:** [October 6, 2026, 2:32am UTC](https://discuss.ai.google.dev/t/macos-sign-in-never-completes-on-2-19-1-oauth-callback-answered-but-token-never-persisted-with-controlled-experiments/187099/1 "2026-10-06T02:32:24Z")

</div>

**Environment:** Antigravity 2.19.1 (com.google.antigravity, build 6046815158665216) / macOS 26.6.2 arm64 / Chrome as default browser / in-app updater reports “up to date”.

**Symptom:** Browser OAuth completes (“You have successfully authenticated” → antigravity.google/auth-success), but the desktop app returns to the **Welcome/Sign-in screen every time**. Reproduced 10+ times over two days.

## What we verified locally

- The language server generates `redirect_uri=http://localhost:<random>/auth/callback` (PKCE S256) and binds an ephemeral listener on that exact port while sign-in is pending (confirmed via `lsof`).
- When the user authorizes, the browser **is answered** and redirected to the success page — yet the token is never persisted (`~/.gemini/jetski-standalone-oauth-token` mtime unchanged, no keychain item), and `language_server.log` contains **zero** lines about the exchange: no success, no failure, not even the `state mismatch` message that exists in the binary.
- In exactly one attempt (of 10+), the exchange **did** complete server-side: token written, `refresh_token` valid, LS logs `Auth succeeded` on every startup, `loadCodeAssist` succeeds — **and the UI still never leaves the Welcome screen** , across multiple app restarts.
- In the shipped UI bundle, the only `window.deepLink.onDeepLink` registration matches exclusively `hostname === "teleport" && pathname === "/ai_studio"`. The `antigravity://oauth-success` URL emitted by the auth-success page is parsed and **silently ignored**.
- Account: personal `@gmail.com` (no `hd` claim), satisfying the FAQ’s account-type requirement.

## Controlled experiments (ruling out local causes)

1. **Keychain experiment:** temporarily set `login.keychain-db` as first/default keychain (verified via `security list-keychains`), performed a full sign-in, restored afterwards. Polled `security find-generic-password -s "Antigravity Safe Storage"` every 6s: **the app never attempts to create its `<App> Safe Storage` entry at all** (other Electron apps on this machine all have theirs). No `errSecDecode`/decrypt errors in any log.
2. **Fresh-profile experiment:** backed up and deleted the whole Electron profile (`~/Library/Application Support/Antigravity/`: Cookies, Local Storage, Session Storage, Network Persistent State), relaunched into a pristine profile with a fresh LS instance. Two new sign-in attempts (09:58:10 and 09:58:27 local, visible as `SetEnableBusinessLogin called with enable: true` bursts): authorization completed again, **still no token, zero exchange log lines, back to Welcome**.
3. **Version verification:** the official auto-updater service self-reports “Stable Version: 2.19.1. Rolled out to 100%”; no beta/insider channel exists; all sign-in fixes in the changelog (2.16.0, 2.18.1) predate 2.19.1.

## Surviving explanation

The renderer’s Login state machine never receives the completion signal:

1. the UI bundle’s deep-link path for `antigravity://oauth-success` is dead (teleport-only filter), and
2. the LS-side `auth/callback` handler is silent on **both** its success and failure branches, so the Login RPC never resolves and nothing is diagnosable from logs.

## Requests

- Add diagnostics/logging to the `auth/callback` handler (at minimum: log exchange success/failure with reason).
- Restore/handle the `antigravity://oauth-success` deep-link path in the UI bundle.
- Also reproducible: the app **hangs on quit** (“Waiting for migrations to complete”, requires SIGKILL) — possibly related to the same shutdown path.

Happy to provide full `language_server.log` / `main.log` excerpts (secrets redacted) if useful.

_(Filed on behalf of an affected user; all local experiments were run with the user’s consent, and everything irreversible was backed up and restored.)_

---

<div class="post-metadata">

**Author:** ![chunduriv](https://avatars.discourse-cdn.com/v4/letter/c/bbe5ce/32.png) [@chunduriv](https://discuss.ai.google.dev/u/chunduriv)\
**Post date:** [October 9, 2026, 12:37am UTC](https://discuss.ai.google.dev/t/macos-sign-in-never-completes-on-2-19-1-oauth-callback-answered-but-token-never-persisted-with-controlled-experiments/187099/2 "2026-10-09T00:37:39Z")

</div>

Hi @Ok_saw,

Welcome to the Forum,

Thank you for the report. Your controlled experiments make it clear that this isn’t caused by keychain, profile or account-type issues on your side. To help us narrow this down the issue further, could you check the following:

- Antigravity v2.21.1 was released on October 7. If the in-app updater still shows 2.19.1, please install v2.21.1 or latest release from the [Download page](https://antigravity.google/releases/) and try signing in again.
- During sign-in, did you choose the personal Google account option or Business account? Your description mentions `SetEnableBusinessLogin` with `enable: true`, so we’d like to confirm which flow was used.
- Does signing in with the same account in the Antigravity CLI succeed?
- If possible, please submit an in-app bug report from the sign-in screen with the `language_server.log` and `main.log` excerpts you mentioned, covering one sign-in attempt and one hang on quit.
