> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coderabbit.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# CodeRabbit status check

> What the CodeRabbit check on a pull request means, what to do when it fails, how to require it before merging, and what it does not guarantee.

All Platforms (This feature is available on all supported platforms: GitHub, GitLab, Azure DevOps, and Bitbucket.)

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](https://mintcdn.com/coderabbit/y6O9Rap6GNjCe6Yh/assets/images/status-check-merge-box.png?fit=max\&auto=format\&n=y6O9Rap6GNjCe6Yh\&q=85\&s=5389f78d7fe5941438f41525b4e43034)

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

> [!NOTE]
>
> The `CodeRabbit` check is separate from [review status messages](https://docs.coderabbit.ai/pr-reviews/walkthroughs.md#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

| State | What you see | What it means | What to do |
| - | - | - | - |
| Pending | `Review queued` or `Review in progress` | CodeRabbit is reviewing the commit. A required check blocks merging until the review ends. | Wait for the review. |
| Passed | `Finished` on GitHub, `Review completed` or `Review approved` elsewhere. On GitLab, Azure DevOps, and Bitbucket, also `No reviewable changes` or `Prior review carried forward` | CodeRabbit reviewed the commit and posted its results, or found nothing to review. The review can cover only the commits pushed since the last review, and files excluded by path filters or size limits are not reviewed. | Read the review and address its findings. |
| Skipped | `Review skipped`, `Review paused`, `No files to review`, `Too many files to review`, or `Incremental review skipped` | CodeRabbit did not review the commit. The check counts as passing for a required check, but no review happened. | Read CodeRabbit's comment in the pull request for the reason. Fix the cause, or comment `@coderabbitai full review`, which overrides configuration skips such as drafts, ignored authors, and disabled automatic reviews, but not a locked conversation, a bot author without a seat, or a pull request with no reviewable files. For a paused review, comment `@coderabbitai resume`. |
| Rate limited | `Review rate limited` | A usage limit stopped the review. The check counts as passing for a required check, but no review happened. | Comment `@coderabbitai rate limit` to see when reviews are available again, then request one. |
| Failed | `Review failed`, or an error that names its cause, such as `Summary could not be published` | The review ran into an error. The check fails only when [`reviews.fail_commit_status`](#fail-the-check-when-a-review-errors) is `true`. Otherwise it passes. | See [When the check fails](#when-the-check-fails). |
| Cancelled | `Review cancelled` (GitHub only) | The review stopped before it finished, for example because the pull request changed while CodeRabbit was reviewing it. A required check does not pass. | Push a commit or comment `@coderabbitai full review`. |
| Missing | No `CodeRabbit` check on the head commit | CodeRabbit did not report on this commit. A required check waits and blocks merging. | See [When there is no check](#when-there-is-no-check). |

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](https://mintcdn.com/coderabbit/y6O9Rap6GNjCe6Yh/assets/images/status-check-run.png?fit=max\&auto=format\&n=y6O9Rap6GNjCe6Yh\&q=85\&s=23c2a985ae13d33238637d361a74720d)

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](#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](https://docs.coderabbit.ai/platforms/azure-devops.md#step-4-grant-the-required-permissions). 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](https://docs.coderabbit.ai/pr-reviews/approval-policies.md) 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](https://docs.coderabbit.ai/platforms/azure-devops.md#detecting-review-completion).

## Fail the check when a review errors

[`reviews.fail_commit_status`](https://docs.coderabbit.ai/reference/configuration#param-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:

| Description | What happened |
| - | - |
| `Summary could not be published` | CodeRabbit could not publish the pull request summary. |
| `Review state could not be read` | CodeRabbit could not read the review state it keeps for the pull request, so it stopped before reviewing. Existing findings stay in place. Comment `@coderabbitai review` to retry. |
| `Review incomplete: some file diffs could not be obtained` or `Review incomplete: oversized files could not be reviewed` | Azure DevOps did not return the diffs of some files, or some files were too large, so CodeRabbit could not review them. |
| `Review could not complete: Azure DevOps quota protection` | Azure DevOps quota protection stopped the review. |
| `Review not published` | CodeRabbit recorded a review of the commit but never published it. This appears in the commit status only. |

When `reviews.review_progress` is `false`, or with self-hosted CodeRabbit, these descriptions replace `Review failed`:

| Description | What happened |
| - | - |
| `Internal error occurred during review` | The review failed unexpectedly. |
| `Failed to post review comments` | CodeRabbit could not post its review comments. On GitHub, the description names the cause instead: `GitHub review submission failed`, `GitHub rate limit blocked review`, or `GitHub unavailable during review post`. |

`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](https://docs.coderabbit.ai/guides/configuration-overview.md#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](https://docs.coderabbit.ai/pr-reviews/approval-policies.md).

## Platform differences

| Platform | Reported as | States |
| - | - | - |
| GitHub and GitHub Enterprise Server with CodeRabbit Cloud | Check run named `CodeRabbit` | In progress (`Review in progress`), then success (`Finished`), skipped, neutral, failure, or cancelled |
| GitHub with self-hosted CodeRabbit, or with `reviews.review_progress` set to `false` | Commit status named `CodeRabbit` | Pending (`Review in progress`), then success or failure |
| GitLab | Commit status named `CodeRabbit` in a merge request pipeline | Pending, then success or failed |
| Azure DevOps | Git commit status with genre `code review` and name `CodeRabbit` | Pending, then succeeded or failed |
| Bitbucket Cloud and Data Center | Build status named `CodeRabbit` | In progress, then successful or failed |

* 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](https://docs.coderabbit.ai/pr-reviews/automatic-approvals.md) 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

**Using configuration file**

```yaml .coderabbit.yaml theme={null}
reviews:
  review_progress: true
  commit_status: true
  fail_commit_status: false
```

**Using web interface**

In your repository or organization settings, switch to **All Settings**, then under **Reviews**, set **Review Progress**, **Commit Status**, and **Fail Commit Status**.

* [`reviews.review_progress`](https://docs.coderabbit.ai/reference/configuration#param-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`](https://docs.coderabbit.ai/reference/configuration#param-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`](https://docs.coderabbit.ai/reference/configuration#param-reviews-fail-commit-status) applies to the check run and the commit status.

## What's next

> **[Choose an approval policy](https://docs.coderabbit.ai/pr-reviews/approval-policies.md)**
>
> Combine CodeRabbit's approval, human reviews, and GitHub branch rules to decide what a pull request needs before it merges.

> **[Automatic Approvals](https://docs.coderabbit.ai/pr-reviews/automatic-approvals.md)**
>
> Let CodeRabbit approve pull requests once its review is complete and its feedback is resolved.

> **[Manage code reviews](https://docs.coderabbit.ai/guides/commands.md)**
>
> Request another review, pause reviews, or resolve threads with `@coderabbitai` commands.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.