Skip to main content
CodeRabbit reports each review on the pull request’s head commit under the name CodeRabbit, next to your CI results. On GitHub and GitHub Enterprise Server with CodeRabbit Cloud, it is a check run when reviews.review_progress is true, the default, and a commit status when it is false. On GitLab, Azure DevOps, and Bitbucket, and on GitHub with self-hosted CodeRabbit, it is a commit status, which Bitbucket shows as a build status. Branch rules can require it before a pull request merges.
GitHub merge box listing a CI check and the CodeRabbit commit status with the description Review completed

The CodeRabbit commit status in a GitHub pull request's merge box, next to a CI check

The CodeRabbit check is separate from review status messages, the comments in which CodeRabbit explains why it skipped a review. reviews.review_status controls those comments and does not affect the check.

What the check means

On GitHub, the check run’s title is shown next to its name, and the check’s summary lists each review stage and how long it took once the review ends. A skipped review shows Skipped and a rate-limited review shows Neutral. GitLab, Azure DevOps, and Bitbucket have no skipped or neutral state, so the commit status reports success for these reviews, and its description says what happened. Each platform uses its own names for the states, such as succeeded and failed on Azure DevOps.
GitHub Checks tab showing the CodeRabbit check run titled Finished, with Result: Success - Review completed and a table of review steps, their status, and their duration

The CodeRabbit check run in a GitHub pull request's Checks tab, with its title and the time each review stage took

When the check fails

  1. Read the error. On GitHub with a check run, open the CodeRabbit check: its title is Review failed, and its summary starts with Result: Error. For most errors, such as an unexpected failure or a failure to post review comments, it says only Review failed. Some errors name their cause, as listed under Failure descriptions. On GitHub with self-hosted CodeRabbit or reviews.review_progress set to false, and on other platforms, the commit status description shows the error instead. There it can be one of the descriptions in the second table of that section.
  2. Run the review again. Push a new commit, or comment @coderabbitai full review, which reviews the same commit again. The check turns green when the new review succeeds. Prefer @coderabbitai full review over a plain @coderabbitai review: when CodeRabbit recorded the failed commit as reviewed, a plain review replies that the last commit was already reviewed and leaves the failure in place.
  3. If the review keeps failing, a person on the ruleset’s bypass list, or an administrator when branch protection allows it, can merge the pull request without the check. To stop review errors from blocking merges, set reviews.fail_commit_status to false.
On GitLab, Azure DevOps, and Bitbucket Data Center, a failure can come from an earlier commit. When CodeRabbit skips a commit, for example when a label change does not start a review, or when the pull request was opened by the account CodeRabbit posts its reviews with, it can copy the status of the most recently reviewed commit to the new head commit, with the description Status carried forward from previous reviewed commit. If that status was a failure, the new commit fails too. The next review that succeeds on the new head commit, including one you start with @coderabbitai full review, replaces it. On GitHub, adding or removing a label that does not start a review leaves an existing failure in place. Any other skipped review on the same commit replaces the failure with a skipped check.

When there is no check

CodeRabbit posts nothing for a commit when:
  • CodeRabbit never received or processed the event, for example because the app is not installed on the repository or a webhook was lost.
  • A newer push replaced the commit before the review started.
  • You requested a review of a commit that CodeRabbit already reviewed. CodeRabbit replies in the pull request instead.
  • reviews.commit_status is false on a platform that uses the commit status.
  • CodeRabbit lacks permission to post it, for example because the GitHub App installation has not accepted the Checks or Commit statuses permission, or because the Azure DevOps credential lacks Code access to post statuses. Fix the permission, then comment @coderabbitai full review.
On GitHub, the check appears once CodeRabbit starts working on the review, so for a short time after a push there may be no CodeRabbit check yet. A required check that never appears keeps the pull request from merging. Comment @coderabbitai full review to run a review and post the check.

Require the check before merging

GitHub

In a branch ruleset or branch protection rule, turn on Require status checks to pass before merging and add CodeRabbit. GitHub lists the check after CodeRabbit has reported it on a recent commit in the repository. If you select an expected source for the check, select the CodeRabbit app. GitHub matches a required check by name, so the requirement is met by the check run and also by the commit status that CodeRabbit posts when check runs are off. GitHub treats a check that succeeded, was skipped, or ended as neutral as passing. A required CodeRabbit check therefore blocks merging while a review is in progress, when a review fails with fail_commit_status set to true, when a review is cancelled, and while no check exists. It does not block skipped or rate-limited reviews. If the branch uses a merge queue, CodeRabbit reports a successful CodeRabbit check titled Pull request review passed on the commit that the merge queue creates, so the required check does not hold up the queue. CodeRabbit does not review that commit. See Choose an approval policy for setups that combine the check with CodeRabbit’s approval and human reviews.

GitLab

CodeRabbit adds the CodeRabbit commit status to the merge request’s head pipeline when a pipeline exists for the head commit. Otherwise, GitLab adds the status to a separate external pipeline. If the project requires Pipelines must succeed, a pending or failed CodeRabbit status is part of the pipeline result. Test the setup on one merge request before you rely on it.

Bitbucket

CodeRabbit reports a build status named CodeRabbit with the key coderabbitai/<pull request number>. Merge checks that require successful builds, or no failed builds, can include it. Test the setup on one pull request before you rely on it.

Azure DevOps

The CodeRabbit status is a Git commit status, not a pull request status, so an Azure DevOps status branch policy cannot require it. To start automation when a review finishes, see Detecting review completion.

Fail the check when a review errors

reviews.fail_commit_status decides what the check reports when a review errors. It is false by default.
  • false: On GitHub, the check run ends as neutral. On other platforms, the commit status is success, and its description is Review failed or names the error. A required check passes, so a failed review never blocks merging.
  • true: The check fails, with the same title or description. A required check blocks merging until a later review succeeds.
Skipped and rate-limited reviews are not errors, so this setting never makes them fail. On Azure DevOps, quota protection stops a review with an error, so it follows this setting.

Failure descriptions

On GitHub, these errors appear in the check’s summary. On other platforms, they are the commit status description. By default, with reviews.review_progress set to true, an unexpected error or a failure to post review comments shows only Review failed. These errors show their cause: When reviews.review_progress is false, or with self-hosted CodeRabbit, these descriptions replace Review failed: Review publication stopped: pull request is no longer open is not an error. It means the pull request was closed while CodeRabbit was publishing its review. On GitHub, it shows as a cancelled check titled Review cancelled. On other platforms, it is the commit status description.

What the check does and doesn’t guarantee

No setting guarantees that CodeRabbit reviews every pull request before it merges. The check reports what CodeRabbit did with a commit. The strongest setup on GitHub is:
  • A required CodeRabbit check in a ruleset or branch protection rule.
  • reviews.fail_commit_status set to true, so a failed review blocks merging.
  • Global overrides that set reviews.review_progress, reviews.commit_status, and reviews.fail_commit_status, so a repository or pull request cannot change them.
Even with that setup, a pull request can merge without a full CodeRabbit review when:
  • CodeRabbit skips the review, reviews are paused, or a usage limit stops the review. The check passes.
  • The review covers only the commits pushed since the last review, or leaves out files excluded by path filters or size limits. The check passes.
  • On GitHub, the pull request comes from a branch in the same repository and changes these settings in its own .coderabbit.yaml, which CodeRabbit reads for pull requests opened by members and collaborators. A review command can also change them for one run with --with-config. Global overrides take precedence over both.
  • A person or app on the ruleset’s bypass list merges the pull request.
  • The pull request goes through a merge queue, where CodeRabbit reports a successful check without reviewing the merge-queue commit.
To make sure people review what CodeRabbit skipped, also require human approvals. See Choose an approval policy.

Platform differences

  • On GitHub, if CodeRabbit cannot create or complete the check run, for example because the GitHub App installation has not accepted the Checks write permission, CodeRabbit posts the final result as a CodeRabbit commit status instead, as long as reviews.commit_status is true.
  • CodeRabbit posts Review queued while an automatic review waits to start on GitLab, Azure DevOps, and Bitbucket, but not on GitHub or from self-hosted CodeRabbit.
  • Review approved appears only in the commit status, when Automatic Approvals approves the pull request after a review or after its review threads are resolved. An @coderabbitai approve command does not post it.
  • Only GitLab, Azure DevOps, and Bitbucket Data Center carry a status forward from an earlier commit. Bitbucket Cloud never does.

Configuration

.coderabbit.yaml
  • reviews.review_progress applies to GitHub with CodeRabbit Cloud. When it is true, the default, CodeRabbit reports each review as a check run. When it is false, CodeRabbit posts the commit status instead.
  • reviews.commit_status turns the commit status on or off on GitLab, Azure DevOps, Bitbucket, and on GitHub with self-hosted CodeRabbit or with review_progress set to false. When it is false, those platforms show no CodeRabbit check, and fail_commit_status has no effect there. On GitHub with check runs, it only allows the commit status fallback described above.
  • reviews.fail_commit_status applies to the check run and the commit status.

What’s next

Choose an approval policy

Combine CodeRabbit’s approval, human reviews, and GitHub branch rules to decide what a pull request needs before it merges.

Automatic Approvals

Let CodeRabbit approve pull requests once its review is complete and its feedback is resolved.

Manage code reviews

Request another review, pause reviews, or resolve threads with @coderabbitai commands.