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
- Sign in to Antigravity in T3 Code using a consumer Google account (
oauth-personal, e.g. Google AI Ultra whereusesGcpTos: false) and use Gemini models so both 5-hour and weekly Gemini quotas are partially consumed in Antigravity IDE (Settings -> Models & Usage). - Open
Usage -> Limitsin T3 Code. - Observe how
apps/server/src/provider/antigravityUsageLimits.tsprobesv1internal:retrieveUserQuotaSummaryacross:using the hardcoded header:const ENDPOINTS = [ "https://daily-cloudcode-pa.googleapis.com", "https://cloudcode-pa.googleapis.com", ];
"User-Agent": `antigravity/hub/1.0.0 (aidev_client; os_type=${platform}; arch=${architecture}; cl=963137146)`
Expected behavior
Usage -> Limits should display all 4 Antigravity quota buckets (Gemini · 5-hour, Gemini · Weekly, Claude & GPT (shared) · 5-hour, Claude & GPT (shared) · Weekly) with their real remaining percentages and reset timestamps matching Antigravity IDE (Settings -> Models & Usage), and refresh them when sessions run.
Actual behavior
Two related bugs occur in apps/server/src/provider/antigravityUsageLimits.ts:
daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummarygates theGemini Modelsgroup on the client version inUser-Agent:- When called with
User-Agent: antigravity/hub/1.0.0 (...),https://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummaryomits theGemini Modelsgroup (gemini-5handgemini-weekly) and returns onlyClaude and GPT models(3p-5hand3p-weekly). - Because
windows.length > 0,fetchWindowsonmainstops afterdaily-cloudcode-pa.googleapis.com, soGemini · 5-hourandGemini · Weeklyare completely missing (reported in [Bug]: Antigravity shows token usage only, not limits #16104).
- When called with
- Querying
https://cloudcode-pa.googleapis.com(prod) withantigravity/hub/1.0.0(as in PR fix(usage): show Antigravity Gemini limits when one quota endpoint omits them #20081 or prioritizingcloudcode-pa.googleapis.comfirst) showsGemini · 5-hourandGemini · Weeklypermanently stuck at100% left:- For consumer Antigravity accounts (
usesGcpTos: false), all actual Antigravity traffic runs againstdaily-cloudcode-pa.googleapis.com. https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummaryreturnsgemini-5handgemini-weeklybuckets even forantigravity/hub/1.0.0, but those prod buckets are unused (remainingFraction: 1, i.e.100% leftwith a rolling4h 59m/6d 23hreset) and never reflect real consumer Gemini usage.- Meanwhile, Antigravity IDE's local
language_server(--override_ide_version 2.24.0) sendsUser-Agent: antigravity/hub/2.24.0 (...)tohttps://daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary, which causesdaily-cloudcode-pa.googleapis.comto return bothGemini Models(gemini-weeklyandgemini-5hwith actual liveremainingFractionandresetTime) andClaude and GPT models(3p-weeklyand3p-5h) in a single response.
- For consumer Antigravity accounts (
- Stale cached
usageLimitssnapshot:- Once
~/.t3/caches/antigravity.jsonis populated,managedProvider.ts(publishEnrichedSnapshot) preserves the oldercurrent.usageLimitssnapshot instead of refreshing when sessions run.
- Once
Impact
Major degradation or frequent failure
Version or commit
0.1.1-nightly.20261018.3285 (main)
Environment
macOS Darwin arm64, T3 Code Nightly 0.1.1-nightly.20261018.3285, Antigravity (oauth-personal, Google AI Ultra)
Logs or stack traces
# Same consumer OAuth token against daily-cloudcode-pa.googleapis.com/v1internal:retrieveUserQuotaSummary:
# 1. With T3 Code's current header:
# User-Agent: antigravity/hub/1.0.0 (aidev_client; os_type=darwin; arch=arm64; cl=963137146)
{
"groups": [
{
"displayName": "Claude and GPT models",
"buckets": [
{ "bucketId": "3p-weekly", "window": "weekly", "remainingFraction": 1, "resetTime": "2026-10-25T06:22:04Z" },
{ "bucketId": "3p-5h", "window": "5h", "remainingFraction": 1, "resetTime": "2026-10-18T11:22:04Z" }
]
}
]
}
# 2. With Antigravity IDE's current version in User-Agent:
# User-Agent: antigravity/hub/2.24.0 (aidev_client; os_type=darwin; arch=arm64; cl=963137146)
{
"groups": [
{
"displayName": "Gemini Models",
"buckets": [
{ "bucketId": "gemini-weekly", "window": "weekly", "remainingFraction": 0.85039836, "resetTime": "2026-10-24T23:43:50Z" },
{ "bucketId": "gemini-5h", "window": "5h", "remainingFraction": 0.74666244, "resetTime": "2026-10-18T09:43:50Z" }
]
},
{
"displayName": "Claude and GPT models",
"buckets": [
{ "bucketId": "3p-weekly", "window": "weekly", "remainingFraction": 1, "resetTime": "2026-10-25T06:22:04Z" },
{ "bucketId": "3p-5h", "window": "5h", "remainingFraction": 1, "resetTime": "2026-10-18T11:22:04Z" }
]
}
]
}Workaround
Updating the probe User-Agent in apps/server/src/provider/antigravityUsageLimits.ts from antigravity/hub/1.0.0 to antigravity/hub/2.24.0 (while keeping https://daily-cloudcode-pa.googleapis.com first in ENDPOINTS, or merging across ENDPOINTS) immediately restores live gemini-5h and gemini-weekly usage and reset times on daily-cloudcode-pa.googleapis.com without falling back to the unconsumed 100% left prod buckets on cloudcode-pa.googleapis.com.
Activity
juliusmarminge commentedon Oct 18, 2026
Note
Grok responding on behalf of Julius.
Confirmed on main: the quota probe sends a fixed
antigravity/hub/1.0.0User-Agent, stops at the first endpoint that returns any windows, andpublishEnrichedSnapshotkeeps the previously published usage limits when a session publishes a new snapshot. We can't check the server side from the repo, but your responses explain the missing Gemini rows. Open PR #21020 already covers all three parts: it sends a 2.24.0 User-Agent, resolves the consumer quota project, and lets fresh probes replace stale limits. I've linked this issue to that PR. #20081 only merges both endpoints with the old User-Agent, which would show the unused prod buckets you describe.DeepitMagee commentedon Oct 20, 2026
I ran into this same bug in a separate client and captured the live requests from Antigravity IDE's
language_servervia a local proxy to see what it actually sends.A few findings from testing one variable at a time:
User-Agentversion (2.24.0) matters: The IDE sendsPOST /v1internal:retrieveUserQuotaSummarytodaily-cloudcode-pa.googleapis.comwith{"project":"aicode-consumers"}andUser-Agent: antigravity/hub/2.24.0 (...). Changinghub/1.0.0tohub/2.24.0immediately returns the missingGemini Modelsgroup (gemini-5handgemini-weekly). Thecl=...build number in theUser-Agenthas no effect.acp_token.jsonwithproject_id: "aicode-consumers") and the IDE's own token (jetski-standalone-oauth-token) returned identical responses, despite having different OAuth scopes.daily-cloudcode-pamust stay ahead ofcloudcode-pa(prod): Even withhub/2.24.0, the prod host (cloudcode-pa.googleapis.com) returns every bucket stuck atremainingFraction: 1(100% left) with a rolling reset time.daily-cloudcode-pahas to be queried first so prod is only used as a fallback.daily-cloudcode-pawithhub/1.0.0still returnsgemini-argon-wtu-weeklyalongside3p-5hand3p-weekly(3 buckets total rather than 2), whereashub/2.24.0returns all 5.markshan00 commentedon Oct 21, 2026
Live verification of the identities in #21361 and #21020 from a second consumer account.
Setup: macOS arm64, T3 Code v0.1.1 stable, Antigravity ACP runtime 1.3.0 installed by T3, personal Google sign-in. Every request used the same OAuth credential and the same
projectbody fromacp_token.json; onlyUser-Agentchanged. All requests ran concurrently at 2026-10-21 10:16 UTC.retrieveUserQuotaSummary:remainingFraction3p-*antigravity/hub/1.0.0 (aidev_client; …; cl=963137146)(current main)antigravity/acp/1.3.0 (aidev_client; os_type=darwin; arch=arm64; host_path=t3-code/0.1.0; proxy_client=antigravity/sdk)os_type=win32; arch=amd64os_type=linux; arch=amd64antigravity/hub/2.24.0 (aidev_client; …)(#21020 / this issue)So #21361's identity, as it would be built on each platform (it maps
x64toamd64and keepswin32), returns the consumed Gemini quota on this account. The prod host still reports every bucket as unused, so main's most-used merge keeps the daily values.An hour earlier (09:03 UTC) I compared against the native Antigravity app, which showed Gemini 5-hour 90% left and weekly 98% left. At the same time the daily summary returned 0.9033314 / 0.97561556 with
antigravity/hub/2.9.1 darwin/arm64, while the current main identity omitted the Gemini group. With the old identity,fetchAvailableModelson the daily host already carried the consumed fraction in per-modelquotaInfo.Not checked: business/Workspace accounts, accounts with an Argon quota (this account returned no
gemini-argon-*bucket), and the rendered T3 UI with #21361 applied. No credentials, project IDs or account identifiers are included.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 #18723. Please test on the nightly built from main on 2026-10-21, or on the next stable release. One part is still open: Gemini quota readings still use the 1.0.0 User-Agent and may be missing or show unused production buckets. If that part still matters to you, please open a new issue for that part only.