Antigravity CLI
Antigravity CLI runs as agy. Its hooks pin the conversation, report turns,
and carry each shell command to Saggar before it runs. Every other permission
prompt is still read from the screen, and the info view shows the model the
hook reported but no live context or cost data.
| Command | agy |
| Install | curl -fsSL https://antigravity.google/cli/install.sh | bash |
| Hook configuration | ~/.gemini/config/hooks.json |
| Skill location | ~/.gemini/config/skills/saggar-cli/SKILL.md |
| Resume | agy --conversation <id>, or agy --continue without an id |
Launching
Antigravity routes to several model families. The launch menu offers Gemini
3.1 Pro High, Gemini 3.1 Pro Low, Claude Sonnet 4.6, Claude Opus 4.6, and
GPT-OSS 120B. The Gemini Flash rows sit under More models. The provider
card also runs agy models and lets you pick a row for any model Google
enables that the catalog doesn't ship. The launch and preset effort controls
pass --effort low, medium, high, or max on Antigravity CLI 1.1.5 or
newer. Leaving the choice at Model default keeps the selected model
variant. A first task is passed with -i; preset context doesn't reach it.
Hooks
Installing hooks adds Saggar's entries to Antigravity's JSON hook file, under
its own key, and leaves the rest of the file alone. A hook file that isn't
valid JSON stops the install rather than being overwritten. The hooks report
model invocation starts and execution-loop stops, including the exact
conversation id, and run before each run_command call. With them installed
Saggar:
- pins the exact conversation for resume;
- reports completed turns from Antigravity's own lifecycle;
- shows the model the hook reported in the info view;
- answers or intercepts shell commands before they run.
Antigravity has no published hook history Saggar can pin a version against, so nothing is version gated. Saggar brings an older install up to this build's hooks each time it starts.
Prompts and automatic approval
Antigravity's PreToolUse hook runs before every shell command, whether or
not Antigravity would have prompted for it. When the session is unsupervised
and the command clears the deny-list, Saggar allows it there and the prompt
never draws. Under Intercept, a command that matches the deny-list is denied
before it runs. Only run_command is decided this way: an allow for a file or
URL tool would widen what you granted, so those stay with Antigravity's own
rules and dialogs. Input sent later to a running shell is not checked again.
File access, file creation, edits, and URLs are still inferred from the screen. Saggar recognizes the dialogs as Antigravity CLI 1.1.26 prints them: the command dialog that opens with "Requesting permission for", the file access and file creation dialogs, and the edit dialog. Automatic approval answers the first choice only when the menu prints its numbers and that choice is a plain one-time allow, because Antigravity rewrote its prompts in 1.1.28. Antigravity's widening options say "always allow" where Claude says "don't ask again", and Saggar never picks those.
The deny-list applies before any answer.
Resume
With a recorded id, restore runs agy --conversation <id>. Without one it runs
agy --continue.
Further reading
- Antigravity's settings, rendering, and keybindings page covers its rendering modes, notifications, color schemes, and keybindings. Set up your terminal for agents says which of those Saggar already handles.