Plugin Claude Npm Bun Guard banner
OnyxynO OnyxynO

Plugin Claude Npm Bun Guard

Development community

Description

Garde-fou d'installation npm/bun pour Claude Code : refuse les paquets malveillants connus, arbre transitif inclus, et met en quarantaine les versions publiées depuis moins de 3 jours.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

plugin-claude-npm-bun-guard

Garde-fou qui contrôle les paquets JS **avant** installation, dans Claude Code.

⚠️ Lisez ceci d'abord

**C'est un modèle, pas un produit maintenu.**

  • Couvre npm et bun uniquement. Pour pnpm/yarn : couverture partielle — pas de résolution de l'arbre transitif, seuls les paquets nommés explicitement sont contrôlés. Voir « Adapter à votre gestionnaire ».
  • Vous en devenez mainteneur. Les formats de sortie de npm/bun changent avec leurs versions, l'API GitHub des advisories peut évoluer. Quand quelque chose casse, ouvrez hooks/guard.sh avec Claude Code et adaptez-le : c'est le mode d'emploi prévu.
  • Aucune garantie de couverture. Cet outil réduit un risque, il ne l'annule pas.

Le problème

Le 4 août 2026, le compte du mainteneur de `keyv` (127 M téléchargements/semaine) a été compromis. La version piégée a propagé un voleur d'identifiants à plus de 400 paquets en une trentaine de minutes, via un script `preinstall` exécuté avant tout code applicatif — jetons GitHub et npm, identifiants cloud, secrets de CI, et détournement des hooks de Claude Code.

Le vecteur d'entrée était une dépendance **transitive** : personne ne tape `npm i keyv`.

`npm audit` regarde après coup. Dependabot regarde le dépôt, pas la commande. Ce plugin intercepte l'instant où le script `preinstall` va s'exécuter.

Ce qu'il fait

Situation Décision
Un paquet de l'arbre à installer est un malware connu (nom et version) Refus
Une version demandée a moins de 3 jours Demande de confirmation
Le reste Silence — quelques millisecondes hors gestionnaire de paquets (ls, npm run build…) ; de l'ordre de 300 ms pour une installation, le temps du --dry-run et du contrôle de quarantaine ; quelques secondes une fois par jour, lorsque la base est rafraîchie

L'arbre est résolu par `--dry-run`, qui calcule les dépendances **sans exécuter aucun script** et sans rien écrire sur le disque.

À quoi re