zn-gate pour Gemini CLI

Installez les hooks expérimentaux de zn pour Gemini CLI : ils bloquent la lecture et l'écriture des fichiers secrets et les commandes shell qui manipulent des secrets avant l'exécution de l'outil.

Voir le .md

La prise en charge de Gemini CLI est expérimentale. Voyez-la comme une première couche : zn peut bloquer un appel, mais il ne peut pas masquer ce qu'un outil renvoie (voir les Limites ci-dessous).

Google a remplacé Gemini CLI par Antigravity CLI pour les comptes gratuits et Google One le 18 juin 2026. Antigravity est désormais le premier choix pour une nouvelle installation ; zn-gate prend toujours en charge Gemini CLI.

Il vous faut Node.js 18 ou plus récent. Collez chaque ligne dans un terminal et appuyez sur Entrée après chacune :

npm install -g zn-gate
zn hooks install gemini

Sur macOS et Linux, si npm install -g échoue avec EACCES, suivez le guide de npm pour corriger les erreurs de permission.

Corrigez-le sans droits d'administrateur :

mkdir -p ~/.npm-global && npm config set prefix ~/.npm-global
echo 'export PATH="$HOME/.npm-global/bin:$PATH"' >> ~/.zshrc

Si vous utilisez bash, écrivez dans ~/.bashrc au lieu de ~/.zshrc.

Ensuite, ouvrez un nouveau terminal et exécutez npx -y zn-gate init. Un gestionnaire de versions de Node.js, comme nvm, évite aussi le problème.

Ouvrez ensuite une nouvelle session Gemini CLI. zn ajoute son hook à ~/.gemini/settings.json. Vous mettrez à jour plus tard ? Consultez Mettre à jour zn-gate.

Pour un seul projet

Lancez zn hooks install gemini --project dans le projet. La commande écrit .gemini/settings.json dans ce projet plutôt que dans votre dossier personnel. Gemini CLI considère un hook de projet comme non fiable tant que vous ne l'avez pas approuvé, et le hook lance zn depuis votre PATH : toute personne qui ouvre le projet doit donc avoir installé zn-gate.

Ce que vous obtenez

  • zn vérifie chaque appel d'outil avant son exécution.
  • Les lectures et écritures de fichiers secrets, comme les fichiers .env contenant des valeurs, sont bloquées d'après le chemin du fichier.
  • Les commandes shell qui manipulent des secrets sont bloquées. Pour une commande qui utilise un marqueur __ZN_<NAME>__, zn la bloque et indique au modèle la ligne exacte zn run -- ... à utiliser à la place.
  • Une recherche dans un dossier qui afficherait des secrets en clair est bloquée. Indiquez un chemin plus précis.
  • L'agent ne peut pas modifier les fichiers de paramètres de Gemini CLI.
  • zn n'approuve jamais un appel à votre place. Quand il n'a aucune objection, c'est l'approbation propre à Gemini CLI qui s'applique.

Limites

  • Ce qu'un outil renvoie n'est pas modifié. Une valeur qu'une commande affiche, ou qui se trouve dans un fichier que l'agent peut lire, parvient toujours au modèle. Gardez vos secrets dans le coffre.
  • zn bloque ce sur quoi il vous interrogerait. Les hooks de Gemini CLI ne peuvent pas vous demander de confirmation : zn bloque donc ce qu'il refuserait, ainsi que ce sur quoi il vous interrogerait, avec la raison et la manière de l'approuver. Pour tout le reste, c'est l'approbation propre à Gemini CLI qui s'applique.
  • Un secret collé dans un prompt saisi n'est pas vérifié.
  • Gemini CLI laisse un appel s'exécuter quand un hook plante ou dépasse son délai : zn le bloque donc à la place. Dans Gemini CLI, seul un refus explicite bloque. zn fixe un délai de 15 secondes sur son hook (le délai par défaut de Gemini CLI est de 60 secondes), et une vérification encore en cours au bout de 11 secondes reçoit un blocage comme réponse. Dans une installation utilisateur, un petit script de lancement, et dans une installation de projet, une protection au démarrage, répondent par un blocage à un hook qui échoue (y compris lorsque le Node.js avec lequel zn a été installé a disparu).
  • Des paramètres peuvent désactiver le hook. hooksConfig.enabled: false, un nom de hook dans hooksConfig.disabled et la commande /hooks disable le désactivent. zn-gate check les signale.
  • zn a été vérifié avec Gemini CLI 0.64.0 et un modèle simulé, pas avec toutes les versions.

Vérifiez que ça fonctionne

Dans un nouveau terminal, lancez zn-gate check. Il doit afficher OK pour Gemini CLI. Ce que signifie la sortie.

Sous Windows PowerShell, si npm affiche « running scripts is disabled on this system », utilisez npm.cmd et zn.cmd à la place : voir Installer.

Le retirer

Lancez zn hooks uninstall gemini dans votre propre terminal (ajoutez --project pour une installation de projet).