Skip to main content

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.

Commandagy
Installcurl -fsSL https://antigravity.google/cli/install.sh | bash
Hook configuration~/.gemini/config/hooks.json
Skill location~/.gemini/config/skills/saggar-cli/SKILL.md
Resumeagy --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​