Ask Your AI Reviewer What Changed, Not Just Whether It's Good

The CueSpec octopus examines an open folder of paper changes and points to a newly added page with a question mark.
View full-size cover
Contents

Imagine two coding agents reviewing each other's pull requests. Both approve. You try the feature and discover a series of checks that nobody requested—one checkpoint after another before a user can do the thing the feature was meant to support. The code may have received a favorable review without anyone settling whether that behavior belongs in the product.

Give the reviewer a more specific first question: what did this change add, remove, or alter, and why is each part necessary? That opens a discussion about scope before a broad verdict closes it. The discussion belongs alongside code review, testing, and security checks.

Why Two Approvals Can Miss the Same Scope Problem

Agents can produce more changes than you can comfortably inspect in one sitting. Asking another agent for a review is a reasonable response. It doesn't establish that obvious bugs have already been fixed or that the remaining questions are all about polish.

You might open a fresh reviewer, read its comments, and consider merging if nothing serious appears. Having the two agents review each other adds another pass, but it doesn't automatically supply the product context either one is missing.

A reviewer given only the code may not know why the feature was requested, where its boundaries lie, or which future requirements are actually planned. It can examine an abstraction without knowing whether anyone needs it.

A new authorization check or cache may look like a deliberate design choice. The review can focus on how it was implemented and leave its purpose unexplored. Sometimes the choice is necessary; sometimes it's extra work. Ask for the requirement or risk it addresses before deciding. An approval alone doesn't answer that question.

Step One: Ask for Facts Before a Verdict

Start with an inventory you can check against the diff. Use the report to understand the change and guide questions; keep the required code review, tests, and specialist reviews in place.

Ask a reviewer to describe the PR before evaluating it:

Inspect this PR and report what changes. Cover:

- Database schema: tables, columns, indexes, and migrations
- Scheduled jobs, cron tasks, and background workers
- Every feature added or changed
- External services, APIs, and third-party libraries introduced
- Environment variables and configuration flags introduced
- Public endpoints and interfaces introduced or changed
- Anything removed or deprecated

For each item, point to the relevant file or diff location.
Describe the behavior first. Save the overall assessment for later.
Flag anything you cannot establish from the available code or evidence.

The last instructions keep this first pass focused. “This is a well-structured PR” tells you much less about its scope than a list of the jobs, tables, and interfaces it introduces.

The seven categories make maintenance commitments visible: another migration, another recurring task, another dependency, another setting someone will eventually have to understand. The inventory still needs checking; a detailed report can omit a change or describe it incorrectly.

Step Two: Find the Vague Explanations

A report can be long and precise about names while saying little about purpose. Consider these illustrative descriptions:

Adds a sync_state table to improve synchronization reliability.

Adds a background task for routine maintenance.

Adds a FEATURE_X_MODE setting for flexible configuration.

Each names an addition without explaining why this design is needed. That is a reason to ask another question. It isn't yet evidence that the addition is unnecessary.

For a hypothetical example, suppose the requirement is to notify an administrator when a third-party service keeps returning errors. The implementation adds two tables to track Slack and email delivery. Does the feature need durable retries, deduplication, or an audit trail? Can existing storage handle those needs? The tables might be justified, or a simpler design might be enough. The requirement and failure cases decide—not the fact that two tables look like a lot.

A new table is easy to describe. Its continuing responsibility takes more explanation.

Step Three: Ask Direct Questions

When something is unclear or seems outside the request, ask about that specific addition:

Which requirement needs this new table? Show what it stores and why
the existing storage cannot meet that requirement.

What does this 2 a.m. job do? Compare it with our existing service.
Which responsibility, if any, is duplicated?

Who needs FEATURE_X_MODE, and under what conditions would they
change its default? What behavior depends on that choice?

Why was this dependency added? Compare it with the tools already
in the project, including any capability the existing tools lack.

Trace an invalid input through the code. Where is it rejected?
Point to the relevant code and test, and report whether that test ran.

The agreed feature is X. Which parts of this PR are outside X?
Explain whether each is a prerequisite, a required safeguard,
or a separate change that should be considered on its own.

An answer such as “You're absolutely right” settles nothing. Keep asking for the requirement, code, or result behind the answer. An agent agreeing to delete a check is no stronger evidence than its earlier assurance that the check was necessary.

The final question is about scope. It asks which work belongs in this change and what supports its inclusion. A prerequisite or security control may not appear in the feature's short description and still be essential.

Supply the Context the Reviewer Doesn't Have

Partway through, add the product facts that affect the decision. If they are true for your project, constraints or plans like these can help:

This product is limited to one region. Given that constraint,
what current requirement justifies this abstraction?

The next planned phase adds more external tools of this kind.
Show where the present design supports that expansion and where
it would need changes. Separate current needs from future work.

That gives the reviewer something concrete to compare with the design. A plan is relevant context, but it doesn't automatically justify implementing every future capability now.

Why These Questions Help

The agent can help trace a change across files. The person directing the product can supply the intended behavior, constraints, and priorities. Asking specific questions brings those two views together.

By the end, you want a clearer account of what will enter the codebase, where it is implemented, and which decisions still need checking. Return to the code and test results to verify that account, and involve someone qualified for security or other specialist concerns.

Planning beforehand can reduce misunderstandings. It doesn't remove the need to compare the finished change with the plan. An extra table, job, or configuration switch can appear during implementation; asking what it serves is still useful when the initial requirements were clear.

Four cards outline a scope check: inventory changes, locate them in files and diffs, question their purpose, and verify the evidence.

A scope check supports code review and testing. Agreement is not evidence, and a safeguard may still be necessary.
View full-size illustration

Finish with a Decision You Can Support

Ask what the PR changed before asking for an overall verdict. Follow up on additions whose purpose is unclear, and provide the product context the reviewer lacks. If an addition is unnecessary, remove it after checking its dependencies and the effect of removal. If its purpose is unresolved, keep that question open. Don't remove authorization, validation, or recovery behavior merely because an agent retracts its explanation.

These questions give you a chance to address unwanted scope before merging. Whether they save time depends on the task and what the review finds. The useful result is a change whose contents and reasons you understand, with code and verification evidence supporting the decision to merge.