Retour aux mises à jour
New releaseJul 28, 2026

deptrust v0.14.0

Serveur CLI et MCP qui vérifie les versions de paquets pour détecter des vulnérabilités connues dans 14+ écosystèmes, notamment npm, PyPI, crates.io, les modules Go et GitHub Actions. S'intègre aux agents IA via des hooks et des skills.

Partager

deptrust

     __           __                  __
 ___/ /___  ___  / /________  _______/ /_
/ _  / __ \/ _ \/ __/ ___/ / / / ___/ __/
/  __/ /_/ /  __/ /_/ /  / /_/ (__  ) /_
\__,_/\____/ .___/\__/_/   \__,_/____/\__/
           /_/

deptrust est un CLI qui vérifie les versions de paquets pour détecter des vulnérabilités connues sur npm, PyPI, crates.io, les modules Go, RubyGems, NuGet, Maven, Packagist, pub.dev, CocoaPods, Hex.pm, Hackage, GitHub Actions, et plus encore.

Il s'exécute localement en tant que CLI et en tant que serveur MCP. Il appelle directement les API publiques des registres de paquets et d'OSV ; il n'existe aucun service deptrust hébergé auquel faire confiance ou à configurer.

Cet outil est né de la frustration que représentent les agents IA qui utilisent constamment d'anciennes versions.

Sommaire

Périmètre

Écosystèmes pris en charge :

  • npm, y compris les paquets scopés comme @clidey/ux
  • PyPI
  • Cargo / crates.io
  • Modules Go
  • RubyGems
  • NuGet
  • Maven, avec des noms de paquets groupId:artifactId
  • Packagist / Composer, avec des noms de paquets vendor/package
  • pub.dev
  • CocoaPods
  • Hex.pm
  • Hackage
  • GitHub Actions, avec des noms de paquets owner/repo et des tags, des références de branches ou des SHAs de commits comme versions

deptrust signale actuellement les vulnérabilités connues et donne une recommandation simple :

Sévérité connue la plus élevéeRecommandation
critiquebloquer
élevéebloquer
moyenne / inconnueexaminer
faibleautoriser
aucune trouvéeautoriser

allow signifie qu'aucune vulnérabilité connue bloquante n'a été trouvée dans les sources de données publiques. Cela ne prouve pas qu'un paquet est sûr.

deptrust émet également des signaux de risque qui ne sont pas des CVE. Par exemple, une version publiée au cours des 72 dernières heures est marquée pour examen afin qu'un agent n'installe pas aveuglément une toute nouvelle version.

Les fournisseurs d'avis sont interrogés en parallèle :

  • OSV
  • GitHub Advisory Database, y compris les avis examinés et les avis de logiciels malveillants

La couverture varie selon l'écosystème. Si deptrust peut résoudre les métadonnées du registre mais qu'aucun fournisseur de vulnérabilités configuré ne prend en charge cet écosystème, il renvoie unknown au lieu de considérer le paquet comme sûr.

Couverture des fournisseurs :

ÉcosystèmeMétadonnées du registreOSVGitHub Advisory DB
npmouiouioui
PyPIouiouioui
Cargo / crates.ioouiouioui
Modules Goouiouioui
RubyGemsouiouioui
NuGetouiouioui
Mavenouiouioui
Packagist / Composerouiouioui
pub.devouiouioui
CocoaPodsouinonoui
Hex.pmouiouioui
Hackageouiouinon
GitHub Actionsouiouioui

La sortie JSON inclut des champs de couverture des avis :

  • checked_providers : fournisseurs de vulnérabilités que deptrust a réellement interrogés
  • skipped_providers : fournisseurs configurés ignorés parce que l'écosystème n'est pas pris en charge
  • advisory_coverage : full, partial, none ou error
  • advisory_coverage_reason : brève explication de la valeur de couverture
  • registry_verification : verified lorsque les métadonnées du registre ont confirmé la version, ou unverified lorsqu'une vérification de version exacte s'est poursuivie après un échec transitoire du registre
  • registry_verification_reason : l'erreur du registre lorsque la vérification était indisponible

Une vérification de version exacte interroge toujours les fournisseurs d'avis lorsque la vérification du registre est temporairement indisponible. Ce résultat est toujours non installable et ne reçoit jamais de recommandation allow. Les vérifications de latest, des paquets inconnus et des versions définitivement inexistantes exigent toujours une résolution réussie du registre.

Les requêtes HTTP réessayent les réponses 429, 502, 503 et 504 jusqu'à trois tentatives au total. Les nouvelles tentatives utilisent de courts délais exponentiels et respectent les valeurs Retry-After jusqu'à deux secondes ; les attentes plus longues demandées par le serveur échouent rapidement afin que le CLI ne reste pas bloqué. Des nouvelles tentatives d'avis épuisées rendent le résultat incomplet et empêchent une recommandation allow.

Authentification à l'API GitHub

Les requêtes vers GitHub Advisory Database et l'API GitHub Actions peuvent utiliser un jeton d'application GitHub de courte durée et au privilège minimal. Dans CI, transmettez-le via DEPTRUST_GITHUB_TOKEN :

DEPTRUST_GITHUB_TOKEN="$GITHUB_APP_TOKEN" deptrust check npm lodash 4.17.20

La précédence des identifiants est DEPTRUST_GITHUB_TOKEN, GITHUB_TOKEN, puis GH_TOKEN. Pour une utilisation locale, le recours facultatif au GitHub CLI est activé explicitement avec DEPTRUST_GITHUB_AUTH=gh deptrust check ... ; il exécute gh auth token sans invite. Si aucun identifiant n'est disponible, DepTrust continue sans authentification. Un échec de limite de débit ou de permission de l'API GitHub produit unknown avec des diagnostics et n'est jamais traité comme un succès OSV uniquement.

DepTrust ne stocke, ne regroupe, ne met en cache, ne journalise, ne télémètre et n'émet jamais de jetons GitHub. Les en-têtes d'authentification sont envoyés uniquement à https://api.github.com.

Utilisation du CLI

Vérifier une version exacte :

deptrust check npm lodash 4.17.20

Exemple de réponse normale :

npm [email protected]: 2 known vulnerabilities found
recommendation: block
risk_score: 80

Vérifier la dernière version :

deptrust check pypi requests latest

Renvoie du JSON :

deptrust check --json cargo serde latest

Vérifier un module Go :

deptrust check go golang.org/x/crypto latest

Vérifier RubyGems, NuGet ou Maven :

deptrust check rubygems rails latest
deptrust check nuget Newtonsoft.Json latest
deptrust check maven org.apache.logging.log4j:log4j-core latest

Vérifier Packagist, pub.dev, CocoaPods, Hex.pm, Hackage ou GitHub Actions :

deptrust check packagist monolog/monolog latest
deptrust check pub http latest
deptrust check cocoapods AFNetworking latest
deptrust check hex plug latest
deptrust check hackage aeson latest
deptrust check github-actions actions/checkout v7.0.0
deptrust check github-actions actions/checkout main

Pour GitHub Actions, les SHAs de commits complets sont traités comme épinglés. Les tags semver complets comme v4.2.2 sont acceptés sans signal d'épinglage supplémentaire. Les tags majeurs uniquement comme v4 et les références de branches comme main sont des références valides, mais deptrust ajoute un signal d'examen car ils peuvent bouger.

Exemple de réponse JSON :

Catégories