> ## 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.

# Automatic review controls

> Configure when and how CodeRabbit automatically reviews pull requests using the `reviews.auto_review` settings.

export const AllPlatformsBadge = ({tip = "This feature is available on all supported platforms: GitHub, GitLab, Azure DevOps, and Bitbucket.", title = "All Platforms", cta, href, disabled = false}) => {
  return <Tooltip tip={tip} cta={cta} href={href}>
        <Badge icon="globe" disabled={disabled || undefined}>
            {title}
        </Badge>
    </Tooltip>;
};

<AllPlatformsBadge />

The `reviews.auto_review` settings group in [`.coderabbit.yaml`](/getting-started/yaml-configuration) file gives you fine-grained control over when CodeRabbit runs automatic reviews. By default, `enabled` is `true` and CodeRabbit reviews every PR automatically. You can disable reviews globally and re-enable them by keyword or label, apply them only to certain branches, skip draft PRs, pause after a set number of commits, and exclude PRs from specific authors.

<Info>
  Regardless of any auto-review configuration, you can always trigger a review manually by commenting `@coderabbitai review` (incremental) or `@coderabbitai full review` (from scratch) on a pull request.
</Info>

## Scope (which PRs qualify)

Configure which pull requests CodeRabbit will review by specifying branch targets, draft status, labels, and keyword-based opt-in.

### `base_branches`

Specify which target branches should receive automatic reviews.

```yaml theme={null}
reviews:
  auto_review:
    base_branches: []   # default — only the default branch
```

By default, CodeRabbit reviews PRs that target the repository's **default branch** (e.g. `main` or `master`). Use `base_branches` to add other branches.

Each entry is a **regex pattern**:

```yaml theme={null}
reviews:
  auto_review:
    base_branches:
      - "develop"
      - "release/.*"
      - "hotfix/.*"
```

Use `".*"` to match all branches and review every PR regardless of target.

<Info>
  The default branch is always included. `base_branches` extends the set of reviewed branches; it does not replace the default branch.
</Info>

### `drafts`

Include draft PRs in automatic reviews.

```yaml theme={null}
reviews:
  auto_review:
    drafts: false   # default
```

By default, CodeRabbit skips draft PRs. Set `drafts: true` to include them. This is useful for teams that use draft PRs as part of active development and want early feedback.

### `labels`

Control reviews using PR labels, including negative filters.

```yaml theme={null}
reviews:
  auto_review:
    labels: []   # default — no label filter
```

The `labels` array controls which PRs are reviewed based on their labels. Labels prefixed with `!` are **negative** matches (exclusions).

| Configuration        | Effect                                      |
| -------------------- | ------------------------------------------- |
| `[]` (empty)         | All PRs are reviewed (no label filter)      |
| `["bug", "feature"]` | Only PRs with the `bug` or `feature` label  |
| `["!wip"]`           | All PRs **except** those labeled `wip`      |
| `["bug", "!wip"]`    | PRs labeled `bug` but **not** labeled `wip` |

<Info>
  The `labels` setting also triggers reviews even when `enabled: false`. This lets you build fully label-driven workflows: disable automatic review globally, then use specific labels to opt PRs in.
</Info>

**Example — opt-in via label with auto-review disabled:**

```yaml theme={null}
reviews:
  auto_review:
    enabled: false
    labels: ["review-ready"]
```

Only PRs labeled `review-ready` will be reviewed.

### `description_keyword`

Opt-in by PR description when automatic reviews are disabled.

```yaml theme={null}
reviews:
  auto_review:
    enabled: false
    description_keyword: "coderabbit:review"
```

When `enabled` is `false` and `description_keyword` is set to a non-empty string, CodeRabbit reviews any PR whose **description** contains that exact keyword string. PRs without the keyword are skipped.

Leave `description_keyword` empty (the default) to rely solely on label-based opt-in or manual `@coderabbitai review` commands.

***

## Exclusions

Configure rules to skip reviews completely for specific PRs based on title patterns or author. To skip specific **files** within a PR: lock files, generated code, or build artifacts - use [`reviews.path_filters`](/configuration/path-instructions#path-filters) instead.

### `ignore_title_keywords`

Skip reviews for PRs matching specific title keywords.

```yaml theme={null}
reviews:
  auto_review:
    ignore_title_keywords:
      - "WIP"
      - "DO NOT MERGE"
      - "[skip review]"
```

If the PR title contains **any** of these strings (case-insensitive), the review is skipped silently. This is the lightest-weight way to signal that a PR is not ready for review.

### `ignore_usernames`

Skip reviews for PRs from specific authors (bots, service accounts).

```yaml theme={null}
reviews:
  auto_review:
    ignore_usernames:
      - "dependabot[bot]"
      - "renovate[bot]"
      - "github-actions[bot]"
```

PRs authored by any username in this list are skipped silently — no review is posted. This is the recommended way to exclude automated bots, dependency update services, and service accounts.

**Username matching rules:**

* Exact match, **case-sensitive**
* No wildcard or regex support — each entry must be a full username
* Whitespace around entries is trimmed automatically
* Empty strings are ignored

**Common entries by platform:**

| Platform     | Example usernames                                         |
| ------------ | --------------------------------------------------------- |
| GitHub       | `dependabot[bot]`, `renovate[bot]`, `github-actions[bot]` |
| GitLab       | `gitlab-ci-token`, `project_123_bot`                      |
| Azure DevOps | Service account display names                             |

<Warning>
  Copy usernames directly from the PR author field on your Git platform to avoid typos. A single character difference means the PR will be reviewed.
</Warning>

Username skipping takes precedence over all other controls — if a PR author is in `ignore_usernames`, the review is skipped regardless of labels, `enabled`, or any other setting.

To force a review for a skipped author, comment `@coderabbitai review` on the PR.

***

## Incremental review

Configure how CodeRabbit handles updates and subsequent pushes to an existing PR.

### `auto_incremental_review`

Review updates on each new push (default enabled).

```yaml theme={null}
reviews:
  auto_review:
    auto_incremental_review: true   # default
```

When `true` (the default), CodeRabbit re-reviews a PR after each new push, focusing on the **commits added since the last review**. This keeps feedback timely without re-analyzing unchanged code.

Set to `false` to review only when a PR is first opened. Subsequent pushes will be ignored until you [trigger the review manually](#manual-review-commands).

### `auto_pause_after_reviewed_commits`

Pause automatic reviews after reaching a commit threshold.

```yaml theme={null}
reviews:
  auto_review:
    auto_pause_after_reviewed_commits: 5   # default
```

CodeRabbit automatically pauses incremental reviews after this many **reviewed** commits since the last pause. The counter resets each time the pause is lifted.

Set to `0` to disable the pause and always review, no matter how many commits accumulate.

This setting is useful for active feature branches where dozens of small commits would otherwise trigger redundant reviews. After the limit is reached, use `@coderabbitai review` to request a fresh review on demand.

| Value | Behavior                                 |
| ----- | ---------------------------------------- |
| `0`   | Never auto-pause — review every push     |
| `5`   | Pause after 5 reviewed commits (default) |
| `N`   | Pause after N reviewed commits           |

### Manual review commands

When automatic incremental reviews reach their limits, you can use manual commands to control the review process:

* [`@coderabbitai review`](/reference/review-commands#coderabbitai-review) — Request an incremental review of new changes on demand
* [`@coderabbitai full review`](/reference/review-commands#coderabbitai-full-review) — Re-initiate a complete review of all files from scratch. Useful when many incremental updates have accumulated and you want fresh insights on the entire PR
* [`@coderabbitai pause`](/reference/review-commands#coderabbitai-pause) — Temporarily stop automatic reviews
* [`@coderabbitai resume`](/reference/review-commands#coderabbitai-resume) — Restart automatic reviews after a pause

***

## Complete `auto_review` example

```yaml theme={null}
reviews:
  auto_review:
    enabled: true
    auto_incremental_review: true
    auto_pause_after_reviewed_commits: 10
    drafts: false
    base_branches:
      - "develop"
      - "release/.*"
    ignore_title_keywords:
      - "WIP"
      - "[skip review]"
    labels:
      - "!do-not-review"
    ignore_usernames:
      - "dependabot[bot]"
      - "renovate[bot]"
      - "release-bot"
    description_keyword: ""
```

This configuration:

* Reviews all non-draft PRs automatically on each push
* Pauses after 10 reviewed commits
* Also reviews PRs targeting `develop` or any `release/*` branch
* Skips PRs titled with `WIP` or `[skip review]`
* Skips PRs labeled `do-not-review`
* Skips PRs from dependency bots and the release bot

***

## What's next

<CardGroup cols={1}>
  <Card title="Configuration reference" href="/reference/configuration#reviews" icon="book" horizontal>
    See the full auto\_review schema with types, defaults, and constraints
  </Card>

  <Card title="Path instructions" href="/configuration/path-instructions" icon="file-text" horizontal>
    Add per-path review rules to guide CodeRabbit on specific files or directories
  </Card>

  <Card title="Review commands" href="/reference/review-commands" icon="terminal" horizontal>
    Trigger, pause, or override reviews on demand using @coderabbitai commands
  </Card>
</CardGroup>
