The moment your background agents started opening their own draft PRs, your job changed. You are no longer clicking through "can I commit?" prompts mid-run. You are a reviewer with a queue of finished branches. And here is the part nobody warns you about: reviewing an AI agent's PR is not like reviewing a junior developer's, and the habits that make you good at the second make you bad at the first.

A junior's code fails in ways you can see — gaps, TODOs, an obviously unhandled case. An agent's code is fluent everywhere. Every function is named well, every line reads plausibly, the whole thing has the surface texture of correct work. That fluency is precisely the trap: the failures don't look unfinished, they look done and wrong. So a normal review — which scans for polish — sails right past them.

Never let the PR being fluent stand in for the PR being correct. Read the diff as an adversary, not an admirer.

Here are the six checks, ordered by how often they catch a real problem in agent-authored code. Run them on every draft before you touch merge.

1. Verify every new dependency actually exists#

This is the highest-value check and it takes thirty seconds. Coding agents hallucinate plausible package names — and attackers pre-register those exact names to catch the auto-install. It's a real, named supply-chain attack: slopsquatting. For every added import or dependency line in the diff, confirm it resolves to the genuine, maintained package you intended — right owner, real download counts, a repo you recognize — not a look-alike registered last week. A single hallucinated dependency is an RCE waiting in your lockfile.

2. Diff the change against the ticket, and reject silent over-reach#

Ask one question: does this PR do exactly what the ticket asked, and nothing else? Agents are prone to "helpful" scope creep — refactoring a neighboring function, upgrading a version, renaming a field "while they were in there." Each of those is an unrequested change you didn't ask a human to review. If the ticket was "add a rate-limit header to three endpoints" and the diff also touches the auth middleware, that's not a bonus; that's an unreviewed change riding in on an approved one. Send it back or split it.

3. Read the tests — confirm they assert the requirement, not the output#

The most dangerous PR is green. When an agent writes the code and the tests in the same pass, the tests can quietly assert whatever the code does rather than whatever the ticket required — so a bug and its passing test ship together. Don't trust green; read what green means. Rewrite at least one test yourself, from the requirement in your own words, and confirm it still passes. If it doesn't, the tests were describing the agent's mistake, not your intent.

4. Trace secret and credential handling by hand#

Agents are inconsistent about secrets: they'll sometimes inline a key to make an example run, log a token at debug level, or widen an IAM scope to clear an error. These never look wrong in a fluent diff. Grep the change for anything that touches credentials, environment variables, or auth scopes, and read each one deliberately. This is the check you cannot delegate to another tool's summary.

5. Check the error path and the empty case#

Agents over-index on the happy path — it's what the prompt described. The failure case, the empty input, the timeout, the "what if this returns nothing" branch: these are systematically under-written. Read the code specifically for what happens when the thing goes wrong, not when it goes right. A dedicated AI reviewer like the ones in CodeRabbit vs Greptile vs Qodo can flag some of this at scale, and a scanner like Semgrep on AI-generated code catches known-bad patterns — use them as a first pass, never as the last word.

6. Run it. Don't just read it.#

Reading catches logic and scope; running catches reality — the integration seam, the migration that half-applies, the config that isn't wired. A draft PR is a proposal, and the whole reason it opens as a draft is that the verifying step is yours. Pull the branch, run the checks, exercise the actual path a user hits. Then merge.

What it means#

The productivity story of background agents is real, but it moves the bottleneck, it doesn't delete it. The new bottleneck is review throughput — and the way you protect it is not to review harder, but to review for the right failures. A junior earns standing trust as they learn your codebase. An agent doesn't: it has no memory of last week's mistake, so trust is re-earned every PR. Keep the six checks, keep the merge button human, and the review queue stays a feature instead of a liability. For the security-first version of this discipline on vibe-coded prototypes, see the maintenance and security checklist for a solo founder.