Node9-Proxy
A Camada de Segurança de Execução para a Era dos Agentes. Fornecendo governança "Sudo" determinística e logs de auditoria para agentes de IA autônomos.
Documentação
Translated Markdown
🛡️ Node9
O que seu agente de IA realmente fez? Descubra.
O Node9 fica entre o seu agente de IA e as ferramentas que ele pode usar — descubra o que ele já fez, proteja contra ações arriscadas em tempo real e revise o que aconteceu em qualquer período.
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.
O que o Node9 faz
- 🔍 Descubra — examine todas as sessões de IA passadas em busca de vazamentos de credenciais, loops de agente, operações bloqueadas e todos os segredos no disco que um agente pode alcançar agora
- 🛡 Proteja — revise ou bloqueie comandos arriscados antes de executá-los —
rm -rf,git push --force,DROP TABLE, leituras de credenciais,curl | bash, vazamentos de chaves AWS/GitHub/Stripe - 📊 Revise — relatório por período (hoje / semana / mês / 90 dias) — custo por agente, ferramentas mais usadas, escudos acionados, raio de impacto
Verificação retrospectiva
Este é minha própria máquina — 90 dias enquanto construía o Node9. Pontuação 25/100, 5 arquivos de credenciais que um agente de IA pode alcançar agora.
npx node9-ai scan # before installation, runs in ~10s, nothing uploads
node9 scan # after installation, same output
Painel de pontuação de postura de segurança
node9 posture avalia o quão exposta esta máquina está a um agente comprometido — isolamento, saída de rede, segredos no disco, cadeia de suprimentos, privilégio — e entrega o comando exato para corrigir cada descoberta.
node9 posture # scorecard with the #1 risk and a fix for every finding
node9 posture --ship # send a redacted snapshot to your node9 dashboard (fleet view)
As descobertas são agrupadas por quem pode corrigi-las: 🔒 as que o node9 reduz (basta executar o comando) e 🧱 as que só você pode. Cada uma traz um o quê / porquê / quem em linguagem simples e uma correção real — por exemplo, a descoberta "agente roda sem sandbox no host" aponta diretamente para node9 sandbox run (abaixo).
🛡️ Node9 Posture — agent on this host Score: 100/100 (Good)
2 advisories below don't affect the score — OS-level exposure, yours to weigh.
🟢 node9 is already protecting you
✅ Secrets node9 DLP is blocking this
✅ Egress node9 egress is approval-gating this
✅ Approval gate node9 is blocking this
✅ Privilege node9 is approval-gating this
🔒 node9 reduces these — run the command, the rest is yours
⚠️ Isolation Running directly on the host — no container
The agent runs loose on your whole machine, not in a sandbox.
→ node9 sandbox run <agent> — jail it: kernel egress + scoped mounts + node9 inside
→ node9 shield enable project-jail — or shrink the blast radius, keep host access
⚠️ Network exposure 4 services on 0.0.0.0 (node :3000/:4000, PostgreSQL :5432, Redis :6379)
Reachable from your whole network, not just this laptop.
→ node9 shield enable postgres|redis — node9 blocks DROP TABLE / FLUSHALL
→ bind to 127.0.0.1 / firewall the port (your part)
✅ Supply chain no issues found
✅ Coverage no issues found
Track this across your fleet & keep it green → node9.ai
Verificar um repositório — segurança de agente em CI
node9 scan-repo verifica qualquer repositório (ou uma pasta local) em busca de maneiras pelas quais um agente de IA conectado ao GitHub Actions poderia ser sequestrado por um terceiro — workflows injetáveis, segredos acessíveis ao agente, servidores MCP não fixados, configuração de agente excessivamente ampla e arquivos de instrução envenenados. Estático e somente leitura: lê apenas configuração commitada, nunca executa código do repositório. Não é necessária instalação ou token para repositórios públicos.
npx node9-ai scan-repo <owner/repo> # any public repo, no install
node9 scan-repo . # a local checkout — no network
node9 scan-repo <owner/repo> --json # machine-readable
🛡️ node9 scan-repo · node9-ai/agent-security-demo · ⚠️ agent-security risk found
inspected 2 config file(s), 2 finding(s)
🔴 CRITICAL Injectable agent workflow — untrusted input reaches a tool-using agent with secrets
.github/workflows/vulnerable-example.yml · CI-2
• runs with base-repo secrets (pull_request_target)
• checks out the untrusted PR head into the workspace root
• allowed_non_write_users: "*" — any user can trigger the agent
• no effective actor gate
🔴 CRITICAL Exfiltratable secrets reachable by an injectable agent
.github/workflows/vulnerable-example.yml · CI-4
• agent has arbitrary shell (bare Bash) → can read env and exfiltrate
O que ele verifica:
| Verificação | Sinaliza |
|---|---|
| CI-1 | configuração de agente commitada que pré-autoriza ferramentas amplas ou executa ganchos remotos |
| CI-2 | workflows de agente injetáveis — um terceiro pode acionar o agente e sequestrá-lo |
| CI-3 | servidores MCP não fixados / @latest ou credenciais inline (cadeia de suprimentos) |
| CI-4 | segredos que um agente injetado poderia exfiltrar |
| CI-6 | instruções envenenadas ou perigosas em CLAUDE.md / AGENTS.md / skills |
Bloqueie cada PR — o mesmo mecanismo de uma GitHub Action, para que uma configuração sequestrável não possa ser mesclada:
# .github/workflows/agent-security.yml
- uses: node9-ai/agent-security-action@v1
with:
fail-on: high # or 'never' to just comment
Marketplace: node9 Verificação de Segurança de Agente
Monitoramento ao vivo
node9 monitor abre um painel de terminal interativo com duas visões:
[1]Tempo real — atividade ao vivo, aprovações, alertas de segurança, pontuação de risco atual[2]Relatório — resumo por período: custo, ferramentas mais usadas, escudos acionados, raio de impacto
Relatório
Pressione [2] no monitor para um resumo por período. Alterne a janela com [T]oday · [W]eek · [M]onth · [N]inety — mesmos painéis da verificação acima, alimentados pelo seu log de auditoria pós-instalação.
node9 monitor # press [2] for Report view
node9 report --period 7d # CLI form, no TUI
Instalação
# macOS / Linux
brew tap node9-ai/node9 && brew install node9
# or via npm (any platform)
npm install -g node9-ai
node9 init # auto-wires all detected agents + MCP servers
node9 doctor # verify everything is wired correctly
Requer Node.js 18+.
Escudos — pacotes de regras curados
Cada escudo é um conjunto de regras curado para um serviço ou domínio. Ative apenas o que você precisa.
| Escudo | O que captura | Ativar |
|---|---|---|
project-jail | Bloqueia leituras de ~/.ssh, ~/.aws, .env, credenciais via ferramenta Bash e Read | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, sobrescrita de disco, eval de remoto | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE sem WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), remoções de índice | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET em um servidor ao vivo | node9 shield enable redis |
aws | Exclusão S3, encerramento EC2, alterações IAM, destruição RDS | node9 shield enable aws |
k8s | exclusão de namespace, helm uninstall, limpeza de papéis de cluster | node9 shield enable k8s |
docker | system prune, volume prune, rm -f contêineres | node9 shield enable docker |
github | gh repo delete, exclusão de branch remoto, alterações de configurações | node9 shield enable github |
filesystem | chmod 777, gravações sob /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | ferramentas MCP não aprovadas ativando silenciosamente novas capacidades | node9 shield enable mcp-tool-gating |
node9 shield list # show all shields + status
Sempre ativo — sem necessidade de configuração
- Git — captura
git push --force,git reset --hard,git clean -fd - SQL — captura
DELETE/UPDATEsemWHERE,DROP TABLE,TRUNCATE - Shell — captura
curl | bash,sudonão autorizado - DLP — sinaliza chaves AWS, tokens GitHub, chaves Stripe, chaves privadas PEM em qualquer argumento de ferramenta, conteúdo de arquivo ou configuração de shell (
~/.zshrc,~/.bashrc) - DLP de resposta — scanner em segundo plano lê o histórico de conversa do Claude e alerta você se o Claude escreveu um segredo no texto da resposta
- Auto-desfazer — instantâneo git antes de cada edição de arquivo por IA →
node9 undopara reverter - Fixação de skills — verificação SHA-256 de skills / plugins do Claude instalados entre sessões
Prompts de revisão — aprove inline, em seu agente
Quando o node9 sinaliza uma ação para revisão (por exemplo, git push --force, um DROP TABLE), o prompt de aprovar/negar é renderizado inline na conversa do agente — sem sessão congelada, sem terminal separado, sem corrida de timeout de gancho. O node9 ainda executa o avaliador completo e toma a decisão; apenas a superfície do prompt vai para o agente.
- Ativado por padrão para Claude Code e GitHub Copilot CLI — os agentes cujo contrato de gancho honra um
asknativo. Todos os outros agentes (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) usam o próprio aprovador do node9. - Controle isso com
reviewChannelem~/.node9/config.json(ou--no-askno gancho):
{
"settings": {
"reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
},
}
- Configurações de equipe: quando um aprovador de nuvem/equipe está configurado (
approvers.cloud: true), as revisões roteiam para esse aprovador — o node9 não permitirá que uma auto-aprovação inline ignore a aprovação roteada/segunda parte.
Sandbox — execute um agente em uma jaula
Quando observar não é suficiente, node9 sandbox executa o agente dentro de um contêiner descartável com uma lista de permissões de saída imposta pelo kernel e montagens com escopo — enquanto os ganchos do node9 governam e auditam cada chamada de ferramenta dentro da caixa. A versão dura da proteção: o agente só pode tocar a pasta que você monta e alcançar os hosts que você permite; tudo o mais é descartado no kernel.
cd ~/my-project
node9 sandbox new # write node9.sandbox.yaml — what to mount + which hosts to allow
node9 sandbox run # build + boot the jailed agent (your project at /workspace)
node9 sandbox tail # watch the agent's actions live, from the host
- Descartável — o contêiner é destruído ao sair; suas edições de projeto caem no disco real, nada mais sobrevive.
- Mesma política — seus escudos / regras de saída / aprovações existentes se aplicam dentro da caixa, transmitidos para o mesmo log de auditoria e painel.
- Fecha o loop de postura — executá-lo deixa as descobertas de Isolamento / Saída verdes.
Escopo honesto (Fase 1): contêiner único, Claude primeiro (Codex em seguida); o agente ainda mantém suas próprias credenciais na caixa (a parede de saída as confina aos hosts permitidos) — "o agente nunca mantém um segredo" é a fase de corretor de credenciais no roteiro. Requer Docker.
Gateway MCP
Empacote qualquer servidor MCP de forma transparente. O agente vê o mesmo servidor — o Node9 intercepta cada chamada de ferramenta.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Ou basta executar node9 init — ele empacota seus servidores MCP existentes automaticamente.
🔐 Fixação de ferramentas MCP — defesa contra rug pull
Servidores MCP podem alterar suas definições de ferramentas entre sessões. Um servidor comprometido ou malicioso poderia silenciosamente adicionar, remover ou modificar ferramentas depois que você o confiou pela primeira vez — um ataque de rug pull.
O Node9 fixa definições de ferramentas no primeiro uso:
- Primeira conexão — o gateway registra um hash SHA-256 do nome, descrição e esquema de cada ferramenta
- Conexões subsequentes — o hash é comparado; se as ferramentas mudarem, a sessão é quarentenada e cada chamada de ferramenta é bloqueada até que um humano revise e aprove a mudança
- Estado de fixação corrompido — falha fechada (bloqueia), nunca re-confia silenciosamente
node9 mcp pin list # show all pinned servers and hashes
node9 mcp pin update <serverKey> # remove pin, re-pin on next connection
node9 mcp pin reset # clear all pins
Outros comandos
Além dos três comandos de fluxo acima (scan / monitor / report):
| Comando | O que mostra | Quando usar |
|---|---|---|
node9 blast | O que um agente de IA pode alcançar agora — arquivos, creds, env | Primeira coisa a executar em qualquer máquina |
node9 tail | Fluxo ao vivo de cada chamada de ferramenta (somente texto, sem TUI) | Para enviar para outras ferramentas, CI, logs |
node9 sessions | Histórico de sessão com prompt, rastreamento de ferramenta, custo, instantâneo | Revisando uma entrega ou trabalho passado |
node9 dlp | Descobertas de vazamento de credenciais no texto de resposta do Claude | Qualquer vez que um alerta de desktop DLP disparar |
node9 mask | Redige segredos em texto puro de arquivos de histórico de sessão locais | Após uma descoberta DLP — limpa o disco local |
Além de um HUD ao vivo na barra de status do seu Claude Code:
🛡 node9 | standard | [bash-safe] | ✅ 12 allowed 🛑 2 blocked 🚨 0 dlp | ~$0.43
📊 claude-opus-4-7 | ctx [████████░░░] 54% | 5h [██░░░░░░░░] 12% | 7d [█░░░░░░░] 7%
🗂 2 CLAUDE.md | 8 rules | 3 MCPs | 4 hooks
Lendo os dados — o que os números significam
O Node9 apresenta o sinal. Aqui estão os padrões que vale a pena conhecer:
| Sinal | Significado provável |
|---|---|
Would have blocked ≥ 5 em uma semana | O agente está tentando operações de alto impacto; vale revisar os shields |
Regra única de review-git-push >50% dos achados | Sua própria regra está disparando como esperado — não é um risco, apenas supervisão |
Achado de DLP na ferramenta user-prompt | Você colou um segredo no seu próprio prompt — rotacione a chave |
| Agent Loop ×50+ no mesmo arquivo | Agente preso no ciclo editar/testar/corrigir — verifique o contexto ou reduza a velocidade |
| Incompatibilidade de pin de ferramenta MCP | O servidor mudou suas ferramentas — revise antes de confiar novamente |
| Aviso de resposta MCP grande | Esse servidor está inflando sua janela de contexto a cada turno subsequente |
Alerta Response DLP | Claude escreveu um segredo no texto da resposta — não foi bloqueado, rotacione imediatamente |
Achado de DLP em tool-result | Claude leu um arquivo contendo um segredo (.env, credenciais) — rotacione a chave e execute node9 mask |
Achado de DLP em [Shell] | Segredo em texto puro em ~/.zshrc ou ~/.bashrc — toda sessão de IA pode vê-lo |
Sinais isolados são normais; padrões persistentes são o que merecem ação.
Python SDK — governe qualquer agente Python
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
Python SDK → · Exemplo de agente de revisão de código CI →
Por baixo dos panos
- Scan lê o histórico bruto do agente de
~/.claude/projects/,~/.gemini/tmp/,~/.gemini/antigravity-*/brain/,~/.copilot/session-state/,~/.codex/sessions/— sem chamadas de API, totalmente offline - Runtime intercepta chamadas de ferramentas via hooks de pré-execução (Claude Code, Codex, Antigravity, GitHub Copilot CLI, Gemini CLI, Opencode, Pi) ou via o gateway MCP (Cursor, Windsurf, VSCode, Claude Desktop). Todas as decisões são gravadas atomicamente em
~/.node9/audit.log. - MCP gateway é um proxy stdio; intercepta
tools/list+tools/callJSON-RPC, encaminha o restante - Policy engine usa mvdan-sh para análise de AST bash — neutraliza ofuscação via escape com barra invertida, substituição de variáveis, eval de download remoto
- Shadow repo para auto-desfazer fica em
~/.node9/snapshots/<hash16>/— nunca toca no seu.git - Sandbox gera um Dockerfile + entrypoint que selam uma parede de egresso deny-by-default
ipset/iptables, depois desce para um agente não-root com o daemon + hooks do node9 rodando dentro; apenas o arquivo de credenciais do agente é montado, nunca todo o seu~/.claude
Documentação completa
Referência de configuração, regras inteligentes, regras com estado, hosts confiáveis, modos de aprovação, referência de CLI — em node9.ai/docs.
Projetos relacionados
- node9-python — Python SDK
- node9-pr-agent — GitHub Action que revisa PRs através do Node9
Enterprise
Node9 Pro adiciona bloqueio de governança, SAML/SSO, exportação central de auditoria e implantação em VPC. Veja node9.ai.
Licença
Apache-2.0
Feito com ☕ e paranoia saudável.