zn-gate para Gemini CLI

Instala los hooks experimentales de zn para Gemini CLI: bloquean la lectura y escritura de archivos secretos y los comandos de shell que manejan secretos antes de que se ejecute la herramienta.

Ver .md

La compatibilidad con Gemini CLI es experimental. Considérala una primera capa: zn puede bloquear una llamada, pero no puede ocultar lo que devuelve una herramienta (mira los Límites más abajo).

Google sustituyó Gemini CLI por Antigravity CLI para las cuentas gratuitas y de Google One el 18 de junio de 2026. Antigravity es ahora la primera opción para instalaciones nuevas; zn-gate sigue siendo compatible con Gemini CLI.

Necesitas Node.js 18 o posterior. Pega cada línea en una terminal y pulsa Intro después de cada una:

npm install -g zn-gate
zn hooks install gemini

En macOS y Linux, si npm install -g falla con EACCES, sigue la guía de npm sobre cómo corregir errores de permisos.

Solucionarlo sin derechos de administrador:

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

Si usas bash, escribe en ~/.bashrc en lugar de ~/.zshrc.

Después, abre una terminal nueva y ejecuta npx -y zn-gate init. Un gestor de versiones de Node.js, como nvm, también evita el problema.

Después, abre una sesión nueva de Gemini CLI. zn añade su hook a ~/.gemini/settings.json. ¿Vas a actualizar más adelante? Consulta Actualizar zn-gate.

Solo para un proyecto

Ejecuta zn hooks install gemini --project dentro del proyecto. Escribe .gemini/settings.json en ese proyecto en lugar de en tu carpeta personal. Gemini CLI trata un hook de proyecto como no confiable hasta que lo apruebes, y el hook ejecuta zn desde tu PATH, así que todas las personas que abran el proyecto necesitan tener zn-gate instalado.

Qué obtienes

  • zn revisa cada llamada a una herramienta antes de que se ejecute.
  • Se bloquean las lecturas y escrituras de archivos secretos, como los archivos .env con valores, según la ruta del archivo.
  • Se bloquean los comandos de shell que manejan secretos. Para un comando que usa un marcador __ZN_<NAME>__, zn lo bloquea y le indica al modelo la línea exacta de zn run -- ... que debe usar en su lugar.
  • Se bloquea una búsqueda en una carpeta que imprimiría secretos en texto plano. Indica una ruta más concreta.
  • El agente no puede editar los archivos de ajustes de Gemini CLI.
  • zn nunca aprueba una llamada por ti. Cuando no tiene objeciones, se aplica la aprobación propia de Gemini CLI.

Límites

  • Lo que devuelve una herramienta no se cambia. Un valor que imprime un comando, o que está en un archivo que el agente puede leer, sigue llegando al modelo. Guarda tus secretos en la bóveda.
  • zn bloquea aquello sobre lo que preguntaría. Los hooks de Gemini CLI no pueden pedirte confirmación, así que zn bloquea lo que rechazaría y aquello sobre lo que preguntaría, con el motivo y cómo aprobarlo. Para todo lo demás se aplica la aprobación propia de Gemini CLI.
  • Un secreto pegado en un prompt escrito no se revisa.
  • Gemini CLI deja que una llamada se ejecute cuando un hook falla o agota su tiempo, así que zn la bloquea en su lugar. En Gemini CLI solo bloquea un rechazo explícito. zn fija un tiempo límite de 15 segundos en su hook (el valor por defecto de Gemini CLI es de 60 segundos), y una comprobación que sigue en curso a los 11 segundos se responde con un bloqueo. En una instalación de usuario, un pequeño script lanzador, y en una instalación de proyecto, una protección de arranque, responden con un bloqueo a un hook que falla (incluso cuando ya no existe el Node.js con el que se instaló zn).
  • Los ajustes pueden desactivar el hook. hooksConfig.enabled: false, un nombre de hook en hooksConfig.disabled y el comando /hooks disable lo desactivan. zn-gate check los detecta.
  • zn se comprobó con Gemini CLI 0.64.0 y un modelo simulado, no con todas las versiones.

Comprueba que funciona

En una terminal nueva, ejecuta zn-gate check. Debe mostrar OK para Gemini CLI. Qué significa la salida.

En PowerShell de Windows, si npm dice «running scripts is disabled on this system», usa npm.cmd y zn.cmd en lugar de npm y zn: mira Instalación.

Cómo quitarlo

Ejecuta zn hooks uninstall gemini en tu propia terminal (añade --project si lo instalaste en un proyecto).