Exceptions file format
An exceptions file lists packages by ecosystem, name, and version, each with a uniqueid and an expires timestamp:
| Field | Rule |
|---|---|
expires | Mandatory. RFC3339 timestamp. Expired exceptions are ignored automatically. |
id | Mandatory. Any unique string. |
ecosystem | Case-insensitive (PyPi, pypi, PyPI all match). |
version | Exact version, or * to match any version. |
npm, PyPI, Maven, Go, RubyGems, Cargo, NuGet, Packagist, Hex, Pub, GitHubActions, Terraform, VSCodeExtensions, OpenVSXExtensions, and Homebrew. For the authoritative list, see the Vet source.
Generating exceptions
Generate an exceptions file from a JSON dump using a CEL filter. For example, except packages that have no critical or high vulnerabilities:| Flag | Purpose |
|---|---|
--exceptions-generate <file> | Write the generated exceptions to <file>. |
--exceptions-filter <cel> | Except only packages matching this CEL expression. |
--exceptions-till <date> | Expiry date, parsed as YYYY-mm-dd (set to 00:00:00 UTC, RFC3339). |
--exceptions while generating, or the active exceptions will skew the output.
Applying exceptions
Pass an exceptions file tovet as a global flag:
.github/vet/exceptions.yml) and reference it:
Matching rules
- Exceptions apply at the package level and are shared across all analyzers and reporters.
- Comparisons are case-insensitive, except
version, which matches exactly unless set to*. - The first matching exception applies.
- Expired exceptions are ignored, and an exception cannot be created without an expiry date.
Filtering
The CEL expressions used in
--exceptions-filter.Build Your Own Queries
The JSON dump and query workflow exceptions build on.
Policy as Code
Enforce policy on the packages that remain.
vet-action
Configure exceptions in GitHub Actions.

