Volver a actualizaciones
Nuevo releaseJul 25, 2026

node9-proxy v1.65.1

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.

Compartir

🛡️ Node9

¿Qué hizo realmente tu agente de IA? Descúbrelo.

npm version monthly downloads License: Apache 2.0 Documentation OpenSSF Best Practices node9 self-scanned

Node9 se sitúa entre tu agente de IA y las herramientas que puede usar: descubre lo que ya ha estado haciendo, protégete contra acciones arriesgadas en tiempo real y revisa lo que ocurrió 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

  • 🔍 Descubre — escanea cada sesión de IA pasada en busca de fugas de credenciales, bucles de agentes, operaciones bloqueadas y cada secreto en disco al que un agente podría acceder ahora mismo
  • 🛡 Protege — 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 de AWS/GitHub/Stripe
  • 📊 Revisa — informe por ventana de tiempo (hoy / semana / mes / 90 días) — coste por agente, herramientas principales, escudos activados, radio de impacto

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.```bash npx node9-ai scan # before installation, runs in ~10s, nothing uploads node9 scan # after installation, same output

<p align="center">
  Node9 scan scorecard
</p>

## Panel de puntuación de la postura de seguridad

`node9 posture` evalúa el grado de exposición de esta máquina ante un agente comprometido — aislamiento, salida de red, secretos en disco, cadena de suministro, privilegios — y te entrega el comando exacto para corregir cada hallazgo.```bash
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)

Los hallazgos se agrupan según quién puede solucionarlos: 🔒 los que node9 reduce (solo ejecuta el comando) y 🧱 los que solo tú puedes. Cada uno incluye un qué / por qué / quién en lenguaje sencillo y una remediación real — p. ej., el hallazgo de "el agente se ejecuta sin sandbox en el host" apunta directamente a node9 sandbox run (abajo).```text 🛡️ 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 — 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

## Escanear un repositorio — seguridad de agentes-CI

`node9 scan-repo` comprueba cualquier repositorio (o una carpeta local) en busca de formas en las que un agente de IA conectado a 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. Solo análisis estático y de parseo: lee únicamente la configuración confirmada, nunca ejecuta el código del repositorio. No se necesita instalación ni token para repositorios públicos.```bash
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

Aquí tienes la traducción al español del contenido:


Nota: El chunk proporcionado está vacío. No hay texto que traducir.```text 🛡️ 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

Qué comprueba:

| Verificación | Indicadores                                                                 |
| ------------ | --------------------------------------------------------------------------- |
| **CI-1**     | configuración de agente confirmada que preautoriza 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 o con `@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 |

**Aplica un gate a cada PR** — el mismo motor que una GitHub Action, para que una configuración secuestrable no pueda fusionarse:```yaml
# .github/workflows/agent-security.yml
- uses: node9-ai/node9-proxy@v2
  with:
    fail-on: high # or 'never' to just comment

Marketplace: node9 Agent Security

¿Lo estás usando? Añade la insignia scanned by node9 a tu README.

Monitorización en vivo

Node9 monitor dashboard

node9 monitor abre un panel interactivo de terminal 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: coste, herramientas principales, escudos activados, radio de impacto

Informe

Pulsa [2] en el monitor para obtener un resumen por ventana de tiempo. Cambia la ventana con [H]oy · [S]emana · [M]es · [N]oventa — los mismos paneles que el escaneo anterior, basados en tu registro de auditoría posterior a la instalación.

Node9 monitor [2] Informe

```bash node9 monitor # press [2] for Report view node9 report --period 7d # CLI form, no TUI ``` ## Instalación```bash # macOS / Linux brew tap node9-ai/node9 && brew install node9

or via npm (any platform)

npm install -g node9-ai

🛡️ Características de Seguridad

  • Cifrado de extremo a extremo: Todos los datos se cifran en el dispositivo antes de la sincronización.
  • Autenticación de dos factores (2FA): Compatible con TOTP y claves de seguridad de hardware.
  • Almacenamiento de secretos: Las claves API y los tokens se almacenan en el llavero del sistema operativo.
  • Cumplimiento de auditoría: Registros de acceso detallados con marcas de tiempo y direcciones IP.
  • Modo de borrado remoto: Borrado instantáneo de datos locales y remotos mediante un comando de pánico.
  • Política de contraseñas: Aplicación de complejidad y rotación periódica de contraseñas.
  • Cifrado de base de datos: Cifrado AES-256 en reposo para todos los registros almacenados.
  • Protección contra fuerza bruta: Bloqueo automático tras intentos fallidos consecutivos.
  • Actualizaciones firmadas: Verificación de integridad de las actualizaciones mediante firmas criptográficas.
  • Modo de privacidad: Oculta metadatos y minimiza la exposición de datos en redes no confiables.
node9 init       # auto-wires all detected agents + MCP servers
node9 login      # connect this machine to your workspace (approve it in the browser)
node9 doctor     # verify everything is wired and reporting
```
Requiere Node.js 18+.

`init` por sí solo te brinda aplicación local completa: reglas, shields, DLP y
aprobaciones funcionan sin conexión, en esta máquina.

`login` es lo que conecta la máquina a tu panel. Imprime un código, abre
el navegador, y apruebas la máquina allí; si aún no tienes una cuenta,
registrarte a mitad del flujo te devuelve a la misma aprobación con el código
intacto. Hasta que lo ejecutes, todo se aplica localmente pero nada llega a
Mission Control, por lo que el panel permanece vacío.

`node9 logout` desconecta una máquina nuevamente. Revoca la clave de esa máquina;
la aplicación local sigue funcionando.

## Shields — paquetes de reglas curados

Cada shield es un conjunto de reglas curado para un servicio o dominio. Habilita solo lo que necesites.

| Shield            | Qué detecta                                                                   | Habilitar                              |
| ----------------- | ----------------------------------------------------------------------------- | -------------------------------------- |
| `project-jail`    | Bloquea lecturas de `~/.ssh`, `~/.aws`, `.env`, credenciales vía Bash y Read tool | `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 S3, terminación EC2, cambios IAM, destrucción RDS                  | `node9 shield enable aws`             |
| `k8s`             | Eliminación de namespace, `helm uninstall`, borrado de roles de clúster       | `node9 shield enable k8s`             |
| `docker`          | `system prune`, `volume prune`, contenedores `rm -f`                          | `node9 shield enable docker`          |
| `github`          | `gh repo delete`, eliminación de ramas remotas, 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` |```bash
node9 shield list    # show all shields + status
```
## Siempre activo — sin configuración necesaria

- **Git** — detecta `git push --force`, `git reset --hard`, `git clean -fd`
- **SQL** — detecta `DELETE` / `UPDATE` sin `WHERE`, `DROP TABLE`, `TRUNCATE`
- **Shell** — detecta `curl | bash`, `sudo` no autorizado
- **DLP** — marca claves de AWS, tokens de GitHub, claves de Stripe, claves privadas PEM en cualquier argumento de herramienta, contenido de archivos o configuración de shell (`~/.zshrc`, `~/.bashrc`)
- **DLP de respuestas** — un escáner en segundo plano lee el historial de conversación de Claude y te alerta si Claude _escribió_ un secreto en el texto de su respuesta
- **Fijación de skills** — verificación SHA-256 de los skills/plugins de Claude instalados entre sesiones

## Prompts de revisión — aprueba en línea, dentro de tu agente

Cuando node9 marca una acción para **revisión** (p. ej. `git push --force`, un `DROP TABLE`), el prompt de aprobar/rechazar se renderiza **en línea dentro de la conversación del agente** — sin sesión congelada, sin terminal separado, sin carrera de timeout del hook. node9 sigue ejecutando el evaluador completo y toma la decisión; solo la _superficie_ del prompt se mueve al agente.

- **Activado por defecto** para **Claude Code** y **GitHub Copilot CLI** — los agentes cuyo contrato de hooks admite un `ask` nativo. Cualquier otro agente (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) usa el aprobador propio de node9.
- **Contrólalo** con `reviewChannel` en `~/.node9/config.json` (o `--no-ask` en el hook):```jsonc
{
  "settings": {
    "reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
  },
}
```
- **Configuraciones de equipo:** cuando se configura un aprobador de nube/equipo (`approvers.cloud: true`), las revisiones se enrutan a ese aprobador en su lugar — node9 no permitirá que una autoaprobación en línea omita la aprobación enrutada/de segunda parte.

## Sandbox — ejecutar un agente en una jaula

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 limitado** — mientras que los hooks de node9 gobiernan y auditan cada llamada de herramienta _dentro_ de la caja. La versión dura de la protección: el agente solo puede tocar la carpeta que montas y alcanzar los hosts que permites; todo lo demás se descarta en el kernel.```bash
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
```
- **Desechable** — el contenedor se destruye al salir; tus ediciones del proyecto aterrizan en tu disco real, nada más sobrevive.
- **Misma política** — tus reglas existentes de shields / egress / aprobaciones se aplican dentro de la caja, transmitidas al mismo registro de auditoría y panel de control.
- **Cierra el bucle de postura** — ejecutarlo pone en verde los hallazgos de Isolation / Egress.

Alcance honesto (Fase 1): contenedor único, **Claude primero** (Codex después); el agente aún conserva sus _propias_ credenciales dentro de la caja (el muro de egress las confina a los hosts permitidos) — _"el agente nunca posee un secreto"_ es la fase del 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.```json
{
  "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.

<details>
<summary><strong>🔐 Fijación de herramientas MCP — defensa contra tirones de alfombra</strong></summary>

Los servidores MCP pueden cambiar sus definiciones de herramientas entre sesiones. Un servidor comprometido o malicioso podría añadir, eliminar o modificar herramientas silenciosamente después de que confiaras en él por primera vez — un ataque de **tirón de alfombra**.

Node9 fija las definiciones de herramientas en el primer uso:

1. **Primera conexión** — la puerta de enlace registra un hash SHA-256 del nombre, descripción y esquema de cada herramienta
2. **Conexiones posteriores** — se compara el hash; si las herramientas han cambiado, la sesión se **pone en cuarentena** y cada llamada a herramienta se bloquea hasta que un humano revise y apruebe el cambio
3. **Estado de fijación corrupto** — falla de forma segura (bloquea), nunca vuelve a confiar silenciosamente```bash
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
```
</details>

## Otros comandos

Más allá de los tres comandos de flujo anteriores (`scan` / `monitor` / `report`):

| Comando          | Qué muestra                                             | Cuándo usarlo                             |
| ---------------- | --------------------------------------------------------- | --------------------------------------- |
| `node9 blast`    | A qué puede acceder un agente de IA en este momento — archivos, credenciales, entorno | Lo primero que se ejecuta en cualquier máquina       |
| `node9 tail`     | Transmisión en vivo de cada llamada de herramienta (solo texto, sin TUI)        | Para canalizar a otras herramientas, CI, registros       |
| `node9 sessions` | Historial de sesiones con prompt, rastro de herramientas y costo         | Para 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 escritorio DLP      |
| `node9 mask`     | Redactar secretos en texto plano de los archivos locales de historial de sesiones | Después de un hallazgo DLP — limpia el disco local |

Además, un **HUD en vivo** en la barra de estado de tu 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
```
## Lectura de los datos — qué significan los números

Node9 saca a la superficie la señal. Estos son 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 los hallazgos | Tu propia regla está actuando como se espera — no es un riesgo, solo supervisión                    |
| Hallazgo de DLP en la herramienta `user-prompt` | Pegaste un secreto en tu propio prompt — rota la clave                                            |
| Bucle del agente ×50+ en el mismo archivo     | El agente está atascado en un ciclo de editar/probar/arreglar — revisa el contexto o ralentízalo    |
| Desajuste de pin de herramienta MCP            | El servidor cambió sus herramientas — revisa antes de volver a confiar                             |
| Advertencia de respuesta MCP grande            | Ese servidor está inflando tu ventana de contexto en cada turno posterior                          |
| Alerta de `Response DLP`                       | Claude escribió un secreto en el texto de su respuesta — no bloqueado, rota inmediatamente          |
| Hallazgo de DLP en `tool-result`               | Claude leyó un archivo que contenía un secreto (`.env`, credenciales) — rota la clave y ejecuta `node9 mask` |
| Hallazgo de DLP en `[Shell]`                   | Secreto en texto plano en `~/.zshrc` o `~/.bashrc` — cada sesión de IA puede verlo                  |

Las señales puntuales son normales; los patrones persistentes son sobre los que actúas.

## SDK de Python — gobierna cualquier agente de Python```python
from node9 import configure, protect

configure(agent_name="my-agent", policy="require_approval")

@protect("bash")
def run_command(cmd: str) -> str:
    ...
```
**[Python SDK →](https://github.com/node9-ai/node9-python)** · **[Ejemplo de agente de revisión de código CI →](https://github.com/node9-ai/node9-pr-agent)**

## Bajo el capó

- **Scan** lee el historial bruto del agente desde `~/.claude/projects/`, `~/.gemini/tmp/`, `~/.gemini/antigravity-*/brain/`, `~/.copilot/session-state/`, `~/.codex/sessions/` — sin llamadas a API, totalmente offline
- **Runtime** intercepta las llamadas a 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 se registran atómicamente en `~/.node9/audit.log`.
- **La puerta de enlace MCP** es un proxy stdio; intercepta `tools/list` + `tools/call` JSON-RPC, reenvía el resto
- **El motor de políticas** usa [mvdan-sh](https://github.com/mvdan/sh) para el análisis AST de bash — frustra la ofuscación mediante escapes con barras invertidas, sustitución de variables y eval de descargas remotas
- **Sandbox** genera un Dockerfile + entrypoint que sellan un muro de egreso deny-by-default con `ipset`/`iptables`, y luego descienden a un agente no root con el daemon y los 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](https://node9.ai/docs)**.

## Proyectos relacionados

- **[node9-python](https://github.com/node9-ai/node9-python)** — SDK de Python
- **[node9-pr-agent](https://github.com/node9-ai/node9-pr-agent)** — Acción de GitHub que revisa PRs a través de Node9

## Empresarial

**Node9 Pro** añade bloqueo de gobernanza, SAML/SSO, exportación central de auditoría y despliegue en VPC. Consulta [node9.ai](https://node9.ai).

## Licencia

Apache-2.0

<p align="center">
  <sub>Construido con ☕ y paranoia saludable.</sub>
</p>

Categorías