agy-plugin-cc — Antigravity inside Claude Code
- JavaScript
- Node.js
- Claude Code Plugin
- Antigravity CLI
- workspace isolation
A Claude Code port of opencode-plugin-cc, itself a port of the official openai/codex-plugin-cc surface, driving Google's Antigravity CLI (agy). It carries the review, adversarial-review, rescue, transfer, status, result, cancel, and setup command surface, plus an optional stop-time review gate. Headless agy has no read-only mode, so reviews use a disposable workspace copy rather than the real repository. Independent project, not affiliated with Google or OpenAI.
Project overview
Role Sole adapter and maintainer of the Claude Code port — agy workspace scoping, mirror-based read-only reviews, command surface, job store, model honesty
Scenario
Claude Code needed a controlled way to use a second model through Antigravity, while headless agy cannot grant reads without also allowing writes. A reviewer that can read the repository can write it too.
Product strategy
The port keeps the command surface but makes read-only review a filesystem boundary: a disposable working-tree copy has no .git and the real tree is fingerprinted before and after. That boundary is for read-only review only — write-capable rescue runs deliberately get the real repository. Claude Code keeps files, git, and final judgment.
Outcome and current stage
Public v0.1.0 · port of the codex-plugin-cc surface via opencode-plugin-cc · mirror-based read-only reviews · optional stop-time review gate
My contribution
- Claude Code commands for review, adversarial-review, rescue, transfer, status, result, cancel, and setup, with an optional stop-time review gate
- Mirror-based read-only review: a disposable copy without .git, no repository path disclosure, tree_changed_during_readonly_run checks, and findings rewritten to real paths. What it guarantees is that the review cannot touch your tree, index, or branches — not that agy is sandboxed, since it still runs with permission prompts skipped
- Model honesty: agy has no user-side model setting, so the plugin reports only an observed model or none at all
- Background job control with a job id printed before the run, polling, and a conversation id for continuation