🐍 Scan your Python dependencies for known security vulnerabilities with Rust-powered scanner
See the codeFast, reliable vulnerability scanning for Python dependencies.
Documentation · Benchmarks · Help test & improve · Usage survey
PySentry audits Python projects for known security vulnerabilities. It reads your lock file or manifest, resolves the full dependency tree, and checks every package against three vulnerability databases — then reports what is affected, how severe it is, and the upgrade that fixes it.

uv.lock, poetry.lock, Pipfile.lock, pylock.toml, pyproject.toml, Pipfile, requirements.txt, and PEP 723 inline script metadata. Lock files take precedence when both are present.--forbid-quarantined turns known malware into a failing build.--fail-on sets the exit threshold without hiding lower-severity findings.PySentry runs in CI pipelines at Genkit (Google), OVD-Info, activist.org, and To Be Precise, among others.
# Run without installing (recommended)
uvx pysentry-rs
# Or install permanently
pip install pysentry-rs # PyPI
cargo install pysentry # crates.io
Pre-built binaries are attached to GitHub Releases. See the installation guide for all options.
Naming: the Python package installs the binary as
pysentry-rs; the Rust crate and release binaries are plainpysentry. Examples below usepysentry-rs— substitute accordingly.
# Scan the current directory
pysentry-rs
# Scan another project
pysentry-rs /path/to/project
# Report only high and critical findings
pysentry-rs --severity high
# Exit non-zero only for critical findings
pysentry-rs --fail-on critical
# Write a SARIF report for GitHub code scanning
pysentry-rs --format sarif --output results.sarif
# Refuse quarantined (malicious) packages
pysentry-rs --forbid-quarantined
More examples in the quickstart guide.
repos:
- repo: https://github.com/pysentry/pysentry-pre-commit
rev: v0.5.0
hooks:
- id: pysentry
# args: ['--compact'] # terser output for hook runs
The GitHub Action downloads a checksum-verified binary, audits the project, and uploads a SARIF report to GitHub Code Scanning:
permissions:
security-events: write # for the SARIF upload
steps:
- uses: actions/checkout@v4
- uses: nyudenkov/[email protected]
with:
fail-on: high
On any other CI system, pysentry-rs --fail-on high exits non-zero when findings reach the threshold. Details in the CI guide.
Project defaults live in .pysentry.toml or pyproject.toml; CLI flags always take precedence:
version = 1
[defaults]
severity = "medium"
fail_on = "high"
[sources]
enabled = ["pypa", "osv"]
[ignore]
ids = ["CVE-2023-12345"]
All options are covered in the configuration guide.
Full documentation lives at https://docs.pysentry.com: Installation · Quickstart · CLI options · Configuration files · Environment variables · Troubleshooting
cargo install or building from sourceuv (recommended) or pip-tools for scanning manifests without a lock file (requirements.txt, pyproject.toml, Pipfile) — auditing lock files needs no external toolsBug reports and feature requests are welcome on the issue tracker; a couple of minutes on the usage survey helps shape the roadmap. For anything else, reach out at [email protected].
If PySentry saves you time, consider sponsoring on GitHub or buying me a coffee.
Inspired by pip-audit and uv #9189. Vulnerability data comes from PyPA, PyPI, and OSV.dev.
362 followers · starred Mar 2026
1,005 followers · starred Jan 2026
1,785 followers · starred Aug 2025
48 followers · starred Aug 2025
🐍 Scan your Python dependencies for known security vulnerabilities with Rust-powered scanner
See the codeFast, reliable vulnerability scanning for Python dependencies.
Documentation · Benchmarks · Help test & improve · Usage survey
PySentry audits Python projects for known security vulnerabilities. It reads your lock file or manifest, resolves the full dependency tree, and checks every package against three vulnerability databases — then reports what is affected, how severe it is, and the upgrade that fixes it.

uv.lock, poetry.lock, Pipfile.lock, pylock.toml, pyproject.toml, Pipfile, requirements.txt, and PEP 723 inline script metadata. Lock files take precedence when both are present.--forbid-quarantined turns known malware into a failing build.--fail-on sets the exit threshold without hiding lower-severity findings.PySentry runs in CI pipelines at Genkit (Google), OVD-Info, activist.org, and To Be Precise, among others.
# Run without installing (recommended)
uvx pysentry-rs
# Or install permanently
pip install pysentry-rs # PyPI
cargo install pysentry # crates.io
Pre-built binaries are attached to GitHub Releases. See the installation guide for all options.
Naming: the Python package installs the binary as
pysentry-rs; the Rust crate and release binaries are plainpysentry. Examples below usepysentry-rs— substitute accordingly.
# Scan the current directory
pysentry-rs
# Scan another project
pysentry-rs /path/to/project
# Report only high and critical findings
pysentry-rs --severity high
# Exit non-zero only for critical findings
pysentry-rs --fail-on critical
# Write a SARIF report for GitHub code scanning
pysentry-rs --format sarif --output results.sarif
# Refuse quarantined (malicious) packages
pysentry-rs --forbid-quarantined
More examples in the quickstart guide.
repos:
- repo: https://github.com/pysentry/pysentry-pre-commit
rev: v0.5.0
hooks:
- id: pysentry
# args: ['--compact'] # terser output for hook runs
The GitHub Action downloads a checksum-verified binary, audits the project, and uploads a SARIF report to GitHub Code Scanning:
permissions:
security-events: write # for the SARIF upload
steps:
- uses: actions/checkout@v4
- uses: nyudenkov/[email protected]
with:
fail-on: high
On any other CI system, pysentry-rs --fail-on high exits non-zero when findings reach the threshold. Details in the CI guide.
Project defaults live in .pysentry.toml or pyproject.toml; CLI flags always take precedence:
version = 1
[defaults]
severity = "medium"
fail_on = "high"
[sources]
enabled = ["pypa", "osv"]
[ignore]
ids = ["CVE-2023-12345"]
All options are covered in the configuration guide.
Full documentation lives at https://docs.pysentry.com: Installation · Quickstart · CLI options · Configuration files · Environment variables · Troubleshooting
cargo install or building from sourceuv (recommended) or pip-tools for scanning manifests without a lock file (requirements.txt, pyproject.toml, Pipfile) — auditing lock files needs no external toolsBug reports and feature requests are welcome on the issue tracker; a couple of minutes on the usage survey helps shape the roadmap. For anything else, reach out at [email protected].
If PySentry saves you time, consider sponsoring on GitHub or buying me a coffee.
Inspired by pip-audit and uv #9189. Vulnerability data comes from PyPA, PyPI, and OSV.dev.
362 followers · starred Mar 2026
1,005 followers · starred Jan 2026
1,785 followers · starred Aug 2025
48 followers · starred Aug 2025