This feature is only available on Chainloop’s platform paid plans.
Scanners at a Glance
Each evidence entry is a material type and a material name, so you can find the report inside the attestation and write policies against it.
Turning Scans On
Every scan has an On/Off toggle and, when it’s on, up to two independent run modes: Run periodically and Run in PRs. You set these per scan, either in the Create Project wizard or later from the project’s workflow settings.Run Modes

The two modes are independent: enable both for scheduled baseline coverage plus per-change feedback, or enable just one. Where a scan supports only a single mode, that mode stays selected — the table above lists what each one supports.

Configuring a Scan
Each scan has a Configure panel where you set its options before adding it to the project.
- Triggers — the run modes to enable. Only the modes the scan supports are offered, so the SCM Configuration Check above shows just Run periodically.
- Name — optional; if you leave it blank, Chainloop generates one automatically.
- Template inputs — the fields the scan accepts, each with a description of the format it expects. The inputs for every built-in scan are listed under each scan below.
Built-in and Custom Templates
Workflow templates come from two sources:- Built-in templates — the scans on this page. Provided by Chainloop, available on Chainloop Cloud, and pre-selected by default.
- Custom templates — defined by your organization, and only available in on-prem installations. See Managing Custom Templates for the
chainloop applyworkflow.
On self-hosted instances, only your organization’s custom templates are listed — Chainloop’s built-in templates aren’t available.
How Scans Run
Where Scans Run
Chainloop clones the repository linked to your project into a sandbox it manages and runs the tool there. None of your runners are involved. A scan is skipped when the project has no linked repository. The one exception is the SCM Configuration Check, which needs no sandbox and no clone — it only calls your provider’s API. Every scan that reads source takes apath input, relative to the repository root, which defaults to the whole repository. Point it at a subdirectory to scan one component of a monorepo.
How Often Periodic Scans Run
At least once a day. Chainloop re-scans any workflow whose most recent run is more than 24 hours old, so there is no schedule to configure. A workflow that has never run is treated the same way, so a scan you just enabled is picked up shortly after.Where the Results Go
Every run is stored as evidence: the scan reports — and, for PR runs, the pull request metadata — are captured as a signed attestation, evaluated by the same policies as the rest of your evidence, and retained for audit. Policy verdicts are recorded, not enforced: a violation never fails the run or rejects the attestation, so you always get the report. To make a violation stop something, use control gates. Findings from the vulnerability scans feed vulnerability management, where periodic runs power AI auto-remediation — Chainloop assesses each finding with AI and, when a fix is available, proposes it as a pull or merge request. See assessment and auto-remediation for that flow.Scanning in Pull Requests
Turn on Run in PRs for as many scans as you like: they share one sandbox run per pull or merge request, so a pull request gets one clone, one attestation, one Chainloop PR Validation check, and one consolidated comment instead of a separate set per scan. There is no PR validation workflow to create. Chainloop provisions one for the project on its first pull request, namedpr-validation, deriving its contract from the scans you opted into.
How the Diff Is Scoped
Each tool narrows to the change in its own way, which is worth knowing when a finding looks unrelated to the pull request:SAST Scan
Runs opengrep — an open-source fork of Semgrep — over your source code with the bundled Community ruleset. Semgrep’s proprietary Pro rules are not included.- Evidence — a
SARIFreport namedsast-report. - Policies —
source-commitandowasp-top10-2025, plus thesastandcwespolicy groups, which check findings against the OWASP Top 10 (2025) and the CWE Top 25 together with the 26–40 “on the cusp” list. - Configuration — reads
.semgrep.yml, a.semgrep/directory, and.semgrepignorefrom your repository.
Secret Scan
Runs betterleaks, a drop-in successor to gitleaks maintained by gitleaks’ original authors. Reports keep the gitleaks format, which is why the material type is still calledGITLEAKS_JSON.
- Evidence — a
GITLEAKS_JSONreport namedsecret-report. - Policies —
source-commitandsecrets-detection. - Configuration — reads
.gitleaks.tomlor.betterleaks.tomlfrom your repository.
Vulnerability Scan
Reports known CVEs affecting your dependencies. Thesource input decides where the dependency list comes from.
Source code mode
The default. syft builds a CycloneDX SBOM from your repository, then grype scans that SBOM for known vulnerabilities. Both the SBOM and the vulnerability report are attested, so you get an inventory and its findings from one run.SBOM mode
Setsource to SBOMs when your pipeline already produces SBOMs, or when Chainloop shouldn’t touch your source. Chainloop collects the SBOMs already attested on the project version, runs grype over each one, and re-attests them as indexed pairs — sbom-1 and vulnerability-report-1, sbom-2 and vulnerability-report-2, and so on. Because the SBOMs can arrive in several formats and there can be more than one per run, the fixed material names below don’t apply.
This mode needs no access to your repository, and it is skipped when the project has no SBOM evidence to scan. It has no pull request mode — there is no pull request to react to. See Generate and Continuously Scan SBOMs for the setup.
- Evidence — a
SARIFreport namedvulnerability-reportand anSBOM_CYCLONEDX_JSONnamedsbom. Both are optional, since SBOM mode produces indexed names instead. - Policies —
source-commit,cves-in-kev, and thevulnerability-managementpolicy group. A finding at or above the configured severity fails the run, as does any CVE listed in the CISA KEV catalog. - Inputs —
severitysets the lowest severity that counts as a violation, and defaults toHIGH.
IaC Scan
Runs checkov over your infrastructure as code — Terraform, Dockerfiles, Kubernetes manifests, and YAML or JSON configuration — looking for misconfigurations such as public storage buckets, missing encryption, and over-broad permissions.- Evidence — a
SARIFreport namediac-report. - Policies —
source-commit,iac-scan-present, andiac-misconfiguration. - Configuration — reads
.checkov.yamlor.checkov.ymlfrom your repository.
GitHub Actions Scan
Runs zizmor over the workflow and action definitions in your repository, looking for the ways a CI pipeline gets compromised: actions pinned to a mutable tag instead of a digest, workflows granted more permissions than they need, and untrusted input interpolated into arun block.
This scan is offered for GitHub repositories only.
- Evidence — a
SARIFreport namedactions-report. - Policies —
ci-pipeline-security.
SBOM Generation
Runs syft over your repository and attests the result as a CycloneDX SBOM, giving every project a dependency inventory that refreshes on its own. Runs periodically only.- Evidence — an
SBOM_CYCLONEDX_JSONnamedsbom. - Policies —
source-commitand thesbom-qualitypolicy group, which checks the SBOM for banned licenses and components, NTIA minimum elements, license coverage, and freshness.
The SBOM describes your repository and its declared dependencies, not a built artifact. If you need an SBOM of a container image, produce it in your pipeline and attest it — see Generate and Continuously Scan SBOMs.
SCM Configuration Check
The exception on this page: it runs no scanning tool and never clones your code. Chainloop reads your repository’s configuration from your provider’s API — branch and tag protection, code review requirements, automated patch management, and signed commits — records what it read as evidence, and evaluates that evidence with policies. It runs periodically on GitHub and GitLab, and a repository can have only one.- Evidence — a
CHAINLOOP_RUNNER_CONTEXTmaterial namedrunner-context, holding the repository configuration Chainloop read. It uses the same format the Enterprise Edition CLI collects in your pipeline, so the same policies apply to both. - Policies —
patch-policy-presentandcommits-signed-required, plus thebranch-protection,code-review, andtag-protectionpolicy groups. - Inputs —
branchesandtagsselect the refs to check, andauthorized_bypasslists the accounts allowed to bypass protection.
Related
Workflow Templates
Template anatomy, inputs, and custom templates.
Generate and Continuously Scan SBOMs
Set up SBOM generation and continuous CVE checks.
Vulnerability Management
What happens to findings after a scan.
Policies Reference
Every built-in policy and policy group.
Material Types
The evidence formats these scans produce.
SCM Protection Policies
What the SCM Configuration Check expects.
Connect GitHub & GitLab
Link a repository so scans can run.
AI Coding Sessions
The one built-in template that runs no scanner.
