
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 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.
Écosystèmes pris en charge :
@clidey/uxgroupId:artifactIdvendor/packageowner/repo et des tags, des références de branches ou des SHAs de commits comme versionsdeptrust 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 |
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 :
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 :
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, none ou erroradvisory_coverage_reason : brève explication de la valeur de couvertureregistry_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 registreregistry_verification_reason : l'erreur du registre lorsque la vérification était indisponibleUne 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.
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.
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 :
{
"ecosystem": "npm",
"package": "lodash",
"version": "4.17.20",
"latest_version": "4.17.21",
"known_vulnerabilities_found": true,
"safe_to_use": false,
"should_install": false,
"risk_score": 80,
"recommendation": "block",
"classification": "vulnerable",
"reason": "Found 2 known vulnerability records.",
"next_action": "do_not_install; use suggest_safe_version or compare_versions to choose a safer version",
"summary": "lodash 4.17.20 has 2 known vulnerabilities, including high severity. Block this exact version and prefer a fixed release.",
"signals": [],
"checked_providers": [
"OSV",
"GitHub Advisory DB"
],
"skipped_providers": [],
"advisory_coverage": "full",
"advisory_coverage_reason": "all configured vulnerability providers were checked",
"registry_verification": "verified",
"vulnerabilities": [
{
"id": "GHSA-35jh-r3h4-6jhm",
"aliases": [
"CVE-2021-23337"
],
"cve_ids": [
"CVE-2021-23337"
],
"ghsa_ids": [
"GHSA-35jh-r3h4-6jhm"
],
"summary": "Command Injection in lodash",
"severity": "high",
"source": "OSV",
"advisory_url": "https://github.com/advisories/GHSA-35jh-r3h4-6jhm",
"affected_ranges": [
"SEMVER: introduced 0, fixed 4.17.21"
],
"fixed_versions": [
"4.17.21"
],
"references": [
{
"type": "ADVISORY",
"url": "https://github.com/advisories/GHSA-35jh-r3h4-6jhm"
}
]
}
],
"provider_errors": []
}
Suggérer la dernière version uniquement lorsqu'aucune vulnérabilité connue n'est trouvée :
deptrust suggest npm lodash
Si la dernière version n'est pas autorisée, suggest vérifie les versions connues plus anciennes et renvoie la version la plus récente avec une recommandation allow.
Lorsque les avis incluent des versions corrigées, suggest vérifie d'abord ces versions corrigées signalées par le fournisseur avant de parcourir à rebours la liste des versions du registre.
Comparer deux versions :
deptrust compare npm lodash 4.17.20 4.17.21
Exemple de réponse compare :
lodash 4.17.20 -> 4.17.21 improves risk: score 80 to 0.
recommendation: allow
next_action: upgrade_to_target
Afficher la version installée :
deptrust version
Le chemin d'installation le plus simple est npx ou pnpx :
npx @clidey/deptrust install
pnpx @clidey/deptrust@latest install
L'installeur par défaut est guidé. Il installe le binaire, demande quelles intégrations d'agents configurer, affiche les destinations au niveau utilisateur avant de modifier quoi que ce soit, et demande une confirmation. L'installeur guidé active par défaut MCP, le repli de compétence et les hooks de sécurité des dépendances pour Codex et Claude Code. Ajoutez --yes pour des installations non interactives du binaire uniquement, ou transmettez des drapeaux d'intégration explicites.
Réexécuter l'installeur est sûr. Il laisse silencieusement inchangés les configurations MCP, de compétence et de hooks existantes. Si une intégration pointe vers un ancien binaire deptrust ou si sa configuration gérée a changé, l'installeur la met à jour automatiquement ; les utilisateurs n'ont pas besoin de supprimer et de réajouter manuellement les serveurs MCP. Les compétences personnalisées sont sauvegardées avant remplacement.
Pour supprimer le binaire, la compétence et les entrées MCP au niveau utilisateur :
npx @clidey/deptrust uninstall
pnpx @clidey/deptrust@latest uninstall
Les utilisateurs de Homebrew peuvent installer depuis le tap Clidey :
brew install clidey/tap/deptrust
Ou ajouter le tap d'abord, puis installer et mettre à niveau comme d'habitude :
brew tap clidey/tap
brew install deptrust
brew upgrade deptrust
Homebrew affiche un rappel après l'installation. Pour exécuter la configuration guidée Codex et Claude Code en utilisant le binaire Homebrew lui-même (enregistrements MCP et hooks de sécurité des dépendances) :
deptrust setup
La configuration guidée demande avant d'activer MCP et les hooks de sécurité des dépendances. Elle laisse intacts les enregistrements qui utilisent déjà le binaire actuel et réconcilie les enregistrements DepTrust existants qui pointent vers un ancien chemin d'installation npm, Homebrew ou source.
Les utilisateurs de Go peuvent installer directement :
go install github.com/clidey/deptrust/cmd/deptrust@latest
Le projet fournit des sorties de flake Nix facultatives pour les utilisateurs qui utilisent déjà Nix. Le flake enveloppe le binaire de version précompilé.
# Exécuter sans installer
nix run github:clidey/deptrust
# Installer dans votre profil
nix profile install github:clidey/deptrust
Le workflow de publication normal génère les
hashs Nix à partir des mêmes archives qu'il publie, évalue le flake avant la
publication, puis le compile et l'exécute contre les ressources publiées avant de
mettre à jour la branche par défaut. github:clidey/deptrust peut brièvement
accuser un retard pendant que ce workflow s'exécute. Les tags de publication pointent vers le
commit source antérieur à la mise à jour du flake généré et peuvent encore
référencer le binaire précédent ; épinglez un commit dont le flake.nix contient
la version dont vous avez besoin lorsque la reproductibilité compte.
Pour des environnements de développement reproductibles, utilisez Devbox :
# Installer Devbox d'abord (s'il n'est pas déjà installé)
curl -fsSL https://get.jetify.dev/devbox | bash
# Initialiser l'environnement
devbox shell
# Construire le projet
devbox run build
devbox.json contraint la version de la chaîne d'outils et le devbox.lock validé
épingle les versions exactes des paquets et les révisions nixpkgs. Exécutez devbox update lorsque
vous souhaitez intentionnellement actualiser ces épingles.
Ou installez Devbox via Homebrew :
brew install jetify-com/devbox/devbox
Pour installer deptrust et enregistrer tout ce que l'installeur peut configurer sans les invites guidées :
npx @clidey/deptrust install --all
pnpx @clidey/deptrust@latest install --all
--all installe le binaire, enregistre Codex MCP lorsque le CLI codex est disponible, installe le repli de compétence Codex, enregistre Claude Code MCP lorsque le CLI claude est disponible, et installe les hooks de sécurité des dépendances Codex et Claude Code.
Les hooks sont des hooks PreToolUse. Ils vérifient les commandes d'installation de paquets avant leur exécution, et ils vérifient également les GitHub Actions ajoutées aux fichiers de workflow via les outils d'édition de fichiers des agents. Un hook bloque l'appel d'outil lorsque deptrust renvoie review, block ou unknown. L'installeur écrit uniquement la configuration de hook au niveau utilisateur : ~/.codex/hooks.json pour Codex et ~/.claude/settings.json pour Claude Code.
Lorsque le CLI gh est disponible, la configuration guidée propose également d'utiliser sa connexion locale existante pour les vérifications de hooks. Cela écrit uniquement DEPTRUST_GITHUB_AUTH=gh, jamais un jeton GitHub, afin que les sous-processus de hooks puissent éviter les limites de débit non authentifiées de l'API GitHub.
Utilisez des installations plus ciblées si vous préférez :
npx @clidey/deptrust install --codex-mcp
npx @clidey/deptrust install --claude-code-mcp
npx @clidey/deptrust skills install
pnpx @clidey/deptrust@latest install --codex-mcp
pnpx @clidey/deptrust@latest install --claude-code-mcp
pnpx @clidey/deptrust@latest skills install
Après la configuration MCP, les agents vérifieront automatiquement les paquets avant de recommander des mises à jour ou des modifications. Le serveur MCP envoie des instructions pour examiner toutes les versions de dépendances — y compris pour répondre à des questions comme « que puis-je mettre à jour » ou « quelles dépendances sont sûres à mettre à niveau » — avant de fournir des recommandations.
Si vous utilisez deptrust dans un contexte non MCP, rappelez à votre agent :
Before listing, comparing, or recommending specific package versions, check them with deptrust. This includes answering "what can I update" — do not provide version recommendations until after checking for known vulnerabilities.
Pour CI, configurez un jeton d'application GitHub de courte durée et au privilège minimal comme DEPTRUST_GITHUB_TOKEN pour le processus exécutant DepTrust. Pour l'authentification locale via GitHub CLI, utilisez DEPTRUST_GITHUB_AUTH=gh deptrust check .... DepTrust ne stocke jamais de jetons.
Si votre client prend en charge les serveurs MCP stdio, configurez-le pour exécuter :
/absolute/path/to/deptrust mcp
De nombreux clients utilisent cette forme JSON :
{
"mcpServers": {
"deptrust": {
"command": "/absolute/path/to/deptrust",
"args": ["mcp"]
}
}
}
Pour Codex, vous pouvez également l'ajouter avec :
codex mcp add deptrust -- /absolute/path/to/deptrust mcp
Pour Claude Code :
claude mcp add --transport stdio deptrust -- /absolute/path/to/deptrust mcp
Lors de initialize, le serveur renvoie des instructions MCP indiquant à l'agent quand recourir à ces outils (avant d'ajouter, de mettre à niveau ou de recommander une dépendance, ou lorsqu'on lui demande si une version est sûre à mettre à jour). Les clients qui affichent les instructions du serveur appliqueront cela automatiquement, de sorte que le rappel manuel ci-dessus est facultatif plutôt qu'obligatoire.
check_packageVérifie une version de paquet et renvoie les vulnérabilités connues ainsi qu'une recommandation.
{
"ecosystem": "npm",
"package": "lodash",
"version": "4.17.20"
}
version peut être omis ou défini sur latest. Si une version exacte n'existe pas, deptrust renvoie une erreur et suggère la dernière version explicite.
La sortie MCP est intentionnellement compacte afin que les agents puissent décider d'installer une dépendance sans faire entrer les corps d'avis complets dans le contexte. Si l'utilisateur demande à voir les détails complets, l'agent peut exécuter le full_response_command.
Exemple de sortie structurée MCP compacte :
{
"ecosystem": "npm",
"package": "vite",
"version": "7.0.0",
"latest_version": "8.0.16",
"known_vulnerabilities_found": true,
"safe_to_use": false,
"should_install": false,
"risk_score": 80,
"classification": "vulnerable",
"recommendation": "block",
"reason": "Found 7 known vulnerability records.",
"next_action": "do_not_install; use suggest_safe_version or compare_versions to choose a safer version",
"summary": "vite 7.0.0 has 7 known vulnerabilities, including high severity. Block this exact version and prefer a fixed release.",
"vulnerability_count": 7,
"vulnerability_counts": {
"critical": 0,
"high": 2,
"medium": 3,
"low": 2,
"unknown": 0
},
"highest_severity": "high",
"checked_providers": [
"OSV",
"GitHub Advisory DB"
],
"skipped_providers": [],
"advisory_coverage": "full",
"advisory_coverage_reason": "all configured vulnerability providers were checked",
"registry_verification": "verified",
"full_response_command": "deptrust check --json npm vite 7.0.0"
}
La réponse MCP compacte omet le tableau de vulnérabilités, les details des avis et les references répétées. Les agents doivent utiliser par défaut les compteurs, la sévérité la plus élevée, la couverture des fournisseurs, la recommandation et l'action suivante. Si l'utilisateur demande les détails complets des avis, exécutez le full_response_command.
Lorsque l'accès aux avis GitHub est limité par le débit ou indisponible, MCP renvoie unknown. L'agent doit proposer de manière proactive de configurer un jeton et de réessayer, d'ignorer ou de différer la version, ou de continuer uniquement après que l'utilisateur a explicitement accepté le risque de couverture GitHub non résolu pour cette version exacte. Cette exception doit rester clairement étiquetée comme une incertitude acceptée par l'utilisateur ; elle ne doit pas être signalée comme allow ni comme une preuve que la version est sûre.
suggest_safe_versionVérifie d'abord la dernière version. Si la dernière n'est pas autorisée, vérifie d'abord les versions corrigées signalées par le fournisseur, puis les versions connues plus anciennes, et suggère la version la plus récente avec une recommandation allow.
{
"ecosystem": "npm",
"package": "lodash"
}
compare_versionsCompare une version actuelle et une version cible, y compris les vulnérabilités résolues et ajoutées.
{
"ecosystem": "npm",
"package": "lodash",
"from_version": "4.17.20",
"to_version": "4.17.21"
}
Si vous ne voulez pas de MCP, installez la compétence Codex fournie :
npx @clidey/deptrust skills install
La compétence indique à Codex d'appeler le CLI deptrust avant d'installer, de mettre à jour ou de recommander des paquets npm, PyPI, Cargo, modules Go, RubyGems, NuGet, Maven, Packagist, pub.dev, CocoaPods, Hex.pm, Hackage et GitHub Actions.
Si deptrust n'est pas trouvé :
export PATH="$HOME/.local/bin:$PATH"
Si un client MCP ne peut pas démarrer le serveur, trouvez le chemin complet :
which deptrust
Puis placez ce chemin absolu dans la configuration MCP.
Si une vérification de paquet renvoie unknown, ne traitez pas le paquet comme sûr. Cela signifie que deptrust n'a pas pu obtenir une réponse complète d'un fournisseur d'avis ou n'a pas pu vérifier la version exacte auprès de son registre.
| autoriser |
| aucune trouvée | autoriser |
| É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 |