Skip to content

[Bug]: Antigravity unverified Google account passes sign-in, then fails first turn with raw 403 "Verify your account to continue" #16078

Open

Description

@arhammahajan

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

  1. Add/enable an Antigravity provider instance in Settings > Providers.
  2. Sign in with a Gemini/Google account that has not completed Google's phone/QR verification flow.
  3. Sign-in completes with no error (provider shows authenticated, models load).
  4. Start a thread on that instance (e.g. Gemini 3.8 Flash (High)) and send a message (e.g. hello).
  5. Observe the turn failure.

Multiple-account variant: repeat with one Antigravity instance per Google account; each unverified account fails the same way on its first turn.

Expected behavior

T3 Code lets me verify the Google account in place, without requiring an external agy session. Either sign-in / Refresh detects the needs verification state and completes (or guides) the phone/QR verification step for that instance, or the first-turn 403 is converted into an in-app verification action for the affected instance/account. Verifying one instance must not require leaving T3 Code, and must work per instance when multiple accounts are configured.

Actual behavior

Sign-in succeeds silently. The error only appears when a message is sent:

Agent execution error: Agent execution terminated due to error. ("request failed (code 403): Verify your account to continue.")

Impact

Major degradation or frequent failure

Version or commit

main @ cf3e714

Environment

macOS 27 T3 Code 0.0.46-nightly.20261005.2676

Logs or stack traces

Agent execution error: Agent execution terminated due to error. ("request failed (code 403): Verify your account to continue.")

Screenshots, recordings, or supporting files

Screenshot 2026-10-05 at 18.53.21.png

Workaround

Verify the account in a separate agy/Antigravity session outside T3 Code (complete phone QR scan), then retry the thread in T3 Code. Must be repeated per Google account/instance.

Activity

  1. added
    bugSomething is broken or behaving incorrectly.
    needs-triageIssue needs maintainer review and initial categorization.
    on Oct 5, 2026
  2. juliusmarminge commented on Oct 5, 2026

    @juliusmarminge
    Member

    Note

    Grok responding on behalf of Julius.

    Triage

    Thanks for the clear repro and the multi-account note, @arhammahajan. This looks like a real gap, and I don't see a duplicate of it.

    What I found

    • Sign-in is treated as finished once the Antigravity ACP process starts and models load. AntigravityAuth publishes the authenticated state after runtime.start(), and Refresh provider status only restarts that process and republishes the catalog. Neither step asks Google whether the account still has a verification hold.
    • OAuth and the model list can succeed while the first session/prompt cannot, which matches your report: the instance looks signed in, Gemini 3.8 Flash (High) is selectable, and the turn dies with request failed (code 403): Verify your account to continue.
    • That 403 is Google's account-level VALIDATION_REQUIRED response from the Cloud Code API, not a failed T3 sign-in. The standalone agy CLI prints a one-time validation_url that opens the phone/QR page. The ACP server we run (agy_acp_server_1.1.1) only returns the flattened sentence in your screenshot. T3 never sees the URL, and nothing maps this text into a verification action. Sign-in only rewrites SUBSCRIPTION_REQUIRED. Antigravity also has no prompt-failure mapper, unlike Grok and the registry agents.
    • Verifying in a separate agy session and retrying here works because the hold is on the Google account. Each Antigravity instance is its own account, so each one needs that step. T3's sign-in is separate from the CLI on purpose (docs/user/providers-antigravity.md).
    • Provider-failure redaction currently strips query strings, and a validation_url is entirely in the query, so passing the raw error through would not be enough on its own. Bumping the agent (1.3.0 is proposed in feat(server): bump Antigravity ACP agent to 1.3.0 #15746) does not add this by itself.

    Likely fix area

    • Recognize this 403 and surface a clearer message that the Google account still has to be verified in agy, per instance.
    • If a newer ACP server starts returning validation_url, show that URL in-app (and avoid stripping the query string for that path).
    • Longer-term options around an in-app phone/QR flow would need a maintainer call, since this error today does not include the URL and we'd be careful about adding a second Google verification client next to the official agent.

    Workaround until then: verify that Google account in agy, then send the message again in T3. Repeat for each instance.

    A maintainer will decide on the fix direction.

  3. added
    via-triageFiled through npx t3 triage
    and removed
    needs-triageIssue needs maintainer review and initial categorization.
    on Oct 5, 2026
  4. juliusmarminge commented on Oct 22, 2026

    @juliusmarminge
    Member

    Fresh triage on main b5a226e49c: this reports an account-verification failure, not an exploitable vulnerability. Checked all 947 open issues for Antigravity, unverified accounts, account verification and 403 titles; no matching duplicate found. #17508 fails during sign-in, whereas this report completes sign-in and fails on the first turn.

    Reproduction is blocked: this environment has no unverified Google test account, so the reported sign-in → models load → first-turn 403 sequence was not run. No runtime reproduction or fix is claimed. Routing to Julius for account-backed reproduction and review of the per-instance sign-in/verification flow; the issue remains open.

  5. systemsssx commented on Oct 27, 2026

    @systemsssx

    This matches the verification gate layer specifically, and it is worth separating it from sign-in and from the location gate, because each has a different fix:

    1. Sign-in (OAuth) can complete for accounts that later fail -- success here proves nothing about the next two gates.
    2. Account verification returns 403 ... VALIDATION_REQUIRED with a �alidation_url in the response details. Opening that URL in a browser already signed into the same Google account and completing the phone/identity verification clears it. Until then the first real model call fails with exactly "Verify your account to continue".
    3. Only after 1+2 does the per-request location gate (source IP) come into play.

    So the UX fix you describe is right: on the 403, detect VALIDATION_REQUIRED / validation_url, surface it to the user and retry after verification. Tools that did this recently (e.g. magpie v0.1.304, pi-ai-style parsing) ended up doing the same thing.

    I documented this funnel (client eligibility flag -> Google account VALIDATION_REQUIRED -> source-IP location, plus proxy/TUN pitfalls) while debugging my own setup: https://systemsssx.github.io/antigravity-blog/ -- Chinese, my own unofficial notes, corrections welcome.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions