Why it matters
Manual vetting does not scale and misses transitive dependencies. A policy makes a rule like “block known malware”, “no GPL licenses”, or “no unmaintained packages” an automated, repeatable check that runs the same way locally and in CI/CD.How it works
A policy is a set of CEL rules, written as a filter suite in a YAML file. Vet evaluates each package against the rules, and you decide what a match does:- During a local scan, Vet can exit non-zero when a package matches a blocking rule.
- In CI/CD with vet-action, the policy file is passed via the
policyinput (conventionally.github/vet/policy.yml), andparanoid: truefails the build on a violation.
Related
Policy as Code
Write and structure policy files.
CEL
The expression syntax policies are built from.
Malicious Package
The intelligence policies act on.
JFrog Xray Blocking
Enforce package blocking in JFrog Xray.

