
Security News
PHP Foundation Says Chainguard Broke Security Embargo Ahead of Emergency Patches
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.
@node9/proxy
Advanced tools
What did your AI agent actually do? Find out, and stop the dangerous stuff.
Node9 sits between your AI agent and the tools it can use โ recording every action, blocking the dangerous ones, and showing you what happened both live and in retrospect.
Works with Claude Code ยท Codex CLI ยท Gemini CLI ยท Cursor ยท Windsurf ยท any MCP server.
rm -rf, git push --force, DROP TABLE, credential reads, curl | bash.env file an AI agent on this machine could reach right now
node9 monitor opens an interactive terminal dashboard with two views:
[1] Realtime โ live activity, approvals, security alerts, current risk score[2] Report โ period-windowed summary: cost, top tools, shields fired, blast radiusThis is my own machine โ 30 days while building Node9. Score 25/100, 5 credential files an AI agent could reach right now.
๐ก Node9 Scan ยท 21 sessions ยท 8,114 tool calls ยท Apr 6 โ May 1, 2026
Security Score: 25/100 ยท Critical
$3,789 AI spend ยท 62 risky operations
๐ 14 credential leak (Bearer Token ร4, GCP API Key ร4, JWT ร2)
๐ 15 would have blocked (force-push ร5, read-ssh ร4, read-aws ร4)
๐ 193 agent loops (18% wasted ยท ~$6.51)
๐ 33 flagged for review (git-destructive ร19, rm ร9, sudo ร2)
๐ญ Blast radius ssh ร gcp ร npm ร other (5 exposures)
โ npx node9-ai scan run this on your machine
Run it on yours โ npx node9-ai scan finishes in ~10 seconds and runs entirely local. Nothing uploads.
# macOS / Linux
brew tap node9-ai/node9 && brew install node9
# or via npm (any platform)
npm install -g node9-ai
node9 init # auto-wires Claude Code, Gemini CLI, Cursor, Codex, MCP servers
node9 doctor # verify everything is wired correctly
Requires Node.js 18+.
Each shield is a curated rule set for a service or domain. Enable only what you need.
| Shield | What it catches | Enable |
|---|---|---|
project-jail | Blocks reads of ~/.ssh, ~/.aws, .env, credentials via Bash and Read tool | node9 shield enable project-jail |
bash-safe | curl | bash, rm -rf /, disk overwrite, eval of remote | node9 shield enable bash-safe |
postgres | DROP TABLE, TRUNCATE, DROP COLUMN, DELETE without WHERE | node9 shield enable postgres |
mongodb | dropDatabase, drop(), deleteMany({}), index drops | node9 shield enable mongodb |
redis | FLUSHALL, FLUSHDB, CONFIG SET on a live server | node9 shield enable redis |
aws | S3 delete, EC2 terminate, IAM changes, RDS destroy | node9 shield enable aws |
k8s | namespace delete, helm uninstall, cluster role wipes | node9 shield enable k8s |
docker | system prune, volume prune, rm -f containers | node9 shield enable docker |
github | gh repo delete, remote branch deletion, settings changes | node9 shield enable github |
filesystem | chmod 777, writes under /etc/, /boot/, /usr/ | node9 shield enable filesystem |
mcp-tool-gating | unapproved MCP tools silently activating new capabilities | node9 shield enable mcp-tool-gating |
node9 shield list # show all shields + status
git push --force, git reset --hard, git clean -fdDELETE / UPDATE without WHERE, DROP TABLE, TRUNCATEcurl | bash, unauthorized sudo~/.zshrc, ~/.bashrc)node9 undo to revertWrap any MCP server transparently. The agent sees the same server โ Node9 intercepts every tool call.
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
Or just run node9 init โ it wraps your existing MCP servers automatically.
MCP servers can change their tool definitions between sessions. A compromised or malicious server could silently add, remove, or modify tools after you first trusted it โ a rug pull attack.
Node9 pins tool definitions on first use:
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
| Command | What it shows | When to use |
|---|---|---|
node9 blast | What an AI agent can reach right now โ files, creds, env | First thing to run on any machine |
node9 scan | Retrospective audit of existing agent history | Before installing, or to review past risk |
node9 tail | Live stream of every tool call | Watching an agent work in real time |
node9 report | Per-period summary: allowed/blocked/DLP/cost + top tools | Reviewing what happened after a session |
node9 sessions | Session history with prompt, tool trace, cost, snapshot | Reviewing a handoff or past work |
node9 dlp | Credential-leak findings in Claude response text | Any time a DLP desktop alert fires |
node9 mask | Redact plaintext secrets from local session history files | After a DLP finding โ cleans local disk |
Plus a live HUD in your Claude Code statusline:
๐ก 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 surfaces the signal. Here are the patterns worth knowing:
| Signal | Likely meaning |
|---|---|
Would have blocked โฅ 5 in a week | Agent is attempting destructive ops; shields need review |
Single review-git-push rule >50% of findings | Your own rule is firing as intended โ not a risk, just supervision |
DLP finding in user-prompt tool | You pasted a secret into your own prompt โ rotate the key |
| Agent Loop ร50+ on same file | Agent stuck in edit/test/fix cycle โ check context or slow down |
| MCP tool pin mismatch | Server changed its tools โ review before re-trusting |
| Large MCP response warning | That server is inflating your context window for every subsequent turn |
Response DLP alert | Claude wrote a secret in its response text โ not blocked, rotate immediately |
DLP finding in tool-result | Claude read a file containing a secret (.env, credentials) โ rotate the key and run node9 mask |
DLP finding in [Shell] | Plaintext secret in ~/.zshrc or ~/.bashrc โ every AI session can see it |
One-off signals are normal; persistent patterns are what you act on.
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
Python SDK โ ยท CI code review agent example โ
~/.claude/projects/, ~/.gemini/tmp/, ~/.codex/sessions/ โ no API calls, fully offline~/.node9/audit.log atomicallytools/list + tools/call JSON-RPC, forwards the rest~/.node9/snapshots/<hash16>/ โ never touches your .gitConfig reference, smart rules, stateful rules, trusted hosts, approval modes, CLI reference โ at node9.ai/docs.
Node9 Pro adds governance locking, SAML/SSO, central audit export, and VPC deployment. See node9.ai.
Apache-2.0
Built with โ and healthy paranoia.
FAQs
Access control for AI agents. Set what Claude Code, Codex, Gemini, Cursor and any MCP server are allowed to do, review risky actions before they run, and keep every action on the record.
The npm package @node9/proxy receives a total of 1,475 weekly downloads. As such, @node9/proxy popularity was classified as popular.
We found that @node9/proxy demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.ย It has 1 open source maintainer collaborating on the project.

Security News
The PHP Foundation says Chainguard broke a security embargo ahead of critical RCE patches, as leaks disrupted the coordinated release.

Security News
PHP releases emergency patches for two critical RCE vulnerabilities as agencies urge organizations to take unpatched sites offline.

Threat Research
/Security News
A supply chain attack compromised LiteLLM 1.107.0 on PyPI and Docker, spreading malware that steals cloud credentials, developer secrets, and AI provider keys.