
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
opencode-antigravity-auth
Advanced tools
Google Antigravity IDE OAuth auth plugin for Opencode - access Gemini 3 Pro and Claude 4.6 using Google credentials
Enable Opencode to authenticate against Antigravity (Google's IDE) via OAuth so you can use Antigravity rate limits and access models like gemini-3-pro and claude-opus-4-6-thinking with your Google credentials.
[!CAUTION] Using this plugin may violate Google's Terms of Service. A small number of users have reported their Google accounts being banned or shadow-banned (restricted access without explicit notification).
High-risk scenarios:
- 🚨 Fresh Google accounts have a very high chance of getting banned
- 🚨 New accounts with Pro/Ultra subscriptions are frequently flagged and banned
By using this plugin, you acknowledge:
- This is an unofficial tool not endorsed by Google
- Your account may be suspended or permanently banned
- You assume all risks associated with using this plugin
Recommendation: Use an established Google account that you don't rely on for critical services. Avoid creating new accounts specifically for this plugin.
Option A: Let an LLM do it
Paste this into any LLM agent (Claude Code, OpenCode, Cursor, etc.):
Install the opencode-antigravity-auth plugin and add the Antigravity model definitions to ~/.config/opencode/opencode.json by following: https://raw.githubusercontent.com/NoeFabris/opencode-antigravity-auth/dev/README.md
Option B: Manual setup
Add the plugin to ~/.config/opencode/opencode.json:
{
"plugin": ["opencode-antigravity-auth@latest"]
}
Want bleeding-edge features? Use
opencode-antigravity-auth@betainstead.
Login with your Google account:
opencode auth login
Add models — choose one:
opencode auth login → select "Configure models in opencode.json" (auto-configures all models)Use it:
opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max
Edit the OpenCode configuration file at ~/.config/opencode/opencode.json
Note: This path works on all platforms. On Windows,
~resolves to your user home directory (e.g.,C:\Users\YourName).
Add the plugin to the plugin array
Add the model definitions from the Full models configuration section
Set provider to "google" and choose a model
opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max
Antigravity quota (default routing for Claude and Gemini):
| Model | Variants | Notes |
|---|---|---|
antigravity-gemini-3-pro | low, high | Gemini 3 Pro with thinking |
antigravity-gemini-3.1-pro | low, high | Gemini 3.1 Pro with thinking (rollout-dependent) |
antigravity-gemini-3-flash | minimal, low, medium, high | Gemini 3 Flash with thinking |
antigravity-claude-sonnet-4-6 | — | Claude Sonnet 4.6 |
antigravity-claude-opus-4-6-thinking | low, max | Claude Opus 4.6 with extended thinking |
Gemini CLI quota (separate from Antigravity; used when cli_first is true or as fallback):
| Model | Notes |
|---|---|
gemini-2.5-flash | Gemini 2.5 Flash |
gemini-2.5-pro | Gemini 2.5 Pro |
gemini-3-flash-preview | Gemini 3 Flash (preview) |
gemini-3-pro-preview | Gemini 3 Pro (preview) |
gemini-3.1-pro-preview | Gemini 3.1 Pro (preview, rollout-dependent) |
gemini-3.1-pro-preview-customtools | Gemini 3.1 Pro Preview Custom Tools (preview, rollout-dependent) |
Routing Behavior:
- Antigravity-first (default): Gemini models use Antigravity quota across accounts.
- CLI-first (
cli_first: true): Gemini models use Gemini CLI quota first.- When a Gemini quota pool is exhausted, the plugin automatically falls back to the other pool.
- Claude and image models always use Antigravity. Model names are automatically transformed for the target API (e.g.,
antigravity-gemini-3-flash→gemini-3-flash-previewfor CLI).
Using variants:
opencode run "Hello" --model=google/antigravity-claude-opus-4-6-thinking --variant=max
For details on variant configuration and thinking levels, see docs/MODEL-VARIANTS.md.
Add this to your ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-antigravity-auth@latest"],
"provider": {
"google": {
"models": {
"antigravity-gemini-3-pro": {
"name": "Gemini 3 Pro (Antigravity)",
"limit": { "context": 1048576, "output": 65535 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
"variants": {
"low": { "thinkingLevel": "low" },
"high": { "thinkingLevel": "high" }
}
},
"antigravity-gemini-3.1-pro": {
"name": "Gemini 3.1 Pro (Antigravity)",
"limit": { "context": 1048576, "output": 65535 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
"variants": {
"low": { "thinkingLevel": "low" },
"high": { "thinkingLevel": "high" }
}
},
"antigravity-gemini-3-flash": {
"name": "Gemini 3 Flash (Antigravity)",
"limit": { "context": 1048576, "output": 65536 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
"variants": {
"minimal": { "thinkingLevel": "minimal" },
"low": { "thinkingLevel": "low" },
"medium": { "thinkingLevel": "medium" },
"high": { "thinkingLevel": "high" }
}
},
"antigravity-claude-sonnet-4-6": {
"name": "Claude Sonnet 4.6 (Antigravity)",
"limit": { "context": 200000, "output": 64000 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"antigravity-claude-opus-4-6-thinking": {
"name": "Claude Opus 4.6 Thinking (Antigravity)",
"limit": { "context": 200000, "output": 64000 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] },
"variants": {
"low": { "thinkingConfig": { "thinkingBudget": 8192 } },
"max": { "thinkingConfig": { "thinkingBudget": 32768 } }
}
},
"gemini-2.5-flash": {
"name": "Gemini 2.5 Flash (Gemini CLI)",
"limit": { "context": 1048576, "output": 65536 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"gemini-2.5-pro": {
"name": "Gemini 2.5 Pro (Gemini CLI)",
"limit": { "context": 1048576, "output": 65536 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"gemini-3-flash-preview": {
"name": "Gemini 3 Flash Preview (Gemini CLI)",
"limit": { "context": 1048576, "output": 65536 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"gemini-3-pro-preview": {
"name": "Gemini 3 Pro Preview (Gemini CLI)",
"limit": { "context": 1048576, "output": 65535 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"gemini-3.1-pro-preview": {
"name": "Gemini 3.1 Pro Preview (Gemini CLI)",
"limit": { "context": 1048576, "output": 65535 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
},
"gemini-3.1-pro-preview-customtools": {
"name": "Gemini 3.1 Pro Preview Custom Tools (Gemini CLI)",
"limit": { "context": 1048576, "output": 65535 },
"modalities": { "input": ["text", "image", "pdf"], "output": ["text"] }
}
}
}
}
}
Backward Compatibility: Legacy model names with
antigravity-prefix (e.g.,antigravity-gemini-3-flash) still work. The plugin automatically handles model name transformation for both Antigravity and Gemini CLI APIs.
Add multiple Google accounts for higher combined quotas. The plugin automatically rotates between accounts when one is rate-limited.
opencode auth login # Run again to add more accounts
Account management options (via opencode auth login):
For details on load balancing, dual quota pools, and account storage, see docs/MULTI-ACCOUNT.md.
Quick Reset: Most issues can be resolved by deleting
~/.config/opencode/antigravity-accounts.jsonand runningopencode auth loginagain.
OpenCode uses ~/.config/opencode/ on all platforms including Windows.
| File | Path |
|---|---|
| Main config | ~/.config/opencode/opencode.json |
| Accounts | ~/.config/opencode/antigravity-accounts.json |
| Plugin config | ~/.config/opencode/antigravity.json |
| Debug logs | ~/.config/opencode/antigravity-logs/ |
Windows users:
~resolves to your user home directory (e.g.,C:\Users\YourName). Do NOT use%APPDATA%.
Custom path: Set
OPENCODE_CONFIG_DIRenvironment variable to use a custom location.
Windows migration: If upgrading from plugin v1.3.x or earlier, the plugin will automatically find your existing config in
%APPDATA%\opencode\and use it. New installations use~/.config/opencode/.
If you encounter authentication issues with multiple accounts:
rm ~/.config/opencode/antigravity-accounts.json
opencode auth login
rising-fact-p41fc)Error:
Permission 'cloudaicompanion.companions.generateChat' denied on resource
'//cloudaicompanion.googleapis.com/projects/rising-fact-p41fc/locations/global'
Cause: Plugin falls back to a default project ID when no valid project is found. This works for Antigravity but fails for Gemini CLI models.
Solution:
cloudaicompanion.googleapis.com)projectId to your accounts file:
{
"accounts": [
{
"email": "your@email.com",
"refreshToken": "...",
"projectId": "your-project-id"
}
]
}
Note: Do this for each account in a multi-account setup.
Add this to your google provider config:
{
"provider": {
"google": {
"npm": "@ai-sdk/google",
"models": { ... }
}
}
}
Error:
Invalid JSON payload received. Unknown name "parameters" at 'request.tools[0]'
Causes:
Solutions:
Update to latest beta:
{ "plugin": ["opencode-antigravity-auth@beta"] }
Disable MCP servers one-by-one to find the problematic one
Add npm override:
{ "provider": { "google": { "npm": "@ai-sdk/google" } } }
Some MCP servers have schemas incompatible with Antigravity's strict JSON format.
Common symptom:
Invalid function name must start with a letter or underscore
Sometimes it shows up as:
GenerateContentRequest.tools[0].function_declarations[12].name: Invalid function name must start with a letter or underscore
This usually means an MCP tool name starts with a number (for example, a 1mcp key like 1mcp_*). Rename the MCP key to start with a letter (e.g., gw) or disable that MCP entry for Antigravity models.
Diagnosis:
Cause: Cascade bug in clearExpiredRateLimits() in hybrid mode (fixed in recent beta).
Solutions:
account_selection_strategy to "sticky" in antigravity.jsonIf you encounter errors during a session:
continue to trigger the recovery mechanism/undo to revert to pre-error stateImportant: Disable the built-in Google auth to prevent conflicts:
// ~/.config/opencode/oh-my-opencode.json
{
"google_auth": false,
"agents": {
"frontend-ui-ux-engineer": { "model": "google/antigravity-gemini-3-pro" },
"document-writer": { "model": "google/antigravity-gemini-3-flash" }
}
}
.tmp Files CreatedCause: When account is rate-limited and plugin retries infinitely, it creates many temp files.
Workaround:
rm ~/.config/opencode/*.tmpSymptoms:
Cause: Safari's "HTTPS-Only Mode" blocks http://localhost callback.
Solutions:
Use Chrome or Firefox (easiest): Copy the OAuth URL and paste into a different browser.
Disable HTTPS-Only Mode temporarily:
opencode auth loginmacOS / Linux:
# Find process using the port
lsof -i :51121
# Kill if stale
kill -9 <PID>
# Retry
opencode auth login
Windows (PowerShell):
netstat -ano | findstr :51121
taskkill /PID <PID> /F
opencode auth login
OAuth callback requires browser to reach localhost on the machine running OpenCode.
WSL2:
SSH / Remote:
ssh -L 51121:localhost:51121 user@remote
Docker / Containers:
plugin not pluginsThe correct key is plugin (singular):
{
"plugin": ["opencode-antigravity-auth@beta"]
}
Not "plugins" (will cause "Unrecognized key" error).
When copying antigravity-accounts.json to a new machine:
"plugin": ["opencode-antigravity-auth@beta"]~/.config/opencode/antigravity-accounts.jsonFor details on load balancing, dual quota pools, and account storage, see docs/MULTI-ACCOUNT.md.
DCP creates synthetic assistant messages that lack thinking blocks. List this plugin BEFORE DCP:
{
"plugin": [
"opencode-antigravity-auth@latest",
"@tarquinen/opencode-dcp@latest"
]
}
Disable built-in auth and override agent models in oh-my-opencode.json:
{
"google_auth": false,
"agents": {
"frontend-ui-ux-engineer": { "model": "google/antigravity-gemini-3-pro" },
"document-writer": { "model": "google/antigravity-gemini-3-flash" },
"multimodal-looker": { "model": "google/antigravity-gemini-3-flash" }
}
}
Tip: When spawning parallel subagents, enable
pid_offset_enabled: trueinantigravity.jsonto distribute sessions across accounts.
Create ~/.config/opencode/antigravity.json for optional settings:
{
"$schema": "https://raw.githubusercontent.com/NoeFabris/opencode-antigravity-auth/main/assets/antigravity.schema.json"
}
Most users don't need to configure anything — defaults work well.
| Option | Default | What it does |
|---|---|---|
keep_thinking | false | Preserve Claude's thinking across turns. Warning: enabling may degrade model stability. |
session_recovery | true | Auto-recover from tool errors |
cli_first | false | Route Gemini models to Gemini CLI first (Claude and image models stay on Antigravity). |
| Your Setup | Recommended Config |
|---|---|
| 1 account | "account_selection_strategy": "sticky" |
| 2-5 accounts | Default ("hybrid") works great |
| 5+ accounts | "account_selection_strategy": "round-robin" |
| Parallel agents | Add "pid_offset_enabled": true |
| Option | Default | What it does |
|---|---|---|
soft_quota_threshold_percent | 90 | Skip account when quota usage exceeds this percentage. Prevents Google from penalizing accounts that fully exhaust quota. Set to 100 to disable. |
quota_refresh_interval_minutes | 15 | Background quota refresh interval. After successful API requests, refreshes quota cache if older than this interval. Set to 0 to disable. |
soft_quota_cache_ttl_minutes | "auto" | How long quota cache is considered fresh. "auto" = max(2 × refresh interval, 10 minutes). Set a number (1-120) for fixed TTL. |
How it works: Quota cache is refreshed automatically after API requests (when older than
quota_refresh_interval_minutes) and manually via "Check quotas" inopencode auth login. The threshold check usessoft_quota_cache_ttl_minutesto determine cache freshness - if cache is older, the account is considered "unknown" and allowed (fail-open). When ALL accounts exceed the threshold, the plugin waits for the earliest quota reset time (like rate limit behavior). If wait time exceedsmax_rate_limit_wait_seconds, it errors immediately.
Control how the plugin handles rate limits:
| Option | Default | What it does |
|---|---|---|
scheduling_mode | "cache_first" | "cache_first" = wait for same account (preserves prompt cache), "balance" = switch immediately, "performance_first" = round-robin |
max_cache_first_wait_seconds | 60 | Max seconds to wait in cache_first mode before switching accounts |
failure_ttl_seconds | 3600 | Reset failure count after this many seconds (prevents old failures from permanently penalizing accounts) |
When to use each mode:
| Option | Default | What it does |
|---|---|---|
quiet_mode | false | Hide toast notifications |
debug | false | Enable debug file logging (~/.config/opencode/antigravity-logs/) |
debug_tui | false | Show debug logs in the TUI log panel (independent from debug) |
auto_update | true | Auto-update plugin |
For all options, see docs/CONFIGURATION.md.
Environment variables:
OPENCODE_CONFIG_DIR=/path/to/config opencode # Custom config directory
OPENCODE_ANTIGRAVITY_DEBUG=1 opencode # Enable debug file logging
OPENCODE_ANTIGRAVITY_DEBUG=2 opencode # Verbose debug file logging
OPENCODE_ANTIGRAVITY_DEBUG_TUI=1 opencode # Enable TUI log panel debug output
See the full Troubleshooting Guide for solutions to common issues including:
If this plugin helps you, consider supporting its maintenance:
MIT License. See LICENSE for details.
By using this plugin, you acknowledge:
FAQs
Google Antigravity IDE OAuth auth plugin for Opencode - access Gemini 3 Pro and Claude 4.6 using Google credentials
The npm package opencode-antigravity-auth receives a total of 17,932 weekly downloads. As such, opencode-antigravity-auth popularity was classified as popular.
We found that opencode-antigravity-auth demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.