ANTIGRAVITY LABJP
Articles/Agents & Manager
Agents & Manager/2026-06-12Advanced

Handing Dependency Updates to Antigravity Agents — Risk Tiers, Verification, and Rollback

How far can you trust Antigravity agents with dependency updates? A four-tier risk model that corrects semver optimism, worktree-isolated lots, a fixed verification script, and a rollback-first ledger — the operations design I settled on while maintaining multiple apps.

antigravity436agents129dependency updatesautomation87operations design3worktree2maintenance

Premium Article

On a Monday morning I opened my repositories to find 47 pending dependency update notifications. When you maintain several apps and sites in parallel, that is not an unusual number. Reading every release note costs half a day. Ignoring them is worse: security fixes slip past you while the diff quietly grows, and the eventual upgrade becomes more dangerous the longer you wait.

I once let a minor Firebase SDK update sit for three months because everything was working. By the time I finally upgraded, the chained dependency changes had grown so large that the repair consumed an entire weekend. That experience changed how I think about dependency maintenance: it is not a chore you batch up and attack once a quarter, it is a small stream you keep flowing. And small, continuous, well-defined work happens to be exactly the kind of work agents are best suited to take over.

Antigravity 2.0 made that handover much more practical, with proper worktree support and scheduled runs. What follows is the operations design I settled on, built from four parts — risk tiers, lot batching, verification, and rollback — with the configuration files and scripts included in a form you can reuse directly.

Why updates are easy to delegate, and why you still cannot delegate all of them

Dependency updates suit agents for three reasons. First, the procedure is highly repetitive. Second, success is machine-checkable: build, type check, tests, and smoke checks form a ready-made verdict. Third, the work recurs weekly, so any automation investment pays itself back quickly.

The failure profile, however, is asymmetric. Nobody notices fifty clean updates, but a single bad one blocks a release. And the adopt-or-defer decision mixes in context that lives outside the repository: you might skip updates for a module you plan to rewrite this year, or avoid touching an ads SDK in the same window as a policy change. No agent can infer those constraints from the codebase alone.

So I split the job into two halves: proposal, verification, and record-keeping go to the agent; adoption decisions go to either automation or a human, depending on the risk tier. Instead of granting uniform discretion, the discretion scales with how dangerous the change is. Everything below exists to implement that graduated autonomy.

Do not take semver at face value — a four-tier risk model

Semver is a useful promise, not a guarantee. Breaking changes shipped as patches are real; in 0.x ecosystems a minor is effectively a major; and native SDKs do not even promise to follow the same convention. So I start from the formal version bump and then correct it with track record, ending up with four tiers.

  • Tier 0 — auto-merge: patch updates of transitive dependencies, fully contained in the lockfile. Security-advisory fixes belong here too
  • Tier 1 — auto-merge after overnight verification: patches of direct dependencies that do not touch public APIs, type definitions, or build configuration
  • Tier 2 — agent proposes, human approves: minors of direct dependencies. Anything that moves peer dependency requirements always lands here
  • Tier 3 — human-led, agent researches only: majors, native SDKs, build toolchain (Gradle, Xcode, bundlers), and everything in 0.x

Two escalation rules sit on top. Any package that has shipped a breaking change inside a patch or minor within the last twelve months gets bumped one tier, unconditionally. So does any package that publishes empty release notes — a change that does not explain itself is dangerous by definition.

The classification lives in a JSON file at the repository root, and the agent is told to treat that file as its only source of judgment.

{
  "$comment": "deps-policy.json — risk tier definitions for dependency updates",
  "tiers": {
    "0": { "scope": "indirect-patch", "action": "auto-merge" },
    "1": { "scope": "direct-patch", "action": "auto-merge-after-verify" },
    "2": { "scope": "direct-minor", "action": "propose" },
    "3": { "scope": "major | native-sdk | toolchain | 0.x", "action": "research-only" }
  },
  "escalations": [
    { "rule": "past-breaking-in-patch", "window": "12m", "raise": 1 },
    { "rule": "empty-release-notes", "raise": 1 },
    { "rule": "package-in", "list": ["firebase", "react-native", "next"], "minTier": 2 }
  ],
  "limits": { "lotSize": 5, "maxParallelLots": 3 }
}

The escalations block is the part that matters. A package the wider world considers safe still gets a minTier floor if it has burned me once in my own environment. This table is institutional memory in file form; I expect to grow it after every incident, not to get it right up front.

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
A reusable four-tier risk classification that corrects semver with each package's track record, and changes how much discretion the agent gets per tier
The actual AGENTS.md playbook and verification script that isolate update lots in worktrees and standardize everything from checks to rollback
Field numbers from processing roughly 60 update notifications a month — which changes are safe to auto-merge and which ones a human must review
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

Agents & Manager2026-07-01
It Worked Interactively but Went Silent Overnight — Making an Antigravity Agent Behave the Same in the Desktop and the CLI
An agent that runs perfectly in the Antigravity desktop app but does nothing when you schedule it through the CLI. This walks through absorbing the gap between interactive and unattended runs across four points — approvals, context, secrets, and runtime — with working code and a preflight check, so one definition behaves identically on both.
Agents & Manager2026-06-28
The Day the Article I Asked It to Format Became the Agent's Instructions
When you run an unattended content-formatting pipeline with Antigravity CLI, instruction-like text buried in the file you are processing can hijack the agent. Here is how I separate the instruction channel from the data channel and add an output-scope acceptance gate to reject anything out of bounds.
Agents & Manager2026-06-25
Before a Major Update Silently Breaks Your Overnight Automation — Designing a Staged-Adoption Canary Gate
After a major update dropped my unattended run success rate from about 98% to 63% overnight, I built a staged-adoption gate that freezes the working setup, verifies a new version against a golden output in an isolated profile, and only then adopts it. Here is the design with bash and Python.
📚RECOMMENDED BOOKS
Build a Large Language Model (From Scratch)
Sebastian Raschka
LLM Dev
Prompt Engineering for LLMs
Berryman & Ziegler
Prompting
AI Engineering
Chip Huyen
AI Eng
* Contains affiliate links
See all →