This page documents the
--filter-suite format, Vet’s original policy interface. Vet also ships a newer --policy-suite engine that uses a different rule schema; see the Vet repository for its format.Filter suite format
A filter suite has aname, a description, and an ordered list of filters. Each filter has a name and a value (a CEL expression). A package matches the suite when any filter’s expression evaluates to true.
Applying a filter suite
Pass the suite tovet scan and fail the scan when any package matches:
| Flag | Purpose |
|---|---|
--filter-suite <file> | Evaluate packages against the filter suite in <file>. |
--filter-fail | Exit non-zero if any package matches, for CI/CD gating. |
policy input and set paranoid: true to fail the build on a violation.
Evaluation
Filters are evaluated as an ordered list. Vet stops at the first match per package and reports it as a violation. Order filters from most specific to least specific.CEL fields
The expression in each filter’svalue is written in CEL. These fields are available:
pkg- package metadata:pkg.ecosystem,pkg.name,pkg.versionvulns.all,vulns.critical,vulns.high,vulns.medium,vulns.low- vulnerability arrays; each item has anid(e.g.vulns.all.exists(v, v.id.startsWith("MAL-")))licenses- array of SPDX license identifiersscorecard.score- aggregate OpenSSF Scorecard score;scorecard.scores["Check-Name"]- per-check score (e.g."Maintained","Dangerous-Workflow","Token-Permissions")projects- source project info (e.g.projects.exists(p, p.type == "GITHUB" && p.stars < 10))
size() (array length), exists(item, condition), in (membership), contains() (string contains).
Policy
What policies are and why they matter.
CEL
The expression syntax rules are built from.
Filtering
Query scan results with one-off CEL expressions.
Example Policies
Ready-to-use filter suites in the Vet repository.

