
La couche de sécurité d'exécution pour l'ère agentique. Fournissant une gouvernance « Sudo » déterministe et des journaux d'audit pour les agents IA autonomes.
Qu'est-ce que votre agent IA a vraiment fait ? Découvrez-le.
Node9 se place entre votre agent IA et les outils qu'il peut utiliser — découvrez ce qu'il a déjà fait, protégez contre les actions risquées en temps réel, et revoyez ce qui s'est passé sur n'importe quelle période.
Fonctionne avec Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · tout serveur MCP.
rm -rf, git push --force, DROP TABLE, lectures d'identifiants, curl | bash, fuites de clés AWS/GitHub/StripeC'est ma propre machine — 90 jours pendant le développement de Node9. Score 25/100, 5 fichiers d'identifiants qu'un agent IA pourrait atteindre maintenant.
npx node9-ai scan # before installation, runs in ~10s, nothing uploads
node9 scan # after installation, same output
Node9 scan scorecard
node9 posture évalue à quel point cette machine est exposée à un agent compromis — isolation, sortie (egress), secrets sur le disque, chaîne d'approvisionnement, privilèges — et vous donne la commande exacte pour corriger chaque constat.
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)
Les constats sont regroupés par qui peut les corriger : 🔒 ceux que node9 réduit (exécutez simplement la commande) et 🧱 ceux que vous seul pouvez. Chacun comporte un quoi/pourquoi/qui en langage clair et une correction réelle — par exemple, le constat « l'agent s'exécute sans sandbox sur l'hôte » pointe directement vers node9 sandbox run (ci-dessous).
🛡️ 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
node9 scan-repo vérifie tout dépôt (ou dossier local) pour détecter comment un agent IA intégré dans GitHub Actions pourrait être détourné par un tiers — workflows injectables, secrets accessibles à l'agent, serveurs MCP non épinglés, configuration d'agent trop large, et fichiers d'instructions empoisonnés. Statique et analyse uniquement : il ne lit que la configuration validée, n'exécute jamais le code du dépôt. Aucune installation ou jeton requis pour les dépôts publics.
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
Ce qu'il vérifie :
Bloquez chaque PR — le même moteur qu'une GitHub Action, afin qu'une configuration détournable ne puisse pas être fusionnée :
# .github/workflows/agent-security.yml
- uses: node9-ai/agent-security-action@v1
with:
fail-on: high # or 'never' to just comment
Marketplace : node9 Agent Security Check
Node9 monitor dashboard
node9 monitor ouvre un tableau de bord interactif en terminal avec deux vues :
[1] Temps réel — activité en direct, approbations, alertes de sécurité, score de risque actuel[2] Rapport — résumé par période : coût, outils principaux, boucliers déclenchés, rayon d'impactAppuyez sur [2] dans le moniteur pour un résumé par période. Basculez la fenêtre avec [T]oday · [W]eek · [M]onth · [N]inety — mêmes panneaux que l'analyse ci-dessus, alimentés par votre journal d'audit post-installation.
Node9 monitor [2] Report
node9 monitor # press [2] for Report view
node9 report --period 7d # CLI form, no TUI
# 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
Nécessite Node.js 18+.
Chaque bouclier est un ensemble de règles organisé pour un service ou un domaine. N'activez que ce dont vous avez besoin.
node9 shield list # show all shields + status
git push --force, git reset --hard, git clean -fdDELETE / UPDATE sans WHERE, DROP TABLE, TRUNCATEcurl | bash, sudo non autorisé~/.zshrc, ~/.bashrc)Lorsque node9 signale une action pour révision (par ex. git push --force, un DROP TABLE), l'invite d'approbation/refus s'affiche en ligne dans la conversation de l'agent — pas de session figée, pas de terminal séparé, pas de course au timeout de hook. node9 exécute toujours l'évaluateur complet et prend la décision ; seule la surface de l'invite est déplacée vers l'agent.
ask natif. Tous les autres agents (Codex, Gemini, Antigravity, Hermes, Cursor, OpenCode, Pi) utilisent le propre approbateur de node9.reviewChannel dans ~/.node9/config.json (ou --no-ask sur le hook) :{
"settings": {
"reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
},
}
approvers.cloud: true), les révisions sont dirigées vers cet approbateur — node9 ne permettra pas à une auto-approbation en ligne de contourner l'approbation routée/de seconde partie.Quand surveiller ne suffit pas, node9 sandbox exécute l'agent dans un conteneur jetable avec une liste blanche de sortie appliquée par le noyau et des montages limités — tandis que les hooks de node9 régissent et audite chaque appel d'outil à l'intérieur de la boîte. La version dure de la protection : l'agent ne peut toucher que le dossier que vous montez et atteindre les hôtes que vous autorisez ; tout le reste est bloqué au niveau du noyau.
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
Périmètre honnête (Phase 1) : conteneur unique, Claude d'abord (Codex ensuite) ; l'agent conserve ses propres identifiants dans la boîte (le mur de sortie les confine aux hôtes autorisés) — "l'agent ne détient jamais de secret" est la phase de courtier d'identifiants sur la feuille de route. Nécessite Docker.
Enveloppez tout serveur MCP de manière transparente. L'agent voit le même serveur — Node9 intercepte chaque appel d'outil.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Ou exécutez simplement node9 init — il enveloppe automatiquement vos serveurs MCP existants.
Les serveurs MCP peuvent modifier leurs définitions d'outils entre les sessions. Un serveur compromis ou malveillant pourrait silencieusement ajouter, supprimer ou modifier des outils après que vous lui ayez fait confiance — une attaque de retrait de tapis.
Node9 épingle les définitions d'outils lors de la première utilisation :
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
Au-delà des trois commandes de flux ci-dessus (scan / monitor / report) :
Plus un HUD en direct dans votre barre d'état 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 met en évidence le signal. Voici les schémas à connaître :
Les signaux ponctuels sont normaux ; ce sont les schémas persistants sur lesquels vous agissez.
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
SDK Python → · Exemple d'agent de révision de code CI →
~/.claude/projects/, ~/.gemini/tmp/, ~/.gemini/antigravity-*/brain/, ~/.copilot/session-state/, ~/.codex/sessions/ — aucun appel API, entièrement hors ligne~/.node9/audit.log.tools/list + tools/call JSON-RPC, transmet le reste~/.node9/snapshots/<hash16>/ — ne touche jamais votre .gitRéférence de configuration, règles intelligentes, règles avec état, hôtes de confiance, modes d'approbation, référence CLI — sur node9.ai/docs.
Node9 Pro ajoute le verrouillage de gouvernance, SAML/SSO, l'export d'audit central, et le déploiement VPC. Voir node9.ai.
Apache-2.0
Construit avec ☕ et une paranoïa saine.
| Check | Flags |
|---|
| CI-1 | configuration d'agent validée qui pré-autorise des outils larges ou exécute des hooks distants |
| CI-2 | workflows d'agent injectables — un tiers peut déclencher l'agent et le détourner |
| CI-3 | serveurs MCP non épinglés / @latest ou identifiants en ligne (chaîne d'approvisionnement) |
| CI-4 | secrets qu'un agent injecté pourrait exfiltrer |
| CI-6 | instructions empoisonnées ou dangereuses dans CLAUDE.md / AGENTS.md / skills |
| Bouclier | Ce qu'il intercepte | Activer |
|---|
project-jail | Bloque les lectures de ~/.ssh, ~/.aws, .env, les identifiants via les outils Bash et Read | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, écrasement de disque, eval de contenu distant | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE sans WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), suppression d'index | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET sur un serveur actif | node9 shield enable redis |
aws | Suppression S3, terminaison EC2, modifications IAM, destruction RDS | node9 shield enable aws |
k8s | Suppression de namespace, helm uninstall, effacement de rôles de cluster | node9 shield enable k8s |
docker | system prune, volume prune, rm -f de conteneurs | node9 shield enable docker |
github | gh repo delete, suppression de branche distante, modifications de paramètres | node9 shield enable github |
filesystem | chmod 777, écritures dans /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | outils MCP non approuvés activant silencieusement de nouvelles capacités | node9 shield enable mcp-tool-gating |
node9 undo| Commande | Ce qu'elle affiche | Quand l'utiliser |
|---|
node9 blast | Ce qu'un agent IA peut atteindre maintenant — fichiers, identifiants, env | Première chose à exécuter sur toute machine |
node9 tail | Flux en direct de chaque appel d'outil (texte seulement, pas d'interface) | Pour le pipe vers d'autres outils, CI, logs |
node9 sessions | Historique des sessions avec invite, trace d'outils, coût, instantané | Pour réviser un transfert ou un travail passé |
node9 dlp | Constats de fuite d'identifiants dans le texte de réponse de Claude | À chaque fois qu'une alerte DLP de bureau se déclenche |
node9 mask | Masquer les secrets en texte clair des fichiers d'historique de session locaux | Après un constat DLP — nettoie le disque local |
| Signal | Signification probable |
|---|
Would have blocked ≥ 5 en une semaine | L'agent tente des opérations à fort impact ; les boucliers méritent d'être révisés |
Règle review-git-push unique >50% des constats | Votre propre règle se déclenche comme prévu — pas un risque, juste une supervision |
Constat DLP dans l'outil user-prompt | Vous avez collé un secret dans votre propre invite — faites tourner la clé |
| Boucle d'agent ×50+ sur le même fichier | L'agent est coincé dans un cycle d'édition/test/correction — vérifiez le contexte ou ralentissez |
| Non-concordance d'épingle d'outil MCP | Le serveur a modifié ses outils — examinez avant de refaire confiance |
| Avertissement de réponse MCP volumineuse | Ce serveur gonfle votre fenêtre de contexte à chaque tour suivant |
| Alerte DLP de réponse | Claude a écrit un secret dans son texte de réponse — non bloqué, faites tourner immédiatement |
Constat DLP dans tool-result | Claude a lu un fichier contenant un secret (.env, identifiants) — faites tourner la clé et exécutez node9 mask |
Constat DLP dans [Shell] | Secret en texte clair dans ~/.zshrc ou ~/.bashrc — chaque session IA peut le voir |
ipset/iptables par défaut refusé, puis passe à un agent non root avec le démon de node9 + hooks s'exécutant à l'intérieur ; seul le fichier d'identifiants de l'agent est monté, jamais tout votre ~/.claude