I had finished replacing the model name in source, and only on a Monday morning, rereading my own work notes, did I realize I had never looked outside the code. As an indie developer I have added scheduled scripts one at a time over the years, so the number of places that mention a model name was probably larger than I remembered.
First, the scope of what I verified. I have not reproduced what the API returns for the old name after the shutdown. What I did check is that the script below finds the old name in a made-up sample tree, counts the successor name, and flips its exit code.
Background: what stopped, and when
The official deprecations table lists the Managed agents model antigravity-preview-05-2026 as shut down on October 5, 2026, with antigravity-preview-09-2026 as the successor. Whether a plain swap is enough or a rework is needed is covered in antigravity-preview-05-2026 shuts down October 5: which setups need more than a string swap. This piece is about what comes after: things you thought you swapped, but didn't.
Four places the old name likes to hide
A hard-coded agent="..." in source is easy to catch. The misses live outside the code.
| Where | Why it survives |
|---|---|
.env / .env.example | If the model name is passed as an environment variable, fixing the code leaves the value stale |
CI config (.github/workflows etc.) | It sits in a nightly job's env: block that you rarely open |
| cron or Task Scheduler entries | They live outside the repo, so grep never sees them |
| READMEs, runbooks, copy-paste notes | They are the source of the next copy-and-paste |
The third row cannot be searched from the repository at all. I come back to it below.
The inventory script
What it solves: it lists every file and line that still mentions the old name, and exits with 1 if any remain.
#!/usr/bin/env bash
# usage: audit.sh [dir] — find leftovers of a stopped model identifier
set -u
ROOT="${1:-.}"
STOPPED='antigravity-preview-05-2026'
CURRENT='antigravity-preview-09-2026'
hits=$(grep -rnI --exclude-dir={.git,node_modules,.next,dist} -- "$STOPPED" "$ROOT" || true)
if [ -z "$hits" ]; then
echo "OK: no occurrence of ${STOPPED}"
else
echo "REVIEW: ${STOPPED} is still present"
echo "$hits" | awk -F: '{printf " %s:%s\n", $1, $2}'
echo "total $(echo "$hits" | wc -l | tr -d ' ') locations"
fi
echo "--- uses of the successor ${CURRENT}"
grep -rnI --exclude-dir={.git,node_modules,.next,dist} -c -- "$CURRENT" "$ROOT" | grep -v ':0$' || echo " none"
[ -z "$hits" ] # exit 1 if anything is leftThree notes on why it is written this way. -I skips binaries so images and build output do not match. Excluding node_modules and .next keeps dependency contents from burying the lines you actually need to fix. And the final line returns an exit code, so in CI it fails on the day the old name sneaks back in.
What it printed on a sample tree
I put the old name once each in .env.example, .github/workflows/nightly.yml and scripts/crontab.txt, the successor once in scripts/run.py, and one more old name inside node_modules.
REVIEW: antigravity-preview-05-2026 is still present
./.env.example:1
./.github/workflows/nightly.yml:4
./scripts/crontab.txt:1
total 3 locations
--- uses of the successor antigravity-preview-09-2026
./scripts/run.py:1
exit=1Three hits, the node_modules one excluded, exit code 1. That is the result on a layout I invented; it says nothing about how many hits your environment will show.
Outside the repository, you need a different check
grep cannot reach crontab or a scheduler's registry. Dump the registered entries first, then run the same search.
crontab -l 2>/dev/null | grep -n 'antigravity-preview-05-2026' || echo "crontab: none"For Windows Task Scheduler or a cloud scheduler, you will be reading the screen or an exported definition. Some of this stays manual.
Do not stop at "zero old names"
The script also counts the successor name, because zero old names does not prove that everything works. Deleting the old name can just as easily delete the line that passes a model at all. Zero old names and the expected number of new ones — only together do they tell me the swap is finished.
Check that the new name is where it should be, not only that the old one is gone. That is the rule I am keeping from this inventory.
As a next step, run audit.sh once against a single repository and read the lines it prints. The crontab-style places can wait until after that.