
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.
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
- Utilisation du CLI
- Installation
- Configuration des agents
- Configuration manuelle de MCP
- Outils MCP
- Utilisation avec uniquement la compétence
- Dépannage
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/repoet 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ée | Recommandation |
|---|---|
| critique | bloquer |
| élevée | bloquer |
| moyenne / inconnue | examiner |
| faible | autoriser |
| aucune trouvée | autoriser |
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ème | Métadonnées du registre | OSV | GitHub Advisory DB |
|---|---|---|---|
| npm | oui | oui | oui |
| PyPI | oui | oui | oui |
| Cargo / crates.io | oui | oui | oui |
| Modules Go | oui | oui | oui |
| RubyGems | oui | oui | oui |
| NuGet | oui | oui | oui |
| Maven | oui | oui | oui |
| Packagist / Composer | oui | oui | oui |
| pub.dev | oui | oui | oui |
| CocoaPods | oui | non | oui |
| Hex.pm | oui | oui | oui |
| Hackage | oui | oui | non |
| GitHub Actions | oui | oui | oui |
La sortie JSON inclut des champs de couverture des avis :
checked_providers: fournisseurs de vulnérabilités que deptrust a réellement interrogésskipped_providers: fournisseurs configurés ignorés parce que l'écosystème n'est pas pris en chargeadvisory_coverage:full,partial,noneouerroradvisory_coverage_reason: brève explication de la valeur de couvertureregistry_verification:verifiedlorsque les métadonnées du registre ont confirmé la version, ouunverifiedlorsqu'une vérification de version exacte s'est poursuivie après un échec transitoire du registreregistry_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 :