Skip to main content

repovet

Vet a Git repository before you run it.

PyPI version Python versions CI License: MIT

repovet reads a GitHub repository or a local folder as plain data and shows what could run on your machine or steer your AI agent before you open, install or hand it over – it never runs anything from it. To check changes later, repovet diff compares two revisions and fails only on new or worse findings, so it can run in CI (setup).

Why it matters

  • Opening it in an editor can run code: VS Code tasks on folder open, dev containers, workspace settings.
  • Installing or building it can run code: npm postinstall, setup.py, build hooks, Makefiles, Git hooks.
  • Letting an AI agent read it can act on instructions hidden in CLAUDE.md, AGENTS.md or rule files.

Quick start

pipx install repovet          # own environment, Python 3.12+
pip install repovet           # or into the current environment
uv tool install repovet       # no Python yet: uv fetches one

Then check a repository (or run repovet alone for a menu):

repovet scan https://github.com/m3xXmo0/repovet-demo

Real output (excerpt) for the demo repository, which is harmless but built on purpose to trigger findings, so the high findings are expected:

repovet 0.5.1 | GitHub repository https://github.com/m3xXmo0/repovet-demo @ main (088b45582bfa) | offline | 16 files | 141 rules

+- SUMMARY -------------------------------------------------------------------+
| Do not install its dependencies or run its install scripts; do not let an   |
| AI coding agent work in it until you have read the findings below.          |
|                                                                             |
| 0 critical | 9 high | 5 medium | 1 low | 2 info                             |
|                                                                             |
| Look at these first                                                         |
| 1. HIGH      RC-AGENT-002  AGENTS.md:8                                      |
|    Hidden Unicode tag characters in an AI agent file                        |
| 2. HIGH      RC-BIN-002    assets/logo.png                                  |
|    Executable disguised as a document, image or text file                   |
| 3. HIGH      RC-AUTO-016   pyhelper/quicknote.pth:1                         |
|    .pth file with code                                                      |
+-----------------------------------------------------------------------------+

repovet scanning the demo repository

Evidence, in short

These are small gap lists that show where repovet is blind, not detection rates. The reconstructions and variants were built alongside the rules, so they show what the rules are built for, not how well they generalize. The external sets and the benchmark were measured with repovet 0.5.0; the reconstructions are scanned again on every test run.

  • Sealed blind list (30 attack variants and 30 harmless cases, sealed before the first evaluation): 13 rated as expected, 2 detected lower or in another area, 15 of 30 missed; 25 of 30 harmless cases stay below medium.
  • Older holdout (42 bypass variants and 24 harmless look-alikes written by a third party; partly independent since 0.4.1): 13 rated as expected, 13 detected lower or in another area, 16 missed; 23 of 24 look-alikes stay below medium.
  • 16 of 16 reconstructions of documented attacks detected, and 60 of 64 hand-written evasion variants of them.
  • 3 of 38 scanned most-starred GitHub repositories had a high or critical finding. These are popular, presumably harmless projects, so every high or critical hit there is a false alarm or worth a manual look.

In every report, read "Not checked" first. Details: docs/evidence.md.

Scope

repovet checks what a repository can do to you before you run it, and how it declares its dependencies: whether a package name is plausible and where a package comes from. It does not check whether a pinned version has known vulnerabilities; for that, use pip-audit, npm audit or OSV-Scanner. The analysis is offline because of this scope: checking a repository must not run anything from it or send anything about it elsewhere. repovet never calls a repository safe; it reports what its rules detect and lists under "Not checked" what it could not look at.

Documentation

License

MIT, see LICENSE. Copyright (c) 2026 m3xXmo0.

repovet ships two lists of package names as data (see src/repovet/data/SOURCES.md): the most downloaded PyPI projects from "top-pypi-packages" by Hugo van Kemenade (CC BY 4.0), and the most downloaded npm packages from npm-high-impact by Titus Wormer (MIT).

Metadata

Release files for repovet 0.5.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for repovet 0.5.2
File Size Uploaded Provenance Actions
repovet-0.5.2.tar.gz 1.8 MB With provenance Details for repovet-0.5.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for repovet 0.5.2
File Interpreter ABI Platform Actions
repovet-0.5.2-py3-none-any.whl Python 3 none any Details for repovet-0.5.2-py3-none-any.whl

Total release size: 2.3 MB

Release files / repovet-0.5.2.tar.gz

Download URL repovet-0.5.2.tar.gz
Size 1.8 MB
Tags Source
SHA-256 checksum
How to use checksums
f26cfd83a496a4fe010969a20eda74d965378280b1b109f0c015261afafa8cfd
BLAKE2b-256 checksum
How to use checksums
db0ff85fdeac783e3647b808d9e844edceabebd1051ae967deb7d70f75a9bc1b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / repovet-0.5.2-py3-none-any.whl

Download URL repovet-0.5.2-py3-none-any.whl
Size 446.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0a63e2a03fd9644b1898ac43755ee7fe6c587eb84ceca0566dc32685dda2a48
BLAKE2b-256 checksum
How to use checksums
251b260f760663c33fe2b1f7b459978981489340f0ccafce05035ed213bee0e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for repovet 0.5.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for repovet-0.5.2.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page