
node9-proxy v1.66.0
Il livello di sicurezza dell'esecuzione per l'era degli agenti. Fornisce una governance deterministica "Sudo" e registri di audit per agenti AI autonomi.
🛡️ Node9
Cosa ha fatto davvero il tuo agente AI? Scoprilo.
Node9 si posiziona tra il tuo agente AI e gli strumenti che può utilizzare — scopri cosa ha già fatto, proteggiti dalle azioni rischiose in tempo reale e rivedi cosa è successo in qualsiasi intervallo di tempo.
Funziona con Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · qualsiasi server MCP.
Cosa fa Node9
- 🔍 Scopri — analizza ogni sessione AI passata per fughe di credenziali, loop di agenti, operazioni bloccate e ogni segreto su disco a cui un agente potrebbe accedere in questo momento
- 🛡 Proteggi — rivedi o blocca i comandi rischiosi prima che vengano eseguiti —
rm -rf,git push --force,DROP TABLE, letture di credenziali,curl | bash, fughe di chiavi AWS/GitHub/Stripe - 📊 Rivedi — report per intervalli di tempo (oggi / settimana / mese / 90 giorni) — costo per agente, strumenti principali, scudi attivati, raggio d'esplosione
Scansione retrospettiva
Questa è la mia macchina personale — 90 giorni mentre costruivo Node9. Punteggio 25/100, 5 file di credenziali a cui un agente AI potrebbe accedere in questo momento.```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>
## Scorecard della postura di sicurezza
`node9 posture` valuta quanto questa macchina sia esposta a un agente compromesso — isolamento, egress, segreti su disco, supply chain, privilegi — e ti fornisce il comando esatto per correggere ogni rilevamento.```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)
I risultati sono raggruppati per chi può risolverli: 🔒 quelli che node9 riduce (basta eseguire il comando) e 🧱 quelli che solo tu puoi risolvere. Ciascuno include una spiegazione in linguaggio semplice di cosa / perché / chi e una vera soluzione — ad esempio, il risultato "l'agente viene eseguito senza sandbox sull'host" punta direttamente a node9 sandbox run (sotto).```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
## Scansiona un repository — sicurezza agent-CI
`node9 scan-repo` controlla qualsiasi repository (o una cartella locale) per individuare modi in cui un agente AI collegato a GitHub Actions potrebbe essere **dirottato da un esterno** — workflow iniettabili, segreti raggiungibili dall'agente, server MCP non bloccati, configurazione dell'agente eccessivamente permissiva e file di istruzioni avvelenati. Solo analisi statica e di parsing: legge esclusivamente la configurazione committata, senza mai eseguire il codice del repository. Nessuna installazione o token richiesti per i repository pubblici.```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
I'm ready to translate the Kitploit tool content from English to Italian. Please provide chunk 9 of 33.```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
Cosa controlla:
| Check | Flag |
| -------- | ---------------------------------------------------------------------------- |
| **CI-1** | config dell'agente committata che pre-autorizza strumenti ampi o esegue hook remoti |
| **CI-2** | workflow dell'agente iniettabili — un esterno può attivare l'agente e dirottarlo |
| **CI-3** | server MCP non bloccati / `@latest` o credenziali inline (supply chain) |
| **CI-4** | segreti che un agente iniettato potrebbe esfiltrare |
| **CI-6** | istruzioni avvelenate o pericolose in `CLAUDE.md` / `AGENTS.md` / skills |
**Blocca ogni PR** — lo stesso motore di una GitHub Action, così una config dirottabile non può essere unita:```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 stai usando? Aggiungi il badge scanned by node9 al tuo README.
Monitoraggio in tempo reale
Node9 monitor dashboard
node9 monitor apre una dashboard interattiva da terminale con due viste:
[1]Realtime — attività in tempo reale, approvazioni, avvisi di sicurezza, punteggio di rischio attuale[2]Report — riepilogo per finestra temporale: costi, strumenti principali, scudi attivati, raggio d'esplosione
Report
Premi [2] nel monitor per un riepilogo per finestra temporale. Alterna la finestra con [O]ggi · [S]ettimana · [M]ese · [N]ovanta — stessi pannelli della scansione sopra, basati sul tuo registro di audit post-installazione.
Node9 monitor [2] Report
```bash node9 monitor # press [2] for Report view node9 report --period 7d # CLI form, no TUI ``` ## Installazione```bash # macOS / Linux brew tap node9-ai/node9 && brew install node9or via npm (any platform)
npm install -g node9-ai
I understand the translation requirements. Please provide the Markdown content chunk you'd like me to translate from English to Italian.```bash
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
Richiede Node.js 18+.
init da solo ti garantisce la piena applicazione locale: regole, shield, DLP e
approvazioni funzionano tutti offline, su questa macchina.
login è ciò che collega la macchina alla tua dashboard. Stampa un codice, apre
il browser e lì approvi la macchina; se non hai ancora un account,
la registrazione a metà flusso ti riporta alla stessa approvazione con il codice
intatto. Finché non lo esegui, tutto viene applicato localmente ma nulla arriva
a Mission Control, quindi la dashboard resta vuota.
node9 logout scollega nuovamente una macchina. Revoca la chiave di quella macchina;
l'applicazione locale continua a funzionare.
Shield — pacchetti di regole curati
Ogni shield è un set di regole curato per un servizio o un dominio. Abilita solo ciò che ti serve.
| Shield | Cosa intercetta | Abilitazione |
|---|---|---|
project-jail | Blocca le letture di ~/.ssh, ~/.aws, .env, credenziali tramite Bash e Read tool | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, sovrascrittura del disco, eval di contenuti remoti | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE senza WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), eliminazioni di indici | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET su un server live | node9 shield enable redis |
aws | Eliminazione S3, terminazione EC2, modifiche IAM, distruzione RDS | node9 shield enable aws |
k8s | Eliminazione namespace, helm uninstall, azzeramento ruoli cluster | node9 shield enable k8s |
docker | system prune, volume prune, rm -f dei container | node9 shield enable docker |
github | gh repo delete, eliminazione branch remoti, modifiche alle impostazioni | node9 shield enable github |
filesystem | chmod 777, scritture sotto /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | strumenti MCP non approvati che attivano silenziosamente nuove capacità | node9 shield enable mcp-tool-gating |
| node9 shield list # show all shields + status |
## Sempre attivo — nessuna configurazione necessaria
- **Git** — intercetta `git push --force`, `git reset --hard`, `git clean -fd`
- **SQL** — intercetta `DELETE` / `UPDATE` senza `WHERE`, `DROP TABLE`, `TRUNCATE`
- **Shell** — intercetta `curl | bash`, `sudo` non autorizzato
- **DLP** — segnala chiavi AWS, token GitHub, chiavi Stripe, chiavi private PEM in qualsiasi argomento di strumento, contenuto di file o configurazione di shell (`~/.zshrc`, `~/.bashrc`)
- **Response DLP** — lo scanner in background legge la cronologia della conversazione di Claude e ti avvisa se Claude _ha scritto_ un segreto nel testo della sua risposta
- **Skills pinning** — verifica SHA-256 delle skills/plugin di Claude installati tra le sessioni
## Prompt di revisione — approva inline, nel tuo agente
Quando node9 segnala un'azione per la **revisione** (es. `git push --force`, un `DROP TABLE`), il prompt di approva/nega viene visualizzato **inline nella conversazione dell'agente** — nessuna sessione bloccata, nessun terminale separato, nessuna race condition di timeout dell'hook. node9 esegue comunque l'evaluator completo e prende la decisione; solo la _superficie_ del prompt si sposta nell'agente.
- **Attivo per impostazione predefinita** per **Claude Code** e **GitHub Copilot CLI** — gli agenti il cui contratto di hook supporta un `ask` nativo. Ogni altro agente (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) utilizza l'approver di node9.
- **Controllalo** con `reviewChannel` in `~/.node9/config.json` (o `--no-ask` sull'hook):```jsonc
{
"settings": {
"reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
},
}
- Configurazioni di team: quando è configurato un approvatore cloud/team (
approvers.cloud: true), le revisioni vengono instradate a tale approvatore — node9 non consentirà a un'auto-approvazione inline di bypassare l'approvazione instradata/di seconda parte.
Sandbox — esegui un agente in una gabbia
Quando osservare non basta, node9 sandbox esegue l'agente all'interno di un contenitore usa e getta con una allowlist di egress applicata dal kernel e mount con ambito limitato — mentre gli hook di node9 governano e controllano ogni chiamata di strumento dentro la scatola. La versione dura della protezione: l'agente può toccare solo la cartella che monti e raggiungere solo gli host che permetti; tutto il resto viene eliminato a livello di 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
- **Disposable** — il container viene distrutto all'uscita; le tue modifiche al progetto finiscono sul tuo disco reale, nient'altro sopravvive.
- **Stessa policy** — le tue regole esistenti di shields / egress / approvazioni si applicano all'interno del box, trasmesse allo stesso audit log e dashboard.
- **Chiude il ciclo di postura** — eseguirlo porta i finding Isolation / Egress a verde.
Ambito onesto (Fase 1): container singolo, **Claude prima** (Codex dopo); l'agente mantiene ancora le proprie _credenziali_ nel box (il muro di egress le confina agli host consentiti) — _"l'agente non detiene mai un segreto"_ è la fase del credential-broker nella roadmap. Richiede Docker.
## Gateway MCP
Avvolgi qualsiasi server MCP in modo trasparente. L'agente vede lo stesso server — Node9 intercetta ogni chiamata di strumento.```json
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Oppure esegui semplicemente node9 init — che avvolge automaticamente i tuoi server MCP esistenti.
🔐 Pinning degli strumenti MCP — difesa contro i rug pull
I server MCP possono modificare le definizioni dei loro strumenti tra una sessione e l'altra. Un server compromesso o malintenzionato potrebbe aggiungere, rimuovere o modificare silenziosamente gli strumenti dopo che gli hai concesso la tua fiducia iniziale — un attacco rug pull.
Node9 fissa le definizioni degli strumenti al primo utilizzo:
- Prima connessione — il gateway registra un hash SHA-256 di nome, descrizione e schema di ogni strumento
- Connessioni successive — l'hash viene confrontato; se gli strumenti sono cambiati, la sessione viene messa in quarantena e ogni chiamata agli strumenti viene bloccata finché un essere umano non esamina e approva la modifica
- Stato di pin corrotto — fallisce in modalità chiusa (blocca), non si fida mai di nuovo silenziosamente```bash node9 mcp pin list # show all pinned servers and hashes node9 mcp pin update # remove pin, re-pin on next connection node9 mcp pin reset # clear all pins
</details>
## Altri comandi
Oltre ai tre comandi di flusso sopra (`scan` / `monitor` / `report`):
| Comando | Cosa mostra | Quando usarlo |
| ---------------- | --------------------------------------------------------- | --------------------------------------- |
| `node9 blast` | Cosa può raggiungere un agente AI in questo momento — file, credenziali, env | Prima cosa da eseguire su qualsiasi macchina |
| `node9 tail` | Flusso live di ogni chiamata di strumento (solo testo, senza TUI) | Per il piping in altri strumenti, CI, log |
| `node9 sessions` | Cronologia delle sessioni con prompt, traccia degli strumenti e costo | Per rivedere un passaggio di consegne o lavoro passato |
| `node9 dlp` | Risultati di perdita di credenziali nel testo di risposta di Claude | Ogni volta che scatta un avviso desktop DLP |
| `node9 mask` | Oscura i segreti in chiaro dai file locali di cronologia delle sessioni | Dopo un risultato DLP — pulisce il disco locale |
In più un **HUD live** nella barra di stato del tuo 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
Leggere i dati — cosa significano i numeri
Node9 fa emergere il segnale. Ecco i pattern che vale la pena conoscere:
| Segnale | Significato probabile |
|---|---|
Would have blocked ≥ 5 in una settimana | L'agente sta tentando operazioni ad alto impatto; vale la pena rivedere gli shield |
Singola regola review-git-push >50% dei riscontri | La tua regola sta scattando come previsto — non è un rischio, solo supervisione |
Rilevamento DLP nello strumento user-prompt | Hai incollato un segreto nel tuo stesso prompt — ruota la chiave |
| Agent Loop ×50+ sullo stesso file | L'agente è bloccato nel ciclo modifica/test/correzione — controlla il contesto o rallenta |
| Disallineamento dei pin dello strumento MCP | Il server ha cambiato i suoi strumenti — rivedi prima di ri-fidarti |
| Avviso di risposta MCP di grandi dimensioni | Quel server sta gonfiando la tua finestra di contesto a ogni turno successivo |
Avviso Response DLP | Claude ha scritto un segreto nel testo della sua risposta — non bloccato, ruota immediatamente |
Rilevamento DLP in tool-result | Claude ha letto un file contenente un segreto (.env, credenziali) — ruota la chiave ed esegui node9 mask |
Rilevamento DLP in [Shell] | Segreto in chiaro in ~/.zshrc o ~/.bashrc — ogni sessione AI può vederlo |
I segnali isolati sono normali; sono i pattern persistenti quelli su cui agire.
Python SDK — governa qualsiasi agente 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)** · **[Esempio di agente di review del codice CI →](https://github.com/node9-ai/node9-pr-agent)**
## Sotto il cofano
- **Scan** legge la cronologia grezza degli agenti da `~/.claude/projects/`, `~/.gemini/tmp/`, `~/.gemini/antigravity-*/brain/`, `~/.copilot/session-state/`, `~/.codex/sessions/` — nessuna chiamata API, completamente offline
- **Runtime** intercetta le chiamate agli strumenti tramite hook di pre-esecuzione (Claude Code, Codex, Antigravity, GitHub Copilot CLI, Gemini CLI, Opencode, Pi) o tramite il gateway MCP (Cursor, Windsurf, VSCode, Claude Desktop). Tutte le decisioni finiscono in `~/.node9/audit.log` in modo atomico.
- **Gateway MCP** è un proxy stdio; intercetta `tools/list` + `tools/call` JSON-RPC, inoltra il resto
- **Motore delle policy** usa [mvdan-sh](https://github.com/mvdan/sh) per l'analisi AST di bash — sconfigge l'offuscamento tramite escaping con backslash, sostituzione di variabili, eval di download remoti
- **Sandbox** genera un Dockerfile + entrypoint che sigillano un muro di uscita `ipset`/`iptables` deny-by-default, poi scendono a un agente non-root con il daemon e gli hook di node9 in esecuzione al suo interno; viene montato solo il file delle credenziali dell'agente, mai l'intera `~/.claude`
## Documentazione completa
Riferimento di configurazione, regole intelligenti, regole stateful, host affidabili, modalità di approvazione, riferimento CLI — su **[node9.ai/docs](https://node9.ai/docs)**.
## Progetti correlati
- **[node9-python](https://github.com/node9-ai/node9-python)** — SDK Python
- **[node9-pr-agent](https://github.com/node9-ai/node9-pr-agent)** — GitHub Action che esamina le PR tramite Node9
## Enterprise
**Node9 Pro** aggiunge blocco della governance, SAML/SSO, export centralizzato degli audit e distribuzione VPC. Vedi [node9.ai](https://node9.ai).
## Licenza
Apache-2.0
<p align="center">
<sub>Costruito con ☕ e sana paranoia.</sub>
</p>