The problem: two models, one terminal
You're deep in a Claude Code session. You just wrote a tricky migration, or a piece of auth logic you don't fully trust, and you want a second model to look at it before it ships. Or you have a boring, well-scoped refactor sitting in the backlog that you'd happily hand off so you can stay focused on the hard part.
Both of those are good instincts. A second model catches things the first one wrote around. A second pair of hands clears the queue faster. The trouble is that acting on either one means leaving Claude Code: open another terminal, copy the diff over, paste the answer back, lose your place. The context switch costs more than the review.
So we built the thing that removes the switch.
What we built
antigravity-plugin-cc is a Claude Code plugin that lets you drive Google's Antigravity CLI from inside Claude Code. Antigravity ships a binary called agy, backed by Gemini 3.5. The plugin wraps it so Gemini 3.5 becomes a tool you call mid-session, the same way you'd call any other slash command. It's the Antigravity analogue of openai/codex-plugin-cc, which inspired the design.
Two commands do most of the work.
/antigravity:review: cross-model code review. Claude writes a diff, then you hand that diff to Gemini 3.5 for a second opinion. The point isn't "is one model better." It's that two models trained differently fail differently. The reviewer wasn't anchored on the same assumptions as the author, so it flags different things. That's the entire value of a second reviewer, human or otherwise.
/antigravity:delegate: offload a self-contained task to Gemini 3.5. A refactor, a migration, a throwaway script. Run it in the foreground when you want to watch, or --background when you'd rather keep typing in Claude Code and check the result later.
The full command set, compactly:
/antigravity:setup: checkagyis installed and signed in/antigravity:delegate: hand a task to Gemini 3.5 (foreground or--background)/antigravity:review: cross-model review of the current diff/antigravity:resume: continue a previous Antigravity conversation/antigravity:status: check on a running or background job/antigravity:result: fetch the output of a completed job/antigravity:cancel: stop a running job
Under the hood there's also an antigravity-pair delegation subagent and three skills: antigravity-cli-runtime, antigravity-result-handling, and a researched gemini-3-prompting skill so the prompts you send actually suit the model on the other end.
How it works, honestly
The plugin drives agy in headless print mode (agy --print). That part is straightforward. The part worth talking about is what agy does when things go wrong.
We tested against agy 1.0.3. When the per-account preview quota runs out, agy --print exits 0 with completely empty stdout. Exit code zero, no output, no error. From a script's point of view that looks like a successful run that produced nothing, which is the worst kind of failure: silent and misclassified.
The fix is a zero-dependency Node companion that ships with the plugin. It passes agy a --log-file, then parses that log to do two things the exit code won't:
- Recover the conversation id, so
/antigravity:resumeand/antigravity:resultactually have something to point at. - Surface the real error
agyswallowed (RESOURCE_EXHAUSTEDfor quota, plus auth and backend failures) instead of letting an empty success slip through.
So when Gemini 3.5 has nothing to say because you're out of quota, the plugin tells you that, in those words, instead of handing you a blank result. It's 29 tests, green CI.
One thing to know about prompting: there is no --model flag on agy. You don't pass the model on the command line. You pick it with /model inside Antigravity. The plugin respects that and doesn't pretend otherwise.
Quickstart
# 1. Install Antigravity's CLI (agy), then sign in
curl -fsSL https://antigravity.google/cli/install.sh | bash
# agy uses browser OAuth with your Google account - no API key
# 2. Add the marketplace and install the plugin in Claude Code
/plugin marketplace add Idun-Group/antigravity-plugin-cc
/plugin install antigravity@idun-antigravity
# 3. Verify agy is installed and signed in
/antigravity:setupYou'll need agy installed and signed in, plus Node >= 18. After /antigravity:setup confirms the runtime, /antigravity:review and /antigravity:delegate are ready.
Honest limits
This is v0.1, and it's early. A few things to set expectations:
- Antigravity is a free preview with a per-Google-account quota. When you exhaust it, you wait. The plugin's whole error-handling story exists because that quota wall is real and
agyhides it behind exit0. - Auth is browser OAuth tied to a Google account. There is no API key. You can't drop a token into CI and walk away.
- No
--modelflag. Model selection lives insideagyvia/model.
None of these are bugs in the plugin. They're properties of the preview we built against. We'd rather you know them up front than discover them at 2am.
Why we open-sourced it
Idun Group measures the real usage of the AI companies have already deployed: licences, assistants and agents. This plugin comes from a need in our own work. It exists because we wanted a clean way to put two models against the same code, and the honest path to that was to handle the failure modes properly rather than paper over them.
We tend to release the tools we build for ourselves. Open-sourcing keeps us honest about edge cases, like an exit-0-on-empty bug we'd never have caught without driving the real binary against a real quota, and it means you can read exactly what the companion does to your agy invocation before you trust it. No black box.
The repo is here: github.com/Idun-Group/antigravity-plugin-cc. PRs and issues welcome. Design inspired by openai/codex-plugin-cc.
MIT-licensed. This is an independent project from Idun Group, not affiliated with or endorsed by Google or Anthropic.




