Peer Reviewer Assistant

Last updated: Oct 8, 2026


The Peer Reviewer Assistant reviews the code changes of a pull request or a merge request (PR/MR). It reports the vulnerabilities that the change introduces in your code hosting platform.

The assistant covers the branch where the work occurs. A feature branch has a short life, and you do not register it on the platform. Without the assistant, you find its vulnerabilities only after the merge.

To connect your platform, refer to its own page: GitHub, GitLab, or Azure DevOps. When a PR/MR gets no review, refer to Troubleshooting.

Availability in each platform

FunctionGitHubGitLabAzure DevOps
Review of the lines that the change addsAvailableAvailableAvailable
Comment in the PR/MRAvailableAvailableAvailable
Review of each new commitAvailableOn the roadmapOn the roadmap
Status check on the commitAvailableOn the roadmapOn the roadmap
Severity threshold of your policyAvailableOn the roadmapOn the roadmap
Exclusions of the rootAvailableOn the roadmapOn the roadmap
ExceptionsAvailableOn the roadmapOn the roadmap
Record in the DevSecOps sectionAvailableOn the roadmapOn the roadmap
Block the mergeAvailableOn the roadmapOn the roadmap

What the assistant reviews

The assistant compares the PR/MR against the merge base of the branch that the change targets. It reports only the vulnerabilities on the lines that the change adds.

The assistant does not report a line that the change does not add. This is true also when a scanner finds a vulnerability on that line. Thus a PR/MR that changes a file with known vulnerabilities reports nothing. The author does not receive the history of the file.

The assistant runs these Fluid Attacks scanners on the code changes:

ScannerWhat it detects
SASTVulnerabilities that the change introduces in the code
SCAVulnerabilities in the dependencies that the change affects
SS (Secret Scanning)Secrets and credentials that the change introduces

The assistant does not run DAST, MAST, or CSPM analysis.

What starts a review

Action on the PR/MRGitHubGitLabAzure DevOps
You open itYesYesYes
You push a new commitYesNoNo
You open it againYesNoNo
You ask for a re-run of the checkYes——
You close or merge itNo. The platform closes the reviewNoNo
You change the target branchNoNoNo
You mark it as Ready for reviewNo——

The classes of vulnerability

ClassWhat it meansEffect on the check
UnmanagedThe score is equal to the threshold or more, and it has no exceptionThe check fails
AllowedAn exception in the platform covers itThe check does not fail
Below thresholdThe score is less than the severity thresholdThe check does not fail

The severity labels obey the CVSS 4.0 score:

LabelScore
Critical9.0 and more
High7.0 to 8.9
Medium4.0 to 6.9
LowLess than 4.0

The summary comment

The assistant keeps one comment in each pull request. It edits this comment at each review. Thus the conversation stays clear.

The heading of the comment is Fluid Attacks security analysis. Below the heading, a headline gives the result:

HeadlineWhen
Failed · 2 unmanaged vulnerabilitiesThere is one unmanaged vulnerability or more
Passed · No vulnerabilities foundThe assistant reported nothing
Passed (accepted risk) · 3 vulnerabilities allowed in Fluid AttacksAn exception covers each vulnerability
Passed · 1 vulnerability below the severity thresholdAll the vulnerabilities are below the threshold
Incomplete · The security scan could not completeThe scan did not end

Below the headline, the comment has these parts:

  • A count line, 2 Unmanaged · 1 Allowed, when there is an unmanaged vulnerability or an allowed vulnerability.
  • A table with the three most severe vulnerabilities. The table shows the severity, the weakness, and the location of each one.
  • The line +57 more in Fluid Attacks, when the review found more than three.
  • The line Not failing the check: 1 vulnerability below the threshold., when some vulnerabilities are below the threshold and some are not.
  • A last line that attaches the result to a commit: PR #18 · commit ea65c74 · scanned 2026-10-07 00:39 UTC.
  • The link View details in Fluid Attacks →. This link opens the review of that pull request in the platform.
Summary comment of the Peer Reviewer Assistant with the Failed result

When every vulnerability is below the severity threshold, the headline says Passed:

Summary comment with the Passed result and a vulnerability below the severity threshold

The status check

Available in: GitHub. On the roadmap for GitLab and Azure DevOps.

The name of the check is Peer Reviewer Assistant. GitHub shows it as Fluid Attacks Platform / Peer Reviewer Assistant, because GitHub puts the name of the app before the name of the check. Use this name when you make the check necessary in the branch protection.

ResultThe check reports
PassedSuccess
Passed (accepted risk)Success
FailedFailure
IncompleteFailure

Annotations in the diff

The assistant writes an annotation on the line of each vulnerability:

  • An unmanaged vulnerability has an annotation of the type failure.
  • A vulnerability below the threshold has an annotation of the type notice.
Checks tab of a pull request with the annotations of the assistant in the diff

The assistant writes a maximum of 50 annotations. When the review finds more than 50, the summary of the check ends with The first 50 are annotated. The platform shows the full list.

The severity threshold

Available in: GitHub. On the roadmap for GitLab and Azure DevOps.

The review uses the same policy as CI Gate: Minimum to break the build. You set this policy in Policies, at the level of the organization. You can also set a different value for one group. Refer to Security gates.

Minimum to break the build field in the DevSecOps policies of the group

A vulnerability breaks the check when its score is equal to the threshold or more than the threshold:

ThresholdScore of the vulnerabilityResult
8.18.1The check fails
8.18.0The check does not fail
8.28.1The check does not fail

The assistant detects and reports a vulnerability below the threshold. The summary comment shows it, and the diff shows it as a notice. This vulnerability does not make the check fail.

If you change the threshold, ask GitHub to re-run the check. The assistant does a new scan and applies the new threshold. Thus you do not push a commit.

Exclude files from the review

Available in: GitHub. On the roadmap for GitLab and Azure DevOps.

Each Git root has an Exclusions field. The patterns of this field use gitignore syntax. The review obeys them: if an exclusion covers a file, the assistant does not report that file. This is true also when the change adds a vulnerable line to the file.

You edit the exclusions where you register the root. Refer to Exclude subpaths in Git repositories.

Exclusions field of a Git root in the Scope section of the group
PatternWhat it excludes
*.min.jsAll the minified JavaScript files
node_modules/The node_modules directory and all its content
test/fixtures/*All the files below test/fixtures
src/legacy/The src/legacy directory
config/local.*config/local.yaml, config/local.json, and so on

The obsolete exclusion files of the repository

Two files in the root directory of the repository still exclude files today:

  • .fluidattacksignore
  • fluidattacks-exclude.txt

To move the patterns:

  1. Open the file and copy its patterns.
  2. Go to the Scope section of the group.
  3. Open the Git root of that repository.
  4. Add the patterns in the Exclusions field.
  5. Delete the file from the repository.

Until you delete a file, the assistant obeys these rules:

  • If the repository has the two files, the assistant uses .fluidattacksignore.
  • A line that starts with # is a comment.
  • The assistant ignores an empty line.

Exceptions

Available in: GitHub. On the roadmap for GitLab and Azure DevOps.

An exception permits the merge of a pull request with a vulnerability that your team accepts. You do not change the code, and the policy stays the same for all the other pull requests.

Grant an exception

  1. Open the review of the pull request in the platform. The quickest way is the View details in Fluid Attacks → link in the summary comment.
  2. In the Vulnerabilities tab, select the unmanaged vulnerabilities that you accept.
  3. Click Grant exception.
  4. Examine the list below Vulnerabilities to except.
  5. Write a justification: why this pull request can merge with this vulnerability.
  6. Confirm.
Vulnerabilities tab with two unmanaged vulnerabilities selected

The Grant exception window lists what you accept, and it asks for the justification:

Grant exception window with the list of vulnerabilities and the justification field

The check changes immediately. You do not push a commit, and the assistant does not scan again. The platform publishes a new check run on the same commit, and it writes the summary comment again.

What an exception covers, and for how long

SituationWhat occurs
You push a new commit to the pull requestThe exception continues to apply, also when the code moves to a different line
You open the pull request againThe exception applies again
You merge or close the pull requestThe exception ends
The same vulnerable code occurs in a different pull requestThe exception does not cover it. You decide each pull request separately
The same block of code occurs two times in one pull requestThese are two different vulnerabilities. An exception on one does not cover the other

You cannot select a vulnerability below the severity threshold. This vulnerability does not make the check fail, thus there is nothing to accept.

Review in the platform

Available in: GitHub. On the roadmap for GitLab and Azure DevOps.

You find each review of a pull request in the DevSecOps section of the group. A row with the Type Peer Reviewer Assistant is a review of a pull request.

ColumnWhat it shows for a pull request
IdentifierPR #18 · ea65c74, with the source branch below
TypePeer Reviewer Assistant
StatusIn progress, Passed, Passed (accepted risk), Failed, or Incomplete
VulnerabilitiesThe total, with N unmanaged · M allowed below. A dash while the scan continues
Breaks buildYes or No. A dash while the scan continues
StrictnessStrict. One unmanaged vulnerability makes the check fail
TechniqueSAST · SCA · SS
Git repositoryThe nickname of the root
Executed dateThe date when the review ended
DevSecOps table of the group with the reviews of the Peer Reviewer Assistant

The detail of one review

Click the identifier of the row to open the review. The View details in Fluid Attacks → link in the summary comment opens the same page.

The header shows the number and the title of the pull request, its status, and six fields:

FieldWhat it shows
Git repositoryThe nickname of the root
BranchThe source branch and the target branch
CommitThe commit of the review
Pull requestThe number of the pull request
AuthorThe person who opened the pull request
Executed dateThe date when the review ended

Copy link gives you the address of the review. Send it to a person who can grant an exception. Open in SCM opens the pull request again.

The review has three tabs.

Vulnerabilities

This tab shows each vulnerability of the review, with its weakness, its file, its line, its technique, and its score. The Gate column shows Unmanaged, Allowed, or Below threshold. An allowed vulnerability also shows which exception covers it. Click Export CSV to get the list as a file. You also grant the exceptions in this tab.

Vulnerabilities tab of a pull request review with the Gate column

Exceptions

This tab shows one card for each exception, with its justification, the person who granted it, and the date.

Exceptions tab of a pull request review with one exception granted

Pushes

This tab shows one row for each commit of the review, the newest first, with the result of that review and the quantity of unmanaged vulnerabilities. It is the history of how the pull request arrived at its current state.

Pushes tab of a pull request review with the history of each commit

What to do with each result

ResultWhat you must do
FailedCorrect the unmanaged vulnerabilities. If you cannot, ask your group manager for an exception in Fluid Attacks
Passed (accepted risk)Nothing. The platform keeps the record of each allowed vulnerability
Passed, with vulnerabilities below the thresholdNothing is necessary. But it is better to correct them
IncompletePush a new commit, or ask for a re-run of the check

On this page