doc/user/gitlab_duo/code_review.md
{{< details >}}
{{< /details >}}
{{< collapsible title="Model information" >}}
{{< /collapsible >}}
{{< history >}}
ai_review_merge_request and duo_code_review_chat, both disabled by default.ai_review_merge_request and duo_code_review_chat enabled by default on GitLab.com, GitLab Self-Managed, and GitLab Dedicated in 17.10.ai_review_merge_request removed in GitLab 18.1.duo_code_review_chat removed in GitLab 18.1.{{< /history >}}
[!note] Depending on your add-on and group settings, GitLab runs one of two code review features:
- Code Review Flow: the agentic version, part of GitLab Duo Agent Platform.
- GitLab Duo Code Review: the non-agentic version, available only for users with the GitLab Duo Enterprise add-on.
This page describes the non-agentic version. Learn how the two features compare.
GitLab Duo Code Review helps you streamline code reviews in your projects.
When your merge request is ready to be reviewed, use GitLab Duo Code Review to perform an initial review:
/assign_reviewer @GitLabDuo, or assign GitLab Duo as reviewer.<i class="fa-youtube-play" aria-hidden="true"></i> Watch an overview
Provide feedback on this feature in issue 517386.
When you use GitLab Duo Code Review, the following data is sent to the large language model:
To specify content to exclude, see exclude context from Code Review.
GitLab Duo Code Review sends the merge request diffs and the original contents of changed files to the model. The combined prompt is subject to the selected model's context window.
For large merge requests, GitLab Duo Code Review uses a fallback to improve the chance of a successful review:
The retry without file contents reduces prompt size, but also reduces the context the model has when reviewing your changes. Comments might be less specific than a review that includes the original file contents.
The AI Gateway request timeout for GitLab Duo Code Review is 120 seconds. Reviews that do not complete in this window also surface as generic errors.
To reduce the risk of failed reviews on large merge requests:
You can mention @GitLabDuo in comments to interact with GitLab Duo on your merge request. You can
ask follow-up questions on its review comments, or ask questions on any discussion thread in your
merge request.
Interactions with GitLab Duo can help to improve the suggestions and feedback as you work to improve your merge request.
Feedback provided to GitLab Duo does not influence later reviews of other merge requests. There is a feature request to add this functionality, see issue 560116.
You can create custom MR review instructions to ensure consistent and specific code review standards in your project.
For more information, see customize review instructions for GitLab Duo.
{{< history >}}
{{< /history >}}
Automatic reviews from GitLab Duo ensure that all merge requests in your project receive an initial review. After a merge request is created, GitLab Duo reviews it unless:
Prerequisites:
To enable @GitLabDuo to automatically review merge requests:
{{< history >}}
cascading_auto_duo_code_review_settings. Disabled by default.cascading_auto_duo_code_review_settings removed in GitLab 18.7.{{< /history >}}
Use group or application settings to enable automatic reviews for multiple projects.
Prerequisites:
To enable automatic reviews for groups:
To enable automatic reviews for all projects:
Settings cascade from application to group to project. More specific settings override broader ones.
{{< details >}}
{{< /details >}}
{{< history >}}
duo_code_review_automated_rules. Enabled by default.{{< /history >}}
[!flag] The availability of this feature is controlled by a feature flag. For more information, see the history.
When automatic reviews are turned on for a project,
GitLab Duo reviews every eligible merge request.
To exclude specific merge requests, define exclusion rules in a
.gitlab/duo/mr-review-automated-rules.yaml file.
Exclusion rules only prevent automatic reviews. You can still request a review manually for any excluded merge request.
To define exclusion rules:
In the root of your repository, create a .gitlab/duo directory if one doesn't already exist.
In the .gitlab/duo directory, create a file named mr-review-automated-rules.yaml.
Add exclusion rules using the following format:
exclude:
target_branches:
- <pattern>
source_branches:
- <pattern>
authors:
- <pattern>
Each key is optional. GitLab Duo skips the automatic review when a merge request matches any pattern in any category:
target_branches: Matches the target branch name of the merge request.source_branches: Matches the source branch name of the merge request.authors: Matches the username of the merge request author.Patterns support wildcard (glob) matching.
For example, dependabot/* matches any source branch that starts with dependabot/.
For example, to skip automatic reviews for merge requests that target a release branch or that a bot account creates:
exclude:
target_branches:
- "release/*"
authors:
- "*-bot"
Commit the file to the default branch of your repository.
GitLab Duo reads the exclusion rules from the default branch of your repository. GitLab Duo does not apply rules on other branches.
To define exclusion rules for all projects in a group and its subgroups, specify a project to use
as a template.
The template project must contain a .gitlab/duo/mr-review-automated-rules.yaml file.
[!note] If you use custom review instructions for a group, add your exclusion rules to the same template project. You do not need to specify the template project in the UI again. GitLab Duo automatically reads the
mr-review-automated-rules.yamlfile.
GitLab Duo combines the exclusion rules from the group template project with the rules defined in the individual project. If the same category is defined at both levels, the project's rules take precedence. When a group and its subgroups each set a template project, GitLab Duo combines the rules from every level.
Prerequisites:
To configure exclusion rules for a group:
.gitlab/duo/mr-review-automated-rules.yaml file.GitLab Duo Code Review might fail to post a review on merge requests with many large changed files. Common causes include:
For details on the retry and timeout behavior, see behavior on large merge requests.
To work around the failure:
For more information, see issue 596794.