🛡️ Node9 Proxy
The "Sudo" Command for AI Agents.

Node9 sits between your AI agent and your system. Every shell command, file write, and tool call passes through Node9 first — blocked, approved, or logged based on your policy. Works with Claude Code, Gemini CLI, Cursor, Codex, and any MCP server.
📖 Full Documentation →
The "Aha!" Moment
AIs are literal. Ask an agent to "fix disk space" and it might run docker system prune -af --volumes.
With Node9:
- AI attempts:
Bash("docker system prune -af --volumes")
- Node9 intercepts: OS-native popup appears instantly
- You block it — one click
- AI pivots: "I'll remove large log files instead"
Install
brew tap node9-ai/node9 && brew install node9
npm install -g @node9/proxy
node9 setup
node9 doctor
Shields — one command per service
Enable expert-crafted protection for the infrastructure your agent touches:
node9 shield enable postgres
node9 shield enable mongodb
node9 shield enable redis
node9 shield enable aws
node9 shield enable k8s
node9 shield enable docker
node9 shield enable github
node9 shield enable bash-safe
node9 shield enable filesystem
node9 shield list
MCP Gateway — protect any MCP server
Wrap any MCP server transparently. The AI sees the same server — Node9 intercepts every tool call:
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Or use node9 setup — it wraps existing MCP servers automatically.
MCP Tool Pinning — rug pull defense
MCP servers can change their tool definitions between sessions. A compromised or malicious server could silently add, remove, or modify tools after initial trust — a rug pull attack.
Node9 defends against this by pinning tool definitions on first use:
- First connection — the gateway records a SHA-256 hash of all tool definitions
- Subsequent connections — the hash is compared; if tools changed, the session is quarantined and all tool calls are blocked until a human reviews and approves the change
- Corrupt pin state — fails closed (blocks), never silently re-trusts
node9 mcp pin list
node9 mcp pin update <serverKey>
node9 mcp pin reset
This is automatic — no configuration needed. The gateway pins on first tools/list and enforces on every subsequent session.
Python SDK — govern any Python agent
from node9 import configure
configure(agent_name="my-agent", policy="require_approval")
Python SDK → · Governed Agent examples →
What's always on (no config needed)
- Git: blocks
git push --force, git reset --hard, git clean -fd
- SQL: blocks
DELETE/UPDATE without WHERE, DROP TABLE, TRUNCATE
- Shell: blocks
curl | bash, sudo commands
- DLP: blocks AWS keys, GitHub tokens, Stripe keys, PEM private keys in any tool call argument
- Auto-undo: git snapshot before every AI file edit →
node9 undo to revert
📖 Full docs
Everything else — config reference, smart rules, stateful rules, trusted hosts, approval modes, CLI reference — is at node9.ai/docs.
Related
Enterprise
Node9 Pro provides governance locking, SAML/SSO, and VPC deployment. Visit node9.ai.