Repository navigation
[Feature]: add per-account Gem/Cla quota display for Google Antigravity #1082
Description
Area
Authentication and account pool / provider quota UI
Current status
This request is partially implemented.
Current dev already contains a provider-level Google Antigravity quota probe.
For the currently active Antigravity credential, OpenCodex:
- calls the authenticated Cloud Code Assist
fetchAvailableModelsendpoint; - classifies returned quota information into Gemini (
Gem) and Claude (Cla) families; - calculates used percentages;
- preserves reset timestamps when the upstream provides them;
- publishes the results through the normal provider quota surface.
Conceptually, the current result can contain:
Gem
used %
reset time
Cla
used %
reset time
The remaining gap is per-account quota visibility for users with multiple Google Antigravity accounts.
What remains missing
OpenCodex has a separate per-account quota path used by the account-management UI/API.
At present that path supports:
anthropic
but not:
google-antigravity
As a result, the active Antigravity provider can have useful Gem / Cla quota data while individual accounts in the Antigravity account list still lack their own quota rows.
This issue now tracks that missing per-account integration only.
Generic account selection, routing policy, automatic failover, and aggregated account-pool architecture belong to their parent issues and should not expand this scope.
Desired behavior
For every stored Google Antigravity account, OpenCodex should be able to fetch that account's own quota using:
- that account's OAuth credential;
- that account's Cloud Code Assist project ID;
- the same quota classification semantics already used by the provider-level Antigravity probe.
The result should be projected through the existing per-account quota contract.
For example:
Google Antigravity accounts
account A
Gem 14% used · resets 20:15
Cla 62% used · resets 18:42
account B
Gem 3% used · resets 20:14
Cla 9% used · resets 18:40
The exact presentation should follow the existing account quota UI.
Implementation boundary
1. Extend per-account quota support
The per-account quota capability should recognize:
google-antigravity
in addition to the providers already supported.
2. Use the selected account's credential
Do not implement the per-account path by calling the current active-provider helper.
Each row must be probed using the credential belonging to that specific account.
Otherwise every account could incorrectly display the active account's quota.
3. Use the account's project ID
The Antigravity quota RPC requires the Cloud Code Assist project associated with the account.
The per-account probe therefore needs the same account-scoped:
access token
projectId
pair.
If an account does not have a usable project ID or valid access token, its quota should be reported as unavailable rather than borrowing another account's state.
4. Reuse the existing Gem / Cla classification
Do not create a second interpretation of Antigravity quota data.
The per-account path should use the same family classification and percentage/reset normalization as the existing provider-level probe.
Expected window labels remain:
Gem
Cla
5. Handle partial upstream data
The upstream may expose:
- both Gem and Cla;
- only Gem;
- only Cla;
- a window without a reset timestamp.
All of those must be accepted.
Missing one family must not make the entire account quota probe fail.
6. Preserve account isolation
Quota cache entries must remain account-scoped.
Switching accounts, refreshing credentials, deleting an account, or replacing its identity must not allow quota data from one Antigravity account to appear under another.
Do not expose:
- refresh tokens;
- access tokens;
- project IDs;
- raw upstream quota payloads;
through the normal Dashboard/API result.
Provider-level behavior
The existing provider-level Antigravity quota path should remain functional.
This issue does not require removing or redesigning it.
The desired end state is:
provider overview
-> current/active Antigravity quota
account management
-> quota for each individual Antigravity account
Both should use the same quota semantics.
Relationship to other issues
#1062
Tracks broader Google Antigravity account-pool and management UX.
This issue remains the focused quota/status-display child.
#695
Tracks generic OAuth account-pool selection/failover architecture.
Automatic account selection and generic failover policy are out of scope here.
#1076
Tracks importing Antigravity accounts.
Account import is separate from displaying quota for accounts that already exist.
Acceptance criteria
- Active/provider-level Antigravity quota probe exists.
- Provider-level probe reports Gemini (
Gem) quota. - Provider-level probe reports Claude (
Cla) quota. - Provider-level quota preserves reset timestamps when available.
-
google-antigravityis supported by the per-account quota path. - Each account is probed with its own access token.
- Each account uses its own Cloud Code Assist
projectId. - Gem and Cla percentages are visible per account.
- Gem and Cla reset times are visible per account when supplied.
- Partial Gem-only / Cla-only responses work.
- A failed account probe does not break other accounts or normal routing.
- Quota cache state cannot cross account identities.
- No credential/project identifiers are exposed in normal API/UI output.
- Focused tests cover two different Antigravity accounts returning different quota values.
Checks
- Current
devquota implementation was re-audited. - Already-delivered provider-level Gem/Cla support is removed from remaining scope.
- The remaining per-account boundary is explicitly identified.
- Per-account Google Antigravity quota support implemented.
Activity
github-actions commentedon Aug 5, 2026
Automated translation bookkeeping — detected language: English.
lidge-jun commentedon Aug 6, 2026
Keeping this open — quota/reset-time display is a good fit once the per-account data path exists. The related campaign PRs were closed with technical feedback (see #1084/#1083 threads): the blocker is that current drafts render UI over provider-aggregated data with no per-account runtime consumer. A slice that wires the quota probe data path first, then the display, is welcome.
agentHits commentedon Aug 6, 2026
I probably won't be able to write a PR correctly. I'd be grateful if you or other participants could take care of this. Let me be the one pitching the ideas, and you, as a professional, implement them.
Wibias commentedon Aug 6, 2026
This is not a chatting platform but an issue for a specific problem. If you got another problem open a new Issue for it.
Wibias commentedon Aug 7, 2026
Keeping this as the focused quota/status-display child of #1062.
Scope here is limited to Gemini/Claude quota usage and reset-time visibility for Google Antigravity. Generic account selection and automatic failover belong to #695; broader Antigravity pool management remains in #1062.
[-][Feature]: Add Gemini (Gem) quota and reset time display in Google Antigravity status check[/-][+][Feature]: add per-account Gem/Cla quota display for Google Antigravity[/+]Wibias commentedon Aug 16, 2026
Triage relationship
Parent umbrella: #1062.
This issue is the focused per-account quota visibility child of the broader Antigravity multi-account program and should remain independently actionable.
lidge-jun commentedon Aug 19, 2026
리뷰 · 우선순위 63 / 80
현재
dev에는 Google Antigravity의 프로바이더 단위 Gem/Cla 쿼터 프로브가 있습니다.src/providers/quota.ts는 활성 자격 증명으로 Cloud Code AssistfetchAvailableModels를 호출하고, 모델/쿼터 문자열을Gem과Cla로 나눕니다. 그 결과는 프로바이더 쿼터 표면에 올라갑니다. 이 이슈가 처음 원했던 가족별 사용량/리셋 시각의 일부는 이미 있습니다.남은 공백은 계정 단위입니다.
supportsPerAccountQuota()는provider === "anthropic"만 참입니다. 계정 관리 UI/API가 쓰는 계정별 경로는 Antigravity를 호출하지 않습니다. 활성 프로바이더에는 Gem/Cla가 보여도, 계정 목록의 각 행은 자기 쿼터 행이 없습니다. 메인테이너가 닫은 초안 PR도 이 데이터 경로 없이 UI만 그린 것이 문제였습니다.이슈가 원하는 것은 저장된 각 Antigravity 계정에 대해 그 계정의 OAuth와 Cloud Code Assist project ID로 같은 분류를 돌리는 것입니다. 활성 프로바이더 헬퍼를 재호출하면 모든 행이 같은 숫자를 복제합니다. 계정 격리와 알 수 없음/실패를 0%로 바꾸지 않는 위생이 여기 핵심입니다.
Windows/서비스보다 프로바이더 호환과 풀 UX입니다. #695의 일반 페일오버나 #1062의 풀 관리로 범위를 넓히면 안 됩니다. 이 이슈는 쿼터 가시성 자식으로 남아야 하고, 계정별 프로브가 먼저 있어야 표시가 의미가 있습니다.
해결방안은
supportsPerAccountQuota에google-antigravity를 넣고, 계정 자격 증명/프로젝트로 기존 분류 함수를 재사용하는 것입니다. 실패·미지원은 unknown으로 두고, UI는 그 계약 위에 그립니다. 패치는 추측하지 않으며, 현재 트리의 계정별 허용 목록은 anthropic뿐입니다.이 댓글은 grok-bot이 작성했습니다
56 remaining items
fix(quota): destination-bound account cache, pre-token policy check, …
fix(quota): destination-bound key liveness reconciliation and pinned …
fix(quota): propagate allowPrivateNetwork and isolate account quota a…
feat(quota): add per-account Gem/Cla quota probing for Google Antigra…
fix(review): thread provider baseUrl from caller and skip projectId-l…
fix(quota): seed active account cache from provider report and clamp …
fix(quota): destination-bound account cache, pre-token policy check, …
fix(quota): destination-bound key liveness reconciliation and pinned …
fix(quota): propagate allowPrivateNetwork and isolate account quota a…
agentHits commentedon Aug 31, 2026
@lidge-jun Hello can you write code this PR ?
feat(quota): per-account Gem/Cla quota for Google Antigravity (#1082) (…
lidge-jun commentedon Sep 1, 2026
Landed on
devvia #3213 (squashef7b3c9cf). Every stored Google Antigravity account now gets its ownGem/Clarows inocx account list --quotaand/api/oauth/accounts?quota=1, probed with that account's own credential and project id using the same classification as the provider-level probe. Unknown or failed probes stayunavailable, never 0%. The per-account probe always targets Google's Cloud Code Assist host over the pinned outbound transport, which is what kept the cache identity and credential boundary simple. Design credit to @chilung-cgu's #2123 for the account loop and token-refresh hygiene.feat(quota): per-account Gem/Cla quota for Google Antigravity (lidge-…
feat(quota): per-account Gem/Cla quota for Google Antigravity (lidge-…