zn-gate 1.4.1 e o que sai da sua máquina
Por defeito, nada sai da sua máquina. Se ativar a verificação cloud, só o prompt é enviado, depois de os segredos serem removidos; a saída das ferramentas nunca é enviada. Para os utilizadores do zn-gate 1.4.0 que tinham definido ZN_API_KEY, essa promessa não era verdadeira. Este artigo explica o que o pacote fazia, o que a nossa API guardava, o que mudámos na 1.4.1 e o que deve fazer. Em resumo: atualize e, se executou a 1.4.0 com uma chave de API, renove qualquer credencial que possa ter aparecido na saída de uma ferramenta.
O que a 1.4.0 fazia
O zn-gate analisa três tipos de texto: os prompts, os argumentos das chamadas de ferramentas e os resultados das ferramentas (o conteúdo dos ficheiros que o seu agente lê, a saída dos comandos que executa). Os três eram avaliados primeiro pelas regras locais. Na 1.4.0 e versões anteriores, se as regras locais não bloqueassem o texto e ZN_API_KEY estivesse definida, o pacote Node enviava esse texto para api.usezn.com para uma segunda opinião do classificador Galvanize-60M. Fazia-o sem redigir os segredos, e fazia-o para os resultados e os argumentos das ferramentas, não só para os prompts.
O README dizia que o pacote era local primeiro e que a redação de segredos era aplicada. A função de redação existia no código, mas nenhum caminho de execução a chamava. Encontrámos isto numa revisão interna do pacote publicado, a 11/10/2026.
Quem é afetado:
- Utilizadores do pacote npm (o servidor MCP,
zn-gate shield,zn-gate analyze,zn-gate testou a biblioteca) comZN_API_KEYdefinida eZN_LOCAL_ONLYdiferente detrue. - Utilizadores do pacote Python com
ZN_API_KEYdefinida: apenasanalyze()ezn-gate analyzeenviavam texto, sem redação.guard,check_tool_call,check_tool_result,sanitize_tool_resulte as integrações com frameworks foram sempre locais. - Utilizadores que nunca definiram
ZN_API_KEY, ou que definiramZN_LOCAL_ONLY=true, não são afetados. Nada saía da máquina.
O que a nossa API guardava
O texto viajava por TLS e era avaliado pelo classificador. Duas rotas guardavam ainda os primeiros 1.000 caracteres de cada entrada na nossa tabela de evidências, sem prazo de validade: a rota antiga /prod/analyze e a rota MCP analyze. A rota atual /v30/analyze, que o zn-gate usa por defeito, não guardava a entrada nos planos pagos; mantinha uma cópia redigida e truncada apenas para o plano gratuito Contributor, que o aceita. Os registos de acesso guardam apenas a rota e o estado, nunca o conteúdo.
A 11/10/2026 alterámos a API para guardar apenas um hash SHA-256 e o comprimento da entrada, e apagámos o texto guardado na tabela de evidências em todos os registos que o tinham: 1.281 registos, com datas entre 22 de agosto e 12 de setembro de 2026.
O que muda na 1.4.1
- Os resultados das ferramentas, os argumentos das chamadas e as descrições das ferramentas são avaliados apenas localmente, em qualquer configuração: servidor MCP, proxy
shielde biblioteca. - A nuvem é opcional. A análise de prompts só consulta a nuvem se definir
ZN_CLOUD=1eZN_API_KEY.ZN_API_KEYsozinha não ativa nada.ZN_LOCAL_ONLY=truecontinua a sobrepor tudo. - A redação corre no caminho de código real.
check_tool_resultdevolve sempre o conteúdo passado pelo redator de segredos;check_tool_calldevolve os argumentos sanitizados;shieldencaminha a saída das ferramentas com os segredos redigidos. Quando a nuvem está ativa, o texto do prompt passa pelo redator antes de ser enviado. zn-gate statusmostra o que a sua configuração envia, e o autoteste nunca usa a rede.- Os novos testes simulam a rede e contam os pedidos: a saída de uma ferramenta com segredos falsos volta redigida e faz zero pedidos, mesmo com
ZN_API_KEYeZN_CLOUD=1definidas. Face ao código da 1.4.0, sete desses oito testes falham.
O README tem agora uma tabela "What leaves your machine" (o que sai da sua máquina) nos três pacotes, e a mesma tabela está neste site.
O que deve fazer
- Atualize:
npx -y zn-gate@latest(ounpm install -g zn-gate@1.4.1) epip install -U zn-gate. - Se executou a 1.4.0 ou anterior com
ZN_API_KEYdefinida, considere que qualquer credencial que tenha aparecido na saída ou nos argumentos de uma ferramenta nesse período pode ter sido transmitida, e rode-a. - Execute
npx -y zn-gate statuspara ver o que a sua configuração envia agora.
O aviso está publicado no GitHub como GHSA-r4h2-qcf2-8227, com a lista completa dos caminhos de código afetados no changelog da 1.4.1.
Porque escrevemos isto
Ninguém nos reportou isto; encontrámo-lo nós. Podíamos ter publicado a 1.4.1 com uma linha no changelog. Publicamos os detalhes porque o objetivo do zn-gate é que possa confiar no que ele faz com os seus dados, e essa confiança tem de sobreviver aos dias em que nos enganamos. Se tiver perguntas, ou achar que algo aqui ainda não está suficientemente preciso, escreva para security@usezn.com.
— John Silver
Atualizado a 14 de outubro de 2026: a redação sobre o tratamento de dados foi revista para descrever o que o pacote e a API fazem hoje.