Skip to content

[Feature]: add per-account Gem/Cla quota display for Google Antigravity #1082

Closed

Description

@agentHits

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 fetchAvailableModels endpoint;
  • 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-antigravity is 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 dev quota 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

  1. github-actions commented on Aug 5, 2026

    @github-actions
    Contributor

    Automated translation bookkeeping — detected language: English.

  2. self-assigned this
    on Aug 5, 2026
  3. lidge-jun commented on Aug 6, 2026

    @lidge-jun
    Owner

    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.

  4. agentHits commented on Aug 6, 2026

    @agentHits
    ContributorAuthor

    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.

    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.

  5. Repository owner deleted a comment from agentHits on Aug 6, 2026
  6. Repository owner deleted a comment from agentHits on Aug 6, 2026
  7. Repository owner deleted a comment from agentHits on Aug 6, 2026
  8. Wibias commented on Aug 6, 2026

    @Wibias
    Contributor

    This is not a chatting platform but an issue for a specific problem. If you got another problem open a new Issue for it.

  9. Wibias commented on Aug 7, 2026

    @Wibias
    Contributor

    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.

  10. changed the title [-][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[/+] on Aug 9, 2026
  11. Wibias commented on Aug 16, 2026

    @Wibias
    Contributor

    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.

  12. lidge-jun commented on Aug 19, 2026

    @lidge-jun
    Owner

    리뷰 · 우선순위 63 / 80

    현재 dev에는 Google Antigravity의 프로바이더 단위 Gem/Cla 쿼터 프로브가 있습니다. src/providers/quota.ts는 활성 자격 증명으로 Cloud Code Assist fetchAvailableModels를 호출하고, 모델/쿼터 문자열을 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이 작성했습니다

  13. 56 remaining items

  14. agentHits commented on Aug 31, 2026

    @agentHits
    ContributorAuthor

    @lidge-jun Hello can you write code this PR ?

  15. lidge-jun commented on Sep 1, 2026

    @lidge-jun
    Owner

    Landed on dev via #3213 (squash ef7b3c9cf). Every stored Google Antigravity account now gets its own Gem / Cla rows in ocx account list --quota and /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 stay unavailable, 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.

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

Metadata

Metadata

Assignees

Labels

account-poolOAuth, credentials, Codex pool, quota, failover, plansenhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions