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

When Your Antigravity Agent Opens a PR That Just Says "Update files" — and a Gate That Forces a Reviewable Summary

Pull requests opened automatically by an Antigravity agent tend to carry empty descriptions like "Update files." Here is a validation gate, with working code, that estimates risk from the diff and rejects vacuous descriptions so a human can actually review them.

Antigravity290Agents16Code Review3Pull RequestQuality Assurance2

Premium Article

Running agents unattended across several repositories means I spend my mornings reviewing a stack of pull requests. Between the apps I maintain as an indie developer (monetized with AdMob) and the blogs I keep running, I have a handful of repos turning over in parallel, so this "morning PR review" has become a daily ritual.

The frustrating part was that the description field was almost useless. "Update files." "Fix issues." "Apply changes." Whatever the agent auto-filled, it converged on one of those three.

When the description is empty, the only option left is to read the whole diff from scratch every time. A couple of PRs is fine, but as the count grows you can't keep up — and one morning you mutter "this is probably fine" and merge without really looking. That is almost always the moment something breaks.

The problem was not the diff itself. It was that nothing had been summarized into a form a human could judge safely and quickly. So I started making the agent write a structured summary, and added a gate that mechanically rejects empty ones. Let me walk through the design and the working code.

Why agent PR descriptions tend to be empty

An agent is optimized to mark its assigned task as "done." Once the code is written and the tests pass, the objective is met. The PR description is, to the agent, a byproduct.

And unlike code, a description has no pass/fail check. "Update files" doesn't throw a syntax error, so it slips through and bothers no one.

There is a second reason. An agent can output what it did, but it does not spontaneously write what a human should verify. Those are entirely different pieces of information — the former is a record of the change, the latter is a blueprint for review. Review needs the latter, yet left alone, even the former gets trimmed away.

In short, description quality drifts structurally to the bottom unless you demand it explicitly through prompt and gate.

The five elements a reviewable description needs

After re-reading many PRs, the descriptions that let a human judge safely and quickly shared a common shape — these five elements.

ElementQuestionVacuous → Working
WhatWhich files changed, and what was done"Update files" → "Extracted ad-frequency control into AdFrequencyController"
WhyWhich problem this change solves(none) → "Fixes a bug where the interstitial showed twice under a specific condition"
RiskWhere the blast radius is largest if it breaks(none) → "Did not touch the billing path, but changed the default ad frequency, which can affect revenue metrics"
TestHow correctness was confirmed"Tested" → "Added a reproduction test for the double display and checked three boundary cases of the frequency cap"
Review focusWhere you want the human to look hardest(none) → "The boundary condition in shouldShowAd() and whether changing the default is appropriate"

Of these, Risk and Review focus do the most to lighten review. What and Why can be reconstructed from the diff if you spend the time, but Risk and Review focus are knowledge only the author of the change holds — making the agent write them is what cuts review load the most.

Put the other way: a PR with those two blank is one that has dumped the judgment entirely on the reader. That is exactly where the gate should focus its defense.

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
The structural reason agent-written PR descriptions go empty, and the point where review quietly stops being review
A minimal validation gate (working Node.js) that estimates risk from changed paths and rejects vacuous descriptions with exit 1
How to keep the gate from being too strict — leaving an escape hatch for trivial changes while making it stick in daily use
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-06-21
Keeping Unattended Agent Run Logs Long Enough to Debug — Without Filling the Disk
A scheduled agent is only fixable if you can reconstruct why it failed. Here is how to keep run logs around without filling the disk — tiered retention, schema-versioned records, and a compaction job — drawn from running four sites on autopilot as an indie developer.
Agents & Manager2026-06-20
Don't Lose Failed Agent Jobs: Designing a Dead-Letter and Requeue Path
Scheduled agents fail silently overnight and the work simply vanishes. Here is how to catch those failures with a dead-letter store and a staged requeue, drawn from running four sites on autopilot as an indie developer.
Agents & Manager2026-06-14
Making My Managed Agents Batch Survive a Crash Without Redoing Everything
Running a 200-item batch on the Managed Agents API kept torching tokens, because every mid-run failure restarted from item one. Here is the checkpoint-and-idempotency design I added so the batch resumes from where it died.
📚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 →