AI Code Review Tools That Approve Pull Requests, Compared
How Copilot, Greptile, cubic, Cursor and CodeAnt decide to approve a pull request, which paths they exclude, and whether the approval counts on GitHub.
Published 9 min readBy the Warpway team
As of October 2026, at least five AI review tools document submitting a real GitHub APPROVE review: GitHub Copilot code review (approvals in public preview since 2026-09-01), Greptile (beta), cubic, Cursor's PR Routing & Approval and CodeAnt. They differ in three ways: what makes the bot approve, which changes it keeps out, and whether the approval satisfies your branch's required reviews. On that last point, most vendors leave the answer to your GitHub rules.
Everything below comes from each vendor's public docs as read in October 2026. Two of these features are labeled preview or beta, so check the linked pages before relying on a detail.
Side-by-side comparison
| Tool | Approves when | Keeps out | Counts toward required approvals? |
|---|---|---|---|
| Copilot code review (public preview) | Its approval assessment says the PR is ready and admins have allowed approvals | Optional allowlist of up to 15 globs; an approval counts only if every changed file matches | Yes, "the same way a teammate's approval would", once the counting toggle is on |
| Greptile (beta) | Clean 5/5 Confidence Score, risk at or below your cap, PR passes your filters | Risk cap, excludePaths, do-not-merge and manual-review labels, filters on author, branch, label, keyword and path | Not stated; merge rules "still enforce any required human approvals" |
| cubic | No open blocking issues; then, under Low-risk only and Custom, an approval agent decides from the current PR diff, and under Always, cubic approves once no rule blocks approval | Never-auto-approve rules on paths, authors, branches, labels and titles | Not stated; required reviewers and code owner rules still apply |
| Cursor PR Routing & Approval | Risk within your maximum, policy files and criteria met, no Bugbot or Security Agent findings that need a person | APPROVAL_POLICY.md files by directory | Not addressed |
| CodeAnt | Every CodeAnt thread is resolved; in policy agent mode a model must also return approve, with no blockers, risk within the threshold and at least 80% confidence | human_review rules in .codeant/approval.json; more than 300 files or 60,000 patch characters | Counts as a normal review, but not for CODEOWNERS unless its user is listed |
How each tool decides to approve
GitHub Copilot code review
Every Copilot review includes an approval assessment in its overview comment, saying whether Copilot considers the pull request ready to approve. GitHub's docs don't describe how Copilot reaches that judgment, and the assessment alone does not count toward merge requirements. By default Copilot leaves only Comment reviews.
Approvals need settings at three levels. The enterprise policy Allow Copilot to approve pull requests is disabled everywhere by default. Organizations decide whether Copilot approvals count toward merge requirements: everywhere, for selected repositories, or left to each repository. In the repository, one toggle lets Copilot submit approving reviews and a second lets those approvals count. The optional file-path field takes up to 15 globs, and an approval counts only when every changed file matches one. That is an allowlist for what counts, not a list of paths Copilot declines to approve. The changelog lists the Copilot Pro, Pro+, Max, Business and Enterprise plans.
Greptile
Greptile approves only a clean 5/5 review, read from the Confidence Score review section, on a pull request at or below your risk cap that passes your review filters. Its risk tiers are:
- Low: docs, tests, styling and small low-risk changes.
- Medium: ordinary business logic.
- High: dependency updates, build or runtime config, and core shared modules.
- Critical: auth, secrets, billing, database migrations, infra or CI, and public APIs.
With no cap the ceiling is Critical, so any 5/5 pull request can be approved. The docs recommend starting at Low.
It never approves a draft, closed or merged pull request, one that received commits after the review started, or one labeled do-not-merge or manual-review. Per-repository settings go in a .greptile file. When the file and the dashboard both set autoApprove, the stricter value wins for every field:
{
"autoApprove": {
"enabled": true,
"riskCeiling": "low",
"filters": {
"excludePaths": ["src/auth/**", "db/migrations", ".github/workflows/**"]
}
}
}cubic
cubic configures auto-approval per repository, with three behaviors: Disabled (comments only), Shadow (shows what it would have approved) and Live (submits approvals). The policy is Low-risk only (the recommended default), Custom (your own prompt) or Always (any clean review). By default any open cubic issue blocks approval, unless you allow open issues at priorities you choose. Under the Low-risk only and Custom policies, an approval agent "makes a fresh decision from the current PR diff"; under Always, cubic approves once no rule blocks approval. The agent sees the PR details, the diff, earlier decisions, and open or dismissed issues.
Never-auto-approve rules block on changed paths, author, head or base branch, labels or title. Only-auto-approve rules are an allowlist that every changed path must match. Never rules take precedence.
Cursor PR Routing & Approval
Cursor's agent assigns reviewers from code ownership and commit history and can approve low-risk changes. It decides from risk scoring, approval policy files, AI review agent findings, your configuration and the current review state. It won't approve a pull request above the Maximum Risk for Approval, or one where Bugbot or Security Agents report findings that need human review. Approval criteria come from a custom prompt or from Cursor's managed defaults, which the docs don't spell out. Policy files take precedence over the prompt.
For each changed file, the closest APPROVAL_POLICY.md in its directory or a parent directory has priority. When policies conflict and it isn't clear which is more specific, the agent follows the stricter instruction and doesn't auto-approve. A pull request that changes a policy or routing file is judged against the base-branch version, or sent to human review. The docs say the feature "does not replace a full code review."
CodeAnt
CodeAnt's Resolved comments mode approves once every thread CodeAnt opened is resolved; threads opened by people don't block it. A check runs 60 seconds after the review with the head SHA pinned, so a commit that lands during that minute cancels the approval. Policy agent mode runs after CodeAnt's threads are resolved and approves only when a model returns approve, reports no blockers, assigns a risk within your threshold (low, medium or high) and reaches at least 80% confidence. Its shadow mode posts the decision as a comment and never approves.
Policy rules live in .codeant/approval.json on the base branch, each with files, exclude_files and a decision. A matching human_review rule beats any allow rule, and human_review is the default decision. A pull request that changes .codeant/approval.json is never auto-approved. One with more than 300 changed files, more than 60,000 patch characters or a missing patch goes to a person.
Does the AI approval count toward required reviews?
Your GitHub rules decide. Branch protection can require approving reviews "from people with write permissions in the repository or from a designated code owner". It can also require each code owner to approve the code they own, and require the most recent push to be approved by someone other than the person who pushed it. GitHub's branch protection page doesn't say whether reviews from apps count.
The vendor docs say:
- Copilot: an enabled approval "satisfies your repository's required-approval rule the same way a teammate's approval would". The docs don't address code owner review.
- CodeAnt: counts as one normal review, but doesn't satisfy CODEOWNERS or requirements for specific users or teams unless the CodeAnt installation user is listed.
- cubic: "GitHub branch protection still applies, including required checks, required reviewers, and code owner rules."
- Greptile: "Your repository's merge rules still enforce any required human approvals, checks, and discussion resolution before merging."
- Cursor: not addressed.
After a new push:
- Copilot's approval is dismissed.
- Greptile dismisses its own earlier approval.
- CodeAnt says GitHub dismisses its approval like any reviewer's.
- cubic decides from the review of the latest commit.
- Cursor's page doesn't say.
Turn on GitHub's Dismiss stale pull request approvals when new commits are pushed so no approval outlives the diff it covered. Keep Require review from Code Owners on, with human teams owning auth, migrations and infrastructure. Then test in a sandbox repository whether the bot's approval satisfies your actual ruleset.
How Warpway's Auto-approve trust level differs
Warpway is a review orchestrator for GitHub pull requests. Lenses such as Correctness and Security investigate each change, and questions AI can't resolve go to a person as human tasks. Its highest trust level, Auto-approve, submits an APPROVE review only when every deterministic condition holds for the exact commit it reviewed. Code computes eligibility from stored review results immediately before approving. Warpway never approves because a model reported high confidence.
What Warpway checks before approving:
- It waits for the required review to finish. Every required lens must be Cleared. This is stricter than the merge gate: a lens whose findings are merely below the blocking severities doesn't count. No required lens may be Incomplete, no required human task may be open, and every required sign-off must be present.
- Findings from any lens block. No finding at a blocking severity may be open in any lens, including lenses set to
warnornone. - CI must succeed. Configured checks must conclude
success(neutralandskippeddon't count). No other check on the commit may be failing or still running, and every runtime verification run must have succeeded. - Commit and policy are pinned. The head must be the reviewed commit, and the review must have used the base branch's current policy. Configuration always comes from the base branch, so a pull request can't loosen the rules that approve it.
- Exclusions fail closed.
excluded_pathsandexcluded_categoriesblock approval, and path rules fail if Warpway couldn't get the complete list of changed files.docs_tests_onlyis decided by file path, never by the change analysis. - It withdraws only its own approval. If a later investigation demonstrates a material defect, Warpway withdraws its own approval of that head commit; if GitHub's protected-review permissions prevent that, the dashboard and check show that a repository administrator must dismiss it. It never dismisses a person's review.
version: 1
auto_approve:
enabled: true
docs_tests_only: true
max_changed_lines: 300
excluded_paths:
- auth/**
- migrations/**
required_ci_checks:
- unit-testsTurning it on takes:
- the Team plan;
- an Owner enabling it for the organization and then for the repository;
- trust level 4;
auto_approve.enabled: truein policy.
Every approval writes an audit event with the commit, the policy version and the result of each condition. Warpway never merges, and as with the tools above, your GitHub rules decide whether its approval counts. The auto-approval docs list all thirteen conditions.
The limits: Warpway works with GitHub only. The gate is deterministic, but whether a lens is Cleared comes from AI investigation. Semantic categories come from a model's change analysis, with code adding the ones file paths reveal, such as migrations. The trust-level docs suggest Auto-approve only for narrow, low-risk classes of change, such as documentation and test-only pull requests or small Dependabot updates.
Rolling out AI approvals
- Pick one narrow class of change, such as docs and tests or dependency bumps. Greptile recommends starting at Low.
- Watch before approving. The shadow modes in cubic and CodeAnt post the decision without approving, and Copilot's assessment appears in every review.
- Put sensitive paths on the tool's deny list: Greptile
excludePaths, cubic never-auto-approve rules, CodeAnthuman_reviewrules, Cursor policy files or Warpwayexcluded_paths. For Copilot, keep the allowlist of paths that count narrow. - Turn on stale-approval dismissal and code owner review, then confirm in a sandbox how the bot's approval interacts with your ruleset.
- Keep a required check in front of merges. For Warpway that is merge gating at Gate or above.
For what a person should still examine in agent-written changes, see How to review AI-generated pull requests.
Frequently asked questions
Does a Copilot approval satisfy CODEOWNERS review?
GitHub's Copilot docs say an enabled approval satisfies the required-approval rule the same way a teammate's approval would, but they do not address code owner review. GitHub's Require review from Code Owners setting needs the code owner of the affected code to approve. If Copilot is not listed as a code owner, plan on a person approving owned paths, and test the behavior in a sandbox repository first.
Do AI auto-approve features work on GitLab or Bitbucket?
It depends on the tool. Greptile's auto-approve works on GitHub, GitLab, Bitbucket Cloud and Gitea, but not on Bitbucket Data Center or Perforce. CodeAnt's Auto Approve PR is GitHub and GitHub Enterprise only, Cursor's PR Routing & Approval supports GitHub and Origin repositories, and Copilot code review is part of GitHub. Warpway is a GitHub App and works with GitHub only.
Who is allowed to turn on AI approvals?
Copilot approvals are controlled by enterprise, organization and repository admins, and are disabled at the enterprise level by default. In Cursor, every team member can edit PR Routing & Approval on Team plans, while on Enterprise plans only team admins can. In Warpway, only an organization Owner can enable auto-approval, and an Admin can lower the trust level to turn it off. The Greptile, cubic and CodeAnt pages cited here do not name a required role.
Can a pull request change the auto-approve policy that reviews it?
Some tools explicitly prevent this. Cursor judges a pull request that changes an approval policy or routing file with the base-branch version, or sends it to human review. CodeAnt reads .codeant/approval.json from the base branch and never auto-approves a pull request that changes it. Warpway always reads .warpway.yml from the base branch, so an edit takes effect only after it merges.
Sources
- Copilot code review can now approve pull requests - GitHub Changelog
- Configuring code review by GitHub Copilot - GitHub Docs
- Using GitHub Copilot code review - GitHub Docs
- About protected branches - GitHub Docs
- Auto-approve PRs - Greptile Docs
- Auto-approval - cubic Docs
- PR Routing & Approval - Cursor Docs
- Auto Approve PR - CodeAnt AI Docs