Il livello di sicurezza dell'esecuzione per l'era degli agenti. Fornisce una governance deterministica "Sudo" e registri di audit per agenti AI autonomi.
Cosa ha fatto davvero il tuo agente AI? Scoprilo.
Node9 si posiziona tra il tuo agente AI e gli strumenti che può utilizzare — cosa ha già fatto, dalle azioni rischiose in tempo reale e cosa è successo in qualsiasi intervallo di tempo.
```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 node9Funziona con Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · qualsiasi server MCP.
rm -rf, git push --force, DROP TABLE, letture di credenziali, curl | bash, fughe di chiavi AWS/GitHub/StripeQuesta è 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.
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'esplosionePremi [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
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.
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/, , |
## 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
},
}
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.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.
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:
</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
Node9 fa emergere il segnale. Ecco i pattern che vale la pena conoscere:
I segnali isolati sono normali; sono i pattern persistenti quelli su cui agire.
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>
/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 |
| 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 |