zn-gate para o Gemini CLI

Instale os hooks experimentais do zn para o Gemini CLI: eles bloqueiam a leitura e a escrita de arquivos secretos e os comandos de shell que lidam com segredos antes de a ferramenta rodar.

Ver .md

O suporte ao Gemini CLI é experimental. Trate-o como uma primeira camada: o zn pode bloquear uma chamada, mas não consegue esconder o que uma ferramenta devolve (veja os Limites abaixo).

O Google substituiu o Gemini CLI pelo Antigravity CLI para contas gratuitas e Google One em 18 de junho de 2026. O Antigravity agora é a primeira escolha para novas instalações; o zn-gate continua compatível com o Gemini CLI.

Você precisa do Node.js 18 ou mais recente. Cole cada linha em um terminal e pressione Enter depois de cada uma:

npm install -g zn-gate
zn hooks install gemini

No macOS e no Linux, se npm install -g falhar com EACCES, siga o guia do npm sobre como corrigir erros de permissão.

Corrija sem direitos de administrador:

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

Se usar bash, escreva em ~/.bashrc em vez de ~/.zshrc.

Depois, abra um novo terminal e execute npx -y zn-gate init. Um gerenciador de versões do Node.js, como o nvm, também evita o problema.

Depois, abra uma nova sessão do Gemini CLI. O zn adiciona seu hook a ~/.gemini/settings.json. Vai atualizar depois? Veja Atualizar o zn-gate.

Só para um projeto

Execute zn hooks install gemini --project dentro do projeto. Ele grava .gemini/settings.json nesse projeto, e não na sua pasta pessoal. O Gemini CLI trata um hook de projeto como não confiável até você aprová-lo, e o hook executa o zn a partir do seu PATH, então todas as pessoas que abrirem o projeto precisam ter o zn-gate instalado.

O que você recebe

  • O zn verifica cada chamada de ferramenta antes de ela rodar.
  • Leituras e escritas de arquivos secretos, como arquivos .env com valores, são bloqueadas pelo caminho do arquivo.
  • Comandos de shell que lidam com segredos são bloqueados. Para um comando que usa um marcador __ZN_<NAME>__, o zn o bloqueia e diz ao modelo a linha exata de zn run -- ... que deve usar no lugar.
  • Uma busca em uma pasta que imprimiria segredos em texto simples é bloqueada. Informe um caminho mais específico.
  • O agente não consegue editar os arquivos de configuração do Gemini CLI.
  • O zn nunca aprova uma chamada por você. Quando ele não tem objeção, vale a aprovação do próprio Gemini CLI.

Limites

  • O que uma ferramenta devolve não é alterado. Um valor que um comando imprime, ou que está em um arquivo que o agente pode ler, continua chegando ao modelo. Mantenha seus segredos no cofre.
  • O zn bloqueia o que perguntaria. Os hooks do Gemini CLI não conseguem pedir confirmação a você, então o zn bloqueia o que recusaria e também o que perguntaria, com o motivo e como aprovar. Para todo o resto, vale a aprovação do próprio Gemini CLI.
  • Um segredo colado em um prompt digitado não é verificado.
  • O Gemini CLI deixa uma chamada rodar quando um hook falha ou estoura o tempo, então o zn bloqueia a chamada no lugar. No Gemini CLI, só uma recusa explícita bloqueia. O zn define um timeout de 15 segundos no seu hook (o padrão do próprio Gemini CLI é de 60 segundos), e uma verificação ainda em execução após 11 segundos é respondida com um bloqueio. Em uma instalação de usuário, um pequeno script de inicialização, e em uma instalação de projeto, uma proteção de inicialização, respondem com um bloqueio a um hook que falha (inclusive quando o Node.js com o qual o zn foi instalado tiver sumido).
  • Configurações podem desligar o hook. hooksConfig.enabled: false, um nome de hook em hooksConfig.disabled e o comando /hooks disable o desligam. O zn-gate check avisa.
  • O zn foi verificado com o Gemini CLI 0.64.0 e um modelo simulado, não com todas as versões.

Confira se funciona

Em um novo terminal, execute zn-gate check. Ele deve mostrar OK para o Gemini CLI. O que significa a saída.

No PowerShell do Windows, se o npm disser "running scripts is disabled on this system", use npm.cmd e zn.cmd no lugar: veja Instalar.

Como remover

Execute zn hooks uninstall gemini no seu próprio terminal (acrescente --project para uma instalação de projeto).