Overview
Closing a finding is a permanent audit record. A comment like “false positive” or “accept risk” only repeats the decision that was already recorded in the status, so anyone reading the finding months later — a teammate, a new owner, an auditor — learns nothing from it. Corgea reviews the comment you write when you change a finding’s status and asks again when it does not explain the decision. The bar is low: one specific sentence that a reader could go and check is enough.The justification requirement applies to the comment on a status change. It does not change who is allowed to change a status, which remains controlled by the
change_issue_status permission. See Permission Groups.Where it applies
The review runs everywhere a status change is recorded:- The Change Decision modal on the finding details page
- The details drawer in the Vulnerabilities Workbench
- The bulk triage action bar, including SAST, SCA, and IaC findings
- Dismissals requested from a pull request through the Corgea Agent
What makes a good justification
A justification is accepted when it names at least one concrete thing a reader could verify. Any one of these is enough:- The control that makes the code safe — input validation, output escaping, a parameterized query, an authorization check, or a framework guarantee
- Why the input is trusted or the path is unreachable in this deployment
- A compensating control or business reason for carrying the risk, ideally with an owner, a deadline, or a scope
- Where the fix landed, or which finding this one duplicates — a commit, pull request, ticket, or finding ID
- What the scanner misread about the code
What gets rejected
A comment is sent back when it adds nothing to the decision itself:
When a comment is rejected, Corgea explains what is missing and keeps what you typed so you can add to it. The status is not changed until the comment is accepted.
What Corgea never rejects for
The review looks for whether a reason is given at all, not for how well it is written.A justification is never rejected because of its length, spelling, grammar, informal tone, or the language it is written in. Justifications written in any language are reviewed on equal terms. Corgea also does not judge whether your reasoning is technically correct — that judgment stays with your team — and accepts the comment when it is unsure.
Closing a finding from a pull request
The Corgea Agent writes the same audit record when it acts on a pull request comment, so it asks for the same reason. A comment that asks to dismiss a finding without saying why —@Corgea false positive, accept risk, not an issue, wontfix — gets a reply asking for the reason instead of a status change. Include the reason in the comment and the agent records it:
Requiring a second reviewer
A justification explains a decision, but on its own nothing checks it. Company admins can also require that a second person approves a dismissal before it takes effect. Turn this on under Settings → Company → Triage approvals (open). The page has two independent toggles, both off by default:- False positive — dismissing a finding as a false positive waits for approval.
- Accepted risk — suppressing a finding as accepted risk, with or without an expiry, waits for approval.
Reviewing requests
Reviewers work from the approvals queue at /approvals/, which has Pending, Approved, Rejected, and Withdrawn tabs. Filter by decision, project, and requester, narrow to Everyone, Waiting on me, or Mine, and search across CWE, CVE, path, project, justification, reviewer note, and requester. Filters live in the query string, so a filtered view can be shared as a link. A reviewer has to be someone other than the requester, in the same company, holding permission to approve triage requests and to change every finding type in the request. Approving or rejecting can carry an optional note, and requesters can withdraw their own requests.People who can approve requests are exempt from their own gate: queueing their decision would only ask them to approve themselves, so it applies immediately. Company admins see every request in the queue; everyone else sees only the requests they submitted.
