
node9-proxy v1.64.0
La capa de seguridad de ejecución para la Era de los Agentes. Proporcionando gobernanza determinista "Sudo" y registros de auditoría para agentes de IA autónomos.
🛡️ Node9
¿Qué hizo realmente tu agente de IA? Descúbrelo.
Node9 se sitúa entre tu agente de IA y las herramientas que puede usar — descubre lo que ya ha estado haciendo, protege contra acciones arriesgadas en tiempo real y revisa lo que sucedió en cualquier ventana de tiempo.
Funciona con Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · cualquier servidor MCP.
Qué hace Node9
- 🔍 Descubrir — escanea cada sesión pasada de IA en busca de fugas de credenciales, bucles de agente, operaciones bloqueadas y todos los secretos en disco a los que un agente podría acceder ahora mismo
- 🛡 Proteger — revisa o bloquea comandos arriesgados antes de que se ejecuten —
rm -rf,git push --force,DROP TABLE, lecturas de credenciales,curl | bash, fugas de claves AWS/GitHub/Stripe - 📊 Revisar — informe por ventana de tiempo (hoy / semana / mes / 90 días) — costo por agente, herramientas principales, escudos activados, radio de explosión
Escaneo retrospectivo
Esta es mi propia máquina — 90 días mientras construía Node9. Puntuación 25/100, 5 archivos de credenciales a los que un agente de IA podría acceder ahora mismo.
npx node9-ai scan # antes de la instalación, se ejecuta en ~10s, no sube nada
node9 scan # después de la instalación, misma salida
Node9 scan scorecard
Tarjeta de puntuación de postura de seguridad
node9 posture califica cuán expuesta está esta máquina a un agente comprometido — aislamiento, salida, secretos en disco, cadena de suministro, privilegio — y te da el comando exacto para arreglar cada hallazgo.
node9 posture # tarjeta de puntuación con el riesgo #1 y un arreglo para cada hallazgo
node9 posture --ship # envía una instantánea censurada a tu panel de node9 (vista de flota)
Los hallazgos se agrupan por quién puede solucionarlos: 🔒 los que node9 reduce (solo ejecuta el comando) y 🧱 los que solo tú puedes. Cada uno lleva una explicación en lenguaje sencillo de qué / por qué / quién y una corrección real — por ejemplo, el hallazgo de "el agente se ejecuta sin sandbox en el host" apunta directamente a node9 sandbox run (abajo).
🛡️ Node9 Posture — agente en este host Puntuación: 100/100 (Bien)
2 avisos abajo no afectan la puntuación — exposición a nivel de SO, tú decides.
🟢 node9 ya te está protegiendo
✅ Secretos node9 DLP está bloqueando esto
✅ Salida node9 salida está requiriendo aprobación
✅ Puerta de aprobación node9 está bloqueando esto
✅ Privilegio node9 está requiriendo aprobación
🔒 node9 reduce estos — ejecuta el comando, el resto es tuyo
⚠️ Aislamiento Ejecutándose directamente en el host — sin contenedor
El agente opera libremente en toda tu máquina, no en un sandbox.
→ node9 sandbox run <agent> — enciérralo: salida a nivel de kernel + montajes con alcance + node9 dentro
→ node9 shield enable project-jail — o reduce el radio de explosión, mantén acceso al host
⚠️ Exposición de red 4 servicios en 0.0.0.0 (node :3000/:4000, PostgreSQL :5432, Redis :6379)
Accesibles desde toda tu red, no solo desde este portátil.
→ node9 shield enable postgres|redis — node9 bloquea DROP TABLE / FLUSHALL
→ vincular a 127.0.0.1 / firewallear el puerto (tu parte)
✅ Cadena de suministro sin problemas encontrados
✅ Cobertura sin problemas encontrados
Rastrea esto en tu flota y mantenlo en verde → node9.ai
Escanear un repositorio — seguridad de agente-CI
node9 scan-repo verifica cualquier repositorio (o una carpeta local) en busca de formas en que un agente de IA integrado en GitHub Actions podría ser secuestrado por un externo — flujos de trabajo inyectables, secretos accesibles por el agente, servidores MCP sin fijar, configuración de agente demasiado amplia y archivos de instrucciones envenenados. Estático y solo de análisis: solo lee configuración confirmada, nunca ejecuta código del repositorio. No se necesita instalación ni token para repositorios públicos.
npx node9-ai scan-repo <owner/repo> # cualquier repositorio público, sin instalación
node9 scan-repo . # un checkout local — sin red
node9 scan-repo <owner/repo> --json # legible por máquina
🛡️ node9 scan-repo · node9-ai/agent-security-demo · ⚠️ riesgo de seguridad de agente encontrado
inspeccionado(s) 2 archivo(s) de configuración, 2 hallazgo(s)
🔴 CRÍTICO Flujo de trabajo de agente inyectable — entrada no confiable llega a un agente que usa herramientas con secretos
.github/workflows/vulnerable-example.yml · CI-2
• se ejecuta con secretos del repositorio base (pull_request_target)
• verifica la cabeza del PR no confiable en la raíz del espacio de trabajo
• allowed_non_write_users: "*" — cualquier usuario puede activar el agente
• sin puerta de actor efectiva
🔴 CRÍTICO Secretos exfiltrables accesibles por un agente inyectable
.github/workflows/vulnerable-example.yml · CI-4
• el agente tiene shell arbitrario (Bash puro) → puede leer env y exfiltrar
Qué verifica:
| Verificación | Banderas |
|---|---|
| CI-1 | configuración de agente confirmada que pre-autoriza herramientas amplias o ejecuta hooks remotos |
| CI-2 | flujos de trabajo de agente inyectables — un externo puede activar el agente y secuestrarlo |
| CI-3 | servidores MCP sin fijar / @latest o credenciales en línea (cadena de suministro) |
| CI-4 | secretos que un agente inyectado podría exfiltrar |
| CI-6 | instrucciones envenenadas o peligrosas en CLAUDE.md / AGENTS.md / skills |
Gatea cada PR — el mismo motor que una GitHub Action, para que una configuración secuestrable no pueda fusionarse:
# .github/workflows/agent-security.yml
- uses: node9-ai/agent-security-action@v1
with:
fail-on: high # o 'never' para solo comentar
Marketplace: node9 Agent Security Check
Monitoreo en vivo
Node9 monitor dashboard
node9 monitor abre un panel de terminal interactivo con dos vistas:
[1]Tiempo real — actividad en vivo, aprobaciones, alertas de seguridad, puntuación de riesgo actual[2]Informe — resumen por ventana de tiempo: costo, herramientas principales, escudos activados, radio de explosión
Informe
Presiona [2] en el monitor para un resumen por ventana de tiempo. Alterna la ventana con [H]oy · [S]emana · [M]es · [N]oventa — los mismos paneles que el escaneo anterior, impulsados por tu registro de auditoría posterior a la instalación.
Node9 monitor [2] Report
node9 monitor # presiona [2] para la vista de Informe
node9 report --period 7d # forma CLI, sin TUI
Instalación
# macOS / Linux
brew tap node9-ai/node9 && brew install node9
# o mediante npm (cualquier plataforma)
npm install -g node9-ai
node9 init # conecta automáticamente todos los agentes detectados + servidores MCP
node9 doctor # verifica que todo esté conectado correctamente
Requiere Node.js 18+.
Escudos — paquetes de reglas seleccionados
Cada escudo es un conjunto de reglas seleccionado para un servicio o dominio. Habilita solo lo que necesitas.
| Escudo | Qué detecta | Habilitar |
|---|---|---|
project-jail | Bloquea lecturas de ~/.ssh, ~/.aws, .env, credenciales mediante Bash y Herramienta de Lectura | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, sobrescritura de disco, eval de remoto | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE sin WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), eliminación de índices | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET en un servidor en vivo | node9 shield enable redis |
aws | Eliminación de S3, terminación de EC2, cambios de IAM, destrucción de RDS | node9 shield enable aws |
k8s | Eliminación de namespace, helm uninstall, limpieza de roles de clúster | node9 shield enable k8s |
docker | system prune, volume prune, rm -f contenedores | node9 shield enable docker |
github | gh repo delete, eliminación de rama remota, cambios de configuración | node9 shield enable github |
filesystem | chmod 777, escrituras bajo /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | herramientas MCP no aprobadas que activan silenciosamente nuevas capacidades | node9 shield enable mcp-tool-gating |
node9 shield list # muestra todos los escudos + estado
Siempre activo — sin configuración necesaria
- Git — detecta
git push --force,git reset --hard,git clean -fd - SQL — detecta
DELETE/UPDATEsinWHERE,DROP TABLE,TRUNCATE - Shell — detecta
curl | bash,sudono autorizado - DLP — marca claves AWS, tokens de GitHub, claves Stripe, claves privadas PEM en cualquier argumento de herramienta, contenido de archivos o configuración de shell (
~/.zshrc,~/.bashrc) - DLP de respuesta — escáner de fondo que lee el historial de conversaciones de Claude y te alerta si Claude escribió un secreto en su texto de respuesta
- Deshacer automático — instantánea de git antes de cada edición de archivo por IA →
node9 undopara revertir - Fijación de skills — verificación SHA-256 de los skills/plugins de Claude instalados entre sesiones
Indicaciones de revisión — aprueba en línea, en tu agente
Cuando node9 marca una acción para revisión (p. ej., git push --force, un DROP TABLE), la indicación de aprobar/rechazar se renderiza en línea en la conversación del agente — sin sesión congelada, sin terminal separado, sin carrera de tiempo de espera del hook. node9 aún ejecuta el evaluador completo y toma la decisión; solo la superficie de la indicación se mueve al agente.
- Activado por defecto para Claude Code y GitHub Copilot CLI — los agentes cuyo contrato de hook soporta un
asknativo. Cualquier otro agente (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) usa el aprobador propio de node9. - Contrólalo con
reviewChannelen~/.node9/config.json(o--no-asken el hook):
{
"settings": {
"reviewChannel": "ask", // "ask" = indicación en línea en el agente (predeterminado) | "approver" = aprobador propio de node9
},
}
- Configuraciones de equipo: cuando un aprobador en la nube/equipo está configurado (
approvers.cloud: true), las revisiones se dirigen a ese aprobador — node9 no permitirá que una auto-aprobación en línea evite la aprobación enrutada/de segunda parte.
Sandbox — ejecuta un agente en una celda
Cuando observar no es suficiente, node9 sandbox ejecuta el agente dentro de un contenedor desechable con una lista de permitidos de salida impuesta por el kernel y montajes con alcance — mientras los hooks de node9 gobiernan y auditan cada llamada de herramienta dentro de la caja. La versión dura de protección: el agente solo puede tocar la carpeta que montas y alcanzar los hosts que permites; todo lo demás se elimina a nivel de kernel.
cd ~/my-project
node9 sandbox new # escribe node9.sandbox.yaml — qué montar + qué hosts permitir
node9 sandbox run # construye + arranca el agente encerrado (tu proyecto en /workspace)
node9 sandbox tail # observa las acciones del agente en vivo, desde el host
- Desechable — el contenedor se destruye al salir; las ediciones de tu proyecto aterrizan en tu disco real, nada más sobrevive.
- Misma política — tus escudos / reglas de salida / aprobaciones existentes se aplican dentro de la caja, transmitidas al mismo registro de auditoría y panel.
- Cierra el bucle de postura — ejecutarlo pone en verde los hallazgos de Aislamiento / Salida.
Alcance honesto (Fase 1): contenedor único, Claude primero (Codex después); el agente aún conserva sus propias credenciales en la caja (la pared de salida las confina a los hosts permitidos) — "el agente nunca posee un secreto" es la fase de broker de credenciales en la hoja de ruta. Requiere Docker.
Puerta de enlace MCP
Envuelve cualquier servidor MCP de forma transparente. El agente ve el mismo servidor — Node9 intercepta cada llamada de herramienta.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
O simplemente ejecuta node9 init — envuelve tus servidores MCP existentes automáticamente.
🔐 Fijación de herramientas MCP — defensa contra tirón de alfombra
Los servidores MCP pueden cambiar sus definiciones de herramientas entre sesiones. Un servidor comprometido o malicioso podría agregar, eliminar o modificar herramientas silenciosamente después de que lo hayas confiado inicialmente — un ataque de tirón de alfombra.
Node9 fija las definiciones de herramientas en el primer uso:
- Primera conexión — la puerta de enlace registra un hash SHA-256 del nombre, descripción y esquema de cada herramienta
- Conexiones subsiguientes — se compara el hash; si las herramientas cambiaron, la sesión se pone en cuarentena y cada llamada de herramienta se bloquea hasta que un humano revise y apruebe el cambio
- Estado de fijación corrupto — falla cerrado (bloquea), nunca reconfía silenciosamente
node9 mcp pin list # muestra todos los servidores fijados y hashes
node9 mcp pin update <serverKey> # elimina la fijación, vuelve a fijar en la próxima conexión
node9 mcp pin reset # limpia todas las fijaciones
Otros comandos
Además de los tres comandos de flujo anteriores (scan / monitor / report):
| Comando | Qué muestra | Cuándo usar |
|---|---|---|
node9 blast | A qué puede acceder un agente de IA ahora mismo — archivos, credenciales, env | Lo primero que ejecutar en cualquier máquina |
node9 tail | Transmisión en vivo de cada llamada de herramienta (solo texto, sin TUI) | Canalizar a otras herramientas, CI, registros |
node9 sessions | Historial de sesiones con indicación, rastro de herramientas, costo, instantánea | Revisar una transferencia o trabajo pasado |
node9 dlp | Hallazgos de fuga de credenciales en el texto de respuesta de Claude | Cada vez que se active una alerta de DLP de escritorio |
node9 mask | Redacta secretos en texto plano de archivos locales de historial de sesiones | Después de un hallazgo DLP — limpia el disco local |
Además, un HUD en vivo en la línea de estado de tu Claude Code:
🛡 node9 | estándar | [bash-safe] | ✅ 12 permitidos 🛑 2 bloqueados 🚨 0 dlp | ~$0.43
📊 claude-opus-4-7 | ctx [████████░░░] 54% | 5h [██░░░░░░░░] 12% | 7d [█░░░░░░░] 7%
🗂 2 CLAUDE.md | 8 reglas | 3 MCPs | 4 hooks
Leyendo los datos — qué significan los números
Node9 muestra la señal. Aquí están los patrones que vale la pena conocer:
| Señal | Significado probable |
|---|---|
Would have blocked ≥ 5 en una semana | El agente está intentando operaciones de alto impacto; vale la pena revisar los escudos |
Una sola regla review-git-push >50% de hallazgos | Tu propia regla se está disparando según lo previsto — no es un riesgo, solo supervisión |
Hallazgo DLP en la herramienta user-prompt | Pegaste un secreto en tu propia indicación — rota la clave |
| Bucle de agente ×50+ en el mismo archivo | El agente está atascado en un ciclo de editar/probar/arreglar — verifica el contexto o reduce la velocidad |
| Discrepancia de fijación de herramienta MCP | El servidor cambió sus herramientas — revisa antes de volver a confiar |
| Aviso de respuesta MCP grande | Ese servidor está inflando tu ventana de contexto para cada turno subsiguiente |
Alerta de Response DLP | Claude escribió un secreto en su texto de respuesta — no bloqueado, rota inmediatamente |
Hallazgo DLP en tool-result | Claude leyó un archivo que contenía un secreto (.env, credenciales) — rota la clave y ejecuta node9 mask |
Hallazgo DLP en [Shell] | Secreto en texto plano en ~/.zshrc o ~/.bashrc — cada sesión de IA puede verlo |
Las señales únicas son normales; los patrones persistentes son en los que actúas.
SDK de Python — gobierna cualquier agente de Python
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
SDK de Python → · Ejemplo de agente de revisión de código CI →
Bajo el capó
- Escanear lee el historial de agente sin procesar de
~/.claude/projects/,~/.gemini/tmp/,~/.gemini/antigravity-*/brain/,~/.copilot/session-state/,~/.codex/sessions/— sin llamadas API, completamente offline - Tiempo de ejecución intercepta llamadas de herramientas mediante hooks de pre-ejecución (Claude Code, Codex, Antigravity, GitHub Copilot CLI, Gemini CLI, Opencode, Pi) o mediante la puerta de enlace MCP (Cursor, Windsurf, VSCode, Claude Desktop). Todas las decisiones aterrizan en
~/.node9/audit.logde forma atómica. - Puerta de enlace MCP es un proxy stdio; intercepta
tools/list+tools/callJSON-RPC, reenvía el resto - Motor de políticas usa mvdan-sh para análisis AST de bash — derrota la ofuscación mediante escapes con barra invertida, sustitución de variables, eval de descarga remota
- Repositorio sombra para deshacer automático vive en
~/.node9/snapshots/<hash16>/— nunca toca tu.git - Sandbox genera un Dockerfile + punto de entrada que sellan un muro de salida
ipset/iptablesde denegar por defecto, luego baja a un agente no root con el demonio y hooks de node9 ejecutándose dentro; solo se monta el archivo de credenciales del agente, nunca todo tu~/.claude
Documentación completa
Referencia de configuración, reglas inteligentes, reglas con estado, hosts de confianza, modos de aprobación, referencia CLI — en node9.ai/docs.
Proyectos relacionados
- node9-python — SDK de Python
- node9-pr-agent — GitHub Action que revisa PRs a través de Node9
Empresa
Node9 Pro agrega bloqueo de gobierno, SAML/SSO, exportación de auditoría central y despliegue en VPC. Consulta node9.ai.
Licencia
Apache-2.0
Construido con ☕ y paranoia saludable.