vet (SafeDep)
vet is an open-source CLI (from SafeDep) that scans package manifests, SBOMs, container images, and source repos across npm, PyPI, Maven, Go, RubyGems, Cargo, and Packagist to surface vulnerabilities, malicious packages, and license/quality issues. It cuts through CVE noise by analyzing actual code-usage evidence, queries SafeDep Cloud's threat-intelligence database for real-time malware detection (e.g. flagged packages like express-cookie-parser, eslint-config-airbnb-compat), and lets teams enforce security/license/OpenSSF-Scorecard policies as CEL expressions in CI/CD via SARIF/JSON/Markdown reporting.
What it is
The vet GitHub README (SafeDep). Beyond what the summary states, the page documents install methods, ready-to-run scan/policy commands, exact input coverage, and — most importantly — a deprecation that changes how malware scanning works.
How it works
Pipeline architecture: readers ingest manifests/repos/images/SBOMs → enrichers add vulnerability, malware, and OpenSSF Scorecard data from SafeDep Cloud → the CEL policy engine evaluates → reporters emit SARIF, JSON, CSV, or Markdown. Malware detection is no longer done locally on-demand; vet now queries SafeDep Cloud's threat-intelligence DB, which is populated continuously by static and dynamic behavioral analysis with human-in-the-loop triage and a public analysis log.
What to do
Install:
brew install vet
npm install -g @safedep/vetCore scans (no API key needed for malware lookups):
vet scan -D . --malware-query
vet scan -D . --filter 'vulns.critical.exists(p, true)' --filter-failCEL policy examples:
vet scan --filter 'licenses.contains_license("GPL-3.0")' --filter-fail
vet scan --filter 'scorecard.scores.Maintained < 5' --filter-failSpecialized targets:
vet scan --vsx --malware-query # VS Code extensions
vet scan -D .github/workflows --malware-query # GitHub Actions
vet scan --image nats:2.10 --malware-query # Container imagesContainer run:
docker run --rm -v $(pwd):/app ghcr.io/safedep/vet:latest scan -D /app --malware-queryCI: GitHub safedep/vet-action@v1 (with policy: pointing at a policy YAML); GitLab component: gitlab.com/safedep/ci-components/vet/scan@main.
Caveats
- On-demand/active malware scanning has been retired. The
--malwareflag is deprecated and now behaves identically to--malware-query(kept only for backward compatibility). If you relied on local active analysis of a package, it no longer exists — everything is now a lookup against SafeDep's known-malicious DB. vet inspect malware(on-demand analysis of a single package) is deprecated and will be removed in a future release; usevet scan --malware-queryinstead.- Coverage boundaries the page states: package managers npm, PyPI, Maven, Go, Ruby, Rust, PHP; containers Docker/OCI; SBOMs CycloneDX/SPDX; source GitHub/GitLab.
- Zero-day / behavioral malware detection requires SafeDep Cloud access; the CLI's local
--malware-queryonly checks packages against the already-populated threat-intel DB (example IDs: MAL-2025-4339eslint-config-airbnb-compat, MAL-2025-4029ts-runtime-compat-check).
Technologies named here
- npm registry
- vet
- PyPI
- SafeDep Cloud
- vet-action
- Maven
- Go
- vet CI Component
- Ruby
- OSV
- OpenSSF Scorecard
- Rust
- PHP
- SLSA
- OSV-SCALIBR
- Docker
- Syft
- OCI
- CycloneDX
- MCP server
- SPDX
- GitHub
- GitLab
- express-cookie-parser
- eslint-config-airbnb-compat
- ts-runtime-compat-check
- nats:2.10
- VS Code extensions
- GitHub Actions
- npm
- SBOM
Techniques named here
- Dependency usage evidence analysis
- Policy as code via CEL expressions
- Shadow AI discovery
- GitHub Actions pinning to commit SHAs
- Real-time threat intelligence lookups
Threat actors named here
- MAL-2025-3541
- MAL-2025-4339
- MAL-2025-4029
Related in Supply Chain


