◉ANTIGRAVITY LABJP
Articles/AI Tools
⚙ AI Tools/2026-09-15Advanced

The Day I Stopped Splitting by Skill — Three Questions for Routing Work Between Antigravity CLI and Claude Code

An unattended job sat waiting on an approval prompt for three days without a single error line. Here is how I stopped dividing work between two agent CLIs by capability, and started dividing it by where the approval boundary falls.

Antigravity CLI42Claude Code9agent operations10permission design4unattended runs8

✦ Premium Article

My pre-release check for one of my wallpaper apps returned three days of empty logs. No failure lines. Exit code zero. And yet the diff report I expected simply was not there.

I found it at the terminal, not in the log. Running the same job by hand produced one line — Allow access to this URL? — and there it sat. While the job ran unattended, nobody was there to see that line.

The trigger was Antigravity CLI 1.1.28, released on September 9, 2026. In that version, fetching an external URL prompts for approval by default unless access has been pre-granted. The night before, I had happened to move this particular check over to Antigravity CLI. The release and my migration landed in the same week.

What I want to say first is that neither the release nor the migration was the real problem. The problem was that I had been splitting two tools by what each was good at.

When I sent the hard jobs to the smarter tool

For a long time I divided my two agent CLIs by capability. Design conversations and cross-cutting cleanup went to Claude Code; repeatable, well-defined procedures went to Antigravity CLI. As an indie developer I only have one pair of hands, so "hard things to the smarter one" looked reasonable at the time.

That split never breaks while you are sitting in front of the screen. If something asks for approval, you click it. It breaks the moment you run the same work unattended.

For a while I blamed my own prompts. My instructions must be vague, I thought, so the agent is hesitating somewhere in the middle — and I rewrote the task files in finer and finer detail. It did not help. However I rewrote them, the same jobs stalled in the same place, and the others never stalled once.

The difference was not difficulty. Every job that stalled was reaching outside the repository.

In 1.1.28, the stopping point moved in two directions at once

This is the part that ran against my intuition. The same release made one class of approval stop blocking, and another class start blocking. Both items sit in the September 9 entry of the Antigravity changelog.

ChangeEffect on unattended runs
Fixed headless (-p) runs hanging indefinitely on interactive implementation-plan approval prompts, by proceeding through plan review automatically in non-interactive modeStopped blocking. Plan approval used to be the single biggest stall
Changed default URL fetching permissions to prompt for approval before reading external URLs, unless access has been pre-grantedStarted blocking. Every job that reads a URL is in scope

If you skim the release headline, this looks like a headless optimization release. And it is one: runs exit faster after the final answer, and up to 200 ms of idle delay per turn was removed. A line that tightens a default permission is sitting quietly in the middle of a list of improvements.

The reason three days went by is that I read "harder to stall" and missed that the stalling point had simply swapped places.

✦

Thank you for reading this far.

Continue Reading

What follows includes implementation code, benchmarks, and practical content we hope you'll find useful. This site runs without ads — server and development costs are supported entirely by members like you. If it's been helpful, we'd be truly grateful for your support.

WHAT YOU'LL LEARN
✦You will be able to route agent work by where the approval boundary falls, instead of guessing which tool is smarter
✦You will be able to spot a job that will stall silently before it runs unnoticed in production for three days
✦You will know exactly which part of your success check to rewrite when a release moves the stopping point
Secure payment via Stripe · Cancel anytime
✦

Unlock This Article

Get full access to the rest of this article. Buy once, read anytime. This site is ad-free — your support goes directly toward keeping it running.

or
Unlock all articles with Membership →
Share

Thank You for Reading

Antigravity Lab is ad-free, supported entirely by members like you. We publish practical guides daily with implementation code, benchmarks, and production-ready patterns. If you've found it useful, we'd love to have you on board.

  • ✦Copy-paste ready implementation code
  • ✦New advanced guides published daily
  • ✦$5/mo or $10 for lifetime access
View Membership →

Related Articles

⚙ AI Tools2026-10-29
A 54-Line Front Door for the Days I Can't Decide Between agy and gemini-api
The Gemini API CLI (gemini-api) landed in beta on October 27. Here is a small shell script that sends repo-editing requests to the Antigravity CLI (agy) and read-only requests to gemini-api, including the 14 MB input ceiling, exit codes 0-3, and timeout's 124, all checked with stubs.
⚙ AI Tools2026-10-15
A 50-Line Wrapper That Hands Japanese Proofreading to agy's Headless Mode
Wrap the Antigravity CLI (agy) headless mode in a small proofreading script: how to feed stdin, why exit code 0 can still mean an empty answer, the argument-length ceiling, and a cost estimate that accounts for the January 2027 price change.
⚙ AI Tools2026-09-11
Starting with AGY_CLI_HIDE_LOGO: tuning Antigravity CLI for narrow terminals, screen readers, and recordings
Logo art, your email address, output that swallows the pane, a copy you never asked for. Here are the Antigravity CLI environment variables and settings that quiet the display, grouped by the three situations where they matter.