
node9-proxy v1.65.0
エージェンティック時代の実行セキュリティ層。自律型AIエージェントに対して、決定論的な "Sudo" ガバナンスと監査ログを提供します。
🛡️ Node9
あなたのAIエージェントは実際に何をしたのか?それを知ることができます。
Node9は、AIエージェントとそれが使用できるツールの間に位置します — エージェントがこれまでに行ってきたことを発見し、危険なアクションをリアルタイムで保護し、任意の期間にわたって何が起こったかをレビューします。
Claude Code · Codex CLI · Antigravity (agy) · GitHub Copilot CLI · Gemini CLI · Cursor · Windsurf · VSCode · Claude Desktop · Opencode · Pi · Hermes Agent · あらゆるMCPサーバーに対応しています。
Node9の機能
- 🔍 発見 — 過去のすべてのAIセッションをスキャンして、認証情報の漏洩、エージェントのループ、ブロックされた操作、そしてエージェントが今すぐ到達できるディスク上のすべてのシークレットを検出します
- 🛡 保護 — 実行前に危険なコマンドをレビューまたはブロックします —
rm -rf、git push --force、DROP TABLE、認証情報の読み取り、curl | bash、AWS/GitHub/Stripeキーの漏洩など - 📊 レビュー — 期間指定レポート(今日 / 週 / 月 / 90日)— エージェントごとのコスト、上位ツール、発動されたシールド、爆発半径
遡及スキャン
これは私自身のマシンです — Node9を開発中の90日間。スコア25/100、AIエージェントが今すぐ到達できる認証情報ファイルが5件あります。```bash npx node9-ai scan # before installation, runs in ~10s, nothing uploads node9 scan # after installation, same output
<p align="center">
Node9 scan scorecard
</p>
## セキュリティ態勢スコアカード
`node9 posture` は、このマシンが侵害されたエージェントに対してどの程度露出しているか(分離、外部通信、ディスク上のシークレット、サプライチェーン、特権)を評価し、各検出結果を修正するための正確なコマンドを提示します。```bash
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)
Findings are grouped by who can fix them: 🔒 the ones node9 reduces (just run the command) and 🧱 the ones only you can. Each carries a plain-language what / why / who and a real remediation — e.g. the "agent runs unsandboxed on the host" finding points straight at node9 sandbox run (below).```text
🛡️ 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 — 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
## リポジトリのスキャン — agent-CI セキュリティ
`node9 scan-repo` は、任意のリポジトリ(またはローカルフォルダ)をチェックし、GitHub Actions に組み込まれた AI エージェントが**外部者に乗っ取られる**可能性のある経路を検出します — インジェクション可能なワークフロー、エージェントが到達可能なシークレット、ピン留めされていない MCP サーバー、過度に広範なエージェント設定、および改ざんされた指示ファイルなど。静的解析・パースのみで、コミットされた設定のみを読み取り、リポジトリのコードを実行することはありません。公開リポジトリの場合、インストールやトークンは不要です。```bash
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
I need the actual content of chunk 9 to translate it. Please provide the Markdown text you want translated.```text 🛡️ 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
| チェック | フラグ対象 |
| -------- | ---------------------------------------------------------------------------- |
| **CI-1** | 広範なツールを事前承認する、またはリモートフックを実行するコミット済みエージェント設定 |
| **CI-2** | 注入可能なエージェントワークフロー — 外部者がエージェントを起動して乗っ取れる |
| **CI-3** | ピン留めされていない / `@latest` の MCP サーバー、またはインライン資格情報(サプライチェーン) |
| **CI-4** | 注入されたエージェントが外部に持ち出せるシークレット |
| **CI-6** | `CLAUDE.md` / `AGENTS.md` / スキル内の悪意ある、または危険な指示 |
**すべての PR をゲート** — GitHub Action と同じエンジンを使用するため、乗っ取り可能な設定がマージされるのを防ぎます。```yaml
# .github/workflows/agent-security.yml
- uses: node9-ai/node9-proxy@v2
with:
fail-on: high # or 'never' to just comment
Marketplace: node9 Agent Security
実行していますか?READMEに scanned by node9 バッジ を追加してください。
ライブモニタリング
Node9 monitor dashboard
node9 monitor は、2つのビューを持つ対話型ターミナルダッシュボードを開きます:
[1]リアルタイム — ライブアクティビティ、承認、セキュリティアラート、現在のリスクスコア[2]レポート — 期間ウィンドウ集計:コスト、上位ツール、発動したシールド、ブラスト半径
レポート
モニターで [2] を押すと、期間ウィンドウの集計が表示されます。ウィンドウは [T]oday ・ [W]eek ・ [M]onth ・ [N]inety で切り替えられます — 上記のスキャンと同じパネルで、インストール後の監査ログに基づいて表示されます。
Node9 monitor [2] Report
```bash node9 monitor # press [2] for Report view node9 report --period 7d # CLI form, no TUI ``` ## インストール```bash # macOS / Linux brew tap node9-ai/node9 && brew install node9or via npm (any platform)
npm install -g node9-ai
翻訳対象のMarkdownコンテンツが提供されていません。内容を貼り付けてください。```bash
node9 init # auto-wires all detected agents + MCP servers
node9 login # connect this machine to your workspace (approve it in the browser)
node9 doctor # verify everything is wired and reporting
Node.js 18+ が必要です。
init 単体で、完全なローカル強制が有効になります。ルール、シールド、DLP、承認はすべてこのマシン上でオフラインで動作します。
login は、マシンをダッシュボードに登録するものです。コードを表示し、ブラウザを開き、そこでマシンを承認します。アカウントをまだ持っていない場合、フロー途中でのサインアップ後も、コードが保持されたまま同じ承認画面に戻ります。これを実行するまでは、すべてがローカルで強制されますが、Mission Control には何も届かないため、ダッシュボードは空のままです。
node9 logout はマシンの接続を再度解除します。そのマシンのキーを失効させます。ローカル強制は引き続き実行されます。
シールド — キュレーションされたルールパック
各シールドは、サービスまたはドメイン向けにキュレーションされたルールセットです。必要なものだけを有効にしてください。
| シールド | 検出内容 | 有効化コマンド |
|---|---|---|
project-jail | Bash および Read ツールによる ~/.ssh、~/.aws、.env、認証情報の読み取りをブロック | node9 shield enable project-jail |
bash-safe | curl | bash、rm -rf /、ディスク上書き、リモートの eval | node9 shield enable bash-safe |
postgres | DROP TABLE、TRUNCATE、DROP COLUMN、WHERE なしの DELETE | node9 shield enable postgres |
mongodb | dropDatabase、drop()、deleteMany({})、インデックス削除 | node9 shield enable mongodb |
redis | 稼働中サーバーでの FLUSHALL、FLUSHDB、CONFIG SET | node9 shield enable redis |
aws | S3 削除、EC2 終了、IAM 変更、RDS 破棄 | node9 shield enable aws |
k8s | 名前空間削除、helm uninstall、クラスターロールの全削除 | node9 shield enable k8s |
docker | system prune、volume prune、rm -f コンテナ | node9 shield enable docker |
github | gh repo delete、リモートブランチ削除、設定変更 | node9 shield enable github |
filesystem | chmod 777、/etc/、/boot/、/usr/ 配下への書き込み | node9 shield enable filesystem |
mcp-tool-gating | 未承認の MCP ツールが新しい機能を静かに有効化すること | node9 shield enable mcp-tool-gating |
| node9 shield list # show all shields + status |
## 常時有効 — 設定不要
- **Git** — `git push --force`、`git reset --hard`、`git clean -fd` を検出
- **SQL** — `WHERE` 句のない `DELETE` / `UPDATE`、`DROP TABLE`、`TRUNCATE` を検出
- **Shell** — `curl | bash`、不正な `sudo` を検出
- **DLP** — あらゆるツール引数、ファイル内容、シェル設定(`~/.zshrc`、`~/.bashrc`)内の AWS キー、GitHub トークン、Stripe キー、PEM 秘密鍵をフラグ付け
- **Response DLP** — バックグラウンドスキャナーが Claude の会話履歴を読み取り、Claude が応答テキスト内に秘密情報を_書き込んだ_場合に警告
- **Skills pinning** — セッション間でのインストール済み Claude skills / プラグインの SHA-256 検証
## レビュープロンプト — エージェント内でインライン承認
node9 がアクションを**レビュー**用にフラグ付けした場合(例:`git push --force`、`DROP TABLE`)、承認/拒否プロンプトは**エージェントの会話内にインラインで**表示されます — セッションの凍結なし、別ターミナルなし、フックタイムアウトの競合なし。node9 は引き続き完全な評価器を実行して判断を下します。プロンプトの_表示面_だけがエージェントに移動するのです。
- **Claude Code** と **GitHub Copilot CLI** では**デフォルトで有効** — フック契約がネイティブな `ask` をサポートするエージェントです。他のすべてのエージェント(Codex、Gemini、Antigravity、Hermes、Cursor、OpenCode、Pi)は node9 独自の承認者を使用します。
- **制御方法** — `~/.node9/config.json` の `reviewChannel`(またはフック上の `--no-ask`)で設定:```jsonc
{
"settings": {
"reviewChannel": "ask", // "ask" = inline agent prompt (default) | "approver" = node9's own approver
},
}
- チーム設定: クラウド/チーム承認者が設定されている場合(
approvers.cloud: true)、レビューはその承認者にルーティングされます — node9はインラインの自己承認がルーティング/セカンドパーティ承認をバイパスすることを許可しません。
サンドボックス — エージェントを隔離環境で実行
監視だけでは不十分な場合、node9 sandbox はエージェントを使い捨てコンテナ内で実行し、カーネル強制のエグレス許可リスト と スコープ付きマウント を適用します — その間、node9のフックがボックス内のすべてのツール呼び出しを統制し監査します。保護のハードバージョン: エージェントはマウントしたフォルダにのみ触れ、許可したホストにのみ到達できます。それ以外はすべてカーネルレベルで遮断されます。```bash
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
- **使い捨て** — コンテナは終了時に破棄されます。プロジェクトの編集内容は実際のディスクに保存され、それ以外は何も残りません。
- **同じポリシー** — 既存のシールド / イグレスルール / 承認がボックス内でも適用され、同じ監査ログとダッシュボードにストリーミングされます。
- **ポスチャのループを閉じる** — 実行すると、Isolation / Egress の検出結果がグリーンに変わります。
正直なスコープ(フェーズ 1):単一コンテナ、**Claude が優先**(次に Codex)。エージェントはボックス内で _独自の_ 認証情報を保持したままです(イグレスウォールが許可ホストに制限します)— _"エージェントが秘密を保持しない"_ はロードマップ上の認証情報ブローカーフェーズです。Docker が必要です。
## MCP ゲートウェイ
任意の MCP サーバーを透過的にラップします。エージェントは同じサーバーを認識します — Node9 がすべてのツール呼び出しをインターセプトします。```json
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
または、node9 init を実行するだけです — 既存のMCPサーバーを自動的にラップします。
🔐 MCPツールのピン留め — ラグプル対策
MCPサーバーはセッション間でツール定義を変更できます。侵害された、または悪意のあるサーバーは、最初に信頼した後にツールを静かに追加、削除、または変更する可能性があります — これがラグプル攻撃です。
Node9は初回使用時にツール定義をピン留めします:
- 最初の接続 — ゲートウェイが各ツールの名前、説明、スキーマのSHA-256ハッシュを記録します
- 以降の接続 — ハッシュが比較され、ツールが変更されていた場合、セッションは隔離され、人間が変更を確認して承認するまで、すべてのツール呼び出しがブロックされます
- ピン状態の破損 — フェイルクローズ(ブロック)し、静かに再信頼することはありません```bash node9 mcp pin list # show all pinned servers and hashes node9 mcp pin update # remove pin, re-pin on next connection node9 mcp pin reset # clear all pins
</details>
## その他のコマンド
上記の3つのフローコマンド(`scan` / `monitor` / `report`)に加えて:
| コマンド | 表示内容 | 使用タイミング |
| ---------------- | --------------------------------------------------------- | --------------------------------------- |
| `node9 blast` | AIエージェントが今すぐ到達できるもの — ファイル、認証情報、環境変数 | どのマシンでも最初に実行するもの |
| `node9 tail` | すべてのツール呼び出しのライブストリーム(テキストのみ、TUIなし) | 他のツールへのパイプ、CI、ログ |
| `node9 sessions` | プロンプト、ツールトレース、コストを含むセッション履歴 | 引き継ぎや過去の作業の確認 |
| `node9 dlp` | Claudeの応答テキスト内の認証情報漏洩の検出結果 | DLPデスクトップアラートが発火したとき |
| `node9 mask` | ローカルのセッション履歴ファイルから平文のシークレットを編集 | DLP検出後 — ローカルディスクをクリーンアップ |
さらに、Claude Codeのステータスラインに**ライブHUD**があります:```
🛡 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はシグナルを浮き彫りにします。知っておく価値のあるパターンは以下のとおりです:
| シグナル | 考えられる意味 |
|---|---|
1週間でWould have blockedが5件以上 | エージェントが高影響度の操作を試みています。シールドの見直しを検討すべきです |
単一のreview-git-pushルールが検出結果の50%超 | 自身のルールが意図どおりに発動しています。リスクではなく、単なる監視です |
user-promptツールでのDLP検出 | 自身のプロンプトにシークレットを貼り付けてしまいました。キーをローテーションしてください |
| 同じファイルでAgent Loopが50回以上 | エージェントが編集/テスト/修正サイクルで行き詰まっています。コンテキストを確認するか、速度を落としてください |
| MCPツールのピン不一致 | サーバーがツールを変更しました。再信頼する前に確認してください |
| 大規模なMCPレスポンス警告 | そのサーバーが以降のすべてのターンでコンテキストウィンドウを膨張させています |
Response DLPアラート | Claudeがレスポンステキストにシークレットを書き込みました。ブロックされていません。直ちにローテーションしてください |
tool-resultでのDLP検出 | Claudeがシークレットを含むファイル(.env、認証情報)を読み取りました。キーをローテーションし、node9 maskを実行してください |
[Shell]でのDLP検出 | ~/.zshrcまたは~/.bashrcに平文のシークレットがあります。すべてのAIセッションがそれを閲覧できます |
一度きりのシグナルは正常です。持続的なパターンこそが対処すべき対象です。
Python SDK — あらゆるPythonエージェントを統制する```python
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash") def run_command(cmd: str) -> str: ...
**[Python SDK →](https://github.com/node9-ai/node9-python)** · **[CIコードレビューエージェントの例 →](https://github.com/node9-ai/node9-pr-agent)**
## 内部構造
- **Scan** は `~/.claude/projects/`、`~/.gemini/tmp/`、`~/.gemini/antigravity-*/brain/`、`~/.copilot/session-state/`、`~/.codex/sessions/` から生のエージェント履歴を読み取ります — API呼び出しなし、完全オフライン
- **Runtime** は実行前フック(Claude Code、Codex、Antigravity、GitHub Copilot CLI、Gemini CLI、Opencode、Pi)またはMCPゲートウェイ(Cursor、Windsurf、VSCode、Claude Desktop)を介してツール呼び出しをインターセプトします。すべての決定は `~/.node9/audit.log` にアトミックに記録されます。
- **MCPゲートウェイ** はstdioプロキシです。`tools/list` と `tools/call` のJSON-RPCをインターセプトし、残りは転送します
- **ポリシーエンジン** はbash AST解析に [mvdan-sh](https://github.com/mvdan/sh) を使用します — バックスラッシュエスケープ、変数置換、リモートダウンロードのevalによる難読化を無効化します
- **サンドボックス** は、デフォルト拒否の `ipset`/`iptables` イグレス壁を封じるDockerfileとエントリポイントを生成し、その後node9のデーモンとフックを内部で実行する非rootエージェントに降格します。マウントされるのはエージェントの認証情報ファイルのみで、`~/.claude` 全体がマウントされることはありません
## 完全なドキュメント
設定リファレンス、スマートルール、ステートフルルール、信頼済みホスト、承認モード、CLIリファレンス — **[node9.ai/docs](https://node9.ai/docs)** にあります。
## 関連プロジェクト
- **[node9-python](https://github.com/node9-ai/node9-python)** — Python SDK
- **[node9-pr-agent](https://github.com/node9-ai/node9-pr-agent)** — Node9を通じてPRをレビューするGitHub Action
## エンタープライズ
**Node9 Pro** は、ガバナンスロック、SAML/SSO、中央監査エクスポート、VPCデプロイを追加します。[node9.ai](https://node9.ai) を参照してください。
## ライセンス
Apache-2.0
<p align="center">
<sub>☕ と健全なパラノイアで作られています。</sub>
</p>