Skip to content

CI/CD gate

Without an agent or an MCP client, a Jenkins, GitLab or GitHub job can block a deployment while critical findings remain open. The security-review-ci gate command does it through the controller REST API, with a ci token: it needs only Python 3.14 on the build agent (no database driver, no SQLModel, no database URL). The controller CLI (security-review-controller) has no pipeline command.

security-review-ci gate --project portal --fail-on high
# exit code: 0 = passes, 1 = blocked, 2 = error (project/report not found, outside the token,
# controller unreachable, token refused)
# options: --report-id N to judge only one report

The client, its installation, the ci token and pipeline examples for GitHub Actions, GitLab CI, Jenkins, Azure Pipelines, Bitbucket Pipelines and CircleCI: see Pipeline client (CI/CD).

A finding stops blocking when a person moves it to fixed, accepted or false_positive in the web interface: the decision stays recorded in the database with its reason and its approver. An agent can only propose a status (propose_finding_status), which does not unblock the gate. An acceptance or a false positive expires: from its expiry date, the finding blocks again. A decision is carried to the same issue raised by a later report (finding reported again): the gate of the next report does not block on an accepted risk. The exit code of scan-code and scan-deps, on the other hand, counts every match above its threshold (see typical pipeline).