
node9-proxy v1.64.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つありました。
npx node9-ai scan # インストール前、約10秒で完了、何もアップロードしません
node9 scan # インストール後、同じ出力
Node9 scan scorecard
セキュリティ態勢スコアカード
node9 posture は、このマシンが侵害されたエージェントに対してどの程度露出しているかを評価します — 隔離、Egress、ディスク上のシークレット、サプライチェーン、権限 — そして各発見事項に対する修正コマンドを提示します。
node9 posture # 各発見事項に対する最も重要なリスクと修正を含むスコアカード
node9 posture --ship # 匿名化スナップショットをNode9ダッシュボード(フリートビュー)に送信
発見事項は 誰が修正できるか でグループ化されています:🔒 Node9が低減するもの(コマンドを実行するだけ)と 🧱 あなただけが修正できるもの。各項目には平易な言語で「何が」「なぜ」「誰が」と実際の修復手順が含まれています。例えば、「エージェントがホスト上でサンドボックス化されずに実行されている」という発見事項は、すぐに node9 sandbox run(下記)を指し示します。
🛡️ 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 <agent> — 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
リポジトリのスキャン — エージェントCIセキュリティ
node9 scan-repo は、任意のリポジトリ(またはローカルフォルダ)をチェックし、GitHub Actionsに組み込まれたAIエージェントが 外部の攻撃者に乗っ取られる 可能性がある方法を検出します — インジェクション可能なワークフロー、エージェントがアクセス可能なシークレット、ピン留めされていないMCPサーバー、過度に広範なエージェント設定、悪意のある指示ファイルなど。静的かつパースのみ:コミットされた設定のみを読み取り、リポジトリのコードを実行することはありません。公開リポジトリではインストールやトークンは不要です。
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
🛡️ 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として動作するため、乗っ取られやすい設定がマージされるのを防ぎます:
# .github/workflows/agent-security.yml
- uses: node9-ai/agent-security-action@v1
with:
fail-on: high # or 'never' to just comment
マーケットプレイス: node9 Agent Security Check
ライブモニタリング
Node9 monitor dashboard
node9 monitor は、2つのビューを持つ対話型ターミナルダッシュボードを開きます:
[1]リアルタイム — ライブアクティビティ、承認、セキュリティアラート、現在のリスクスコア[2]レポート — 期間指定サマリー:コスト、トップツール、発動したシールド、被害範囲
レポート
モニターで [2] を押すと、期間指定サマリーが表示されます。ウィンドウは [T]oday(今日) · [W]eek(週) · [M]onth(月) · [N]inety(90日)で切り替えられます — 上記のスキャンと同じパネルで、インストール後の監査ログに基づいて動作します。
Node9 monitor [2] Report
node9 monitor # press [2] for Report view
node9 report --period 7d # CLI form, no TUI
インストール
# macOS / Linux
brew tap node9-ai/node9 && brew install node9
# or via npm (any platform)
npm install -g node9-ai
node9 init # auto-wires all detected agents + MCP servers
node9 doctor # verify everything is wired correctly
Node.js 18+ が必要です。
シールド — 厳選されたルールパック
各シールドは、特定のサービスやドメイン向けに厳選されたルールセットです。必要なものだけを有効にしてください。
| シールド | キャッチする内容 | 有効化方法 |
|---|---|---|
project-jail | ~/.ssh、~/.aws、.env、BashおよびReadツールを介した資格情報の読み取りをブロック | 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秘密鍵をフラグ - 応答DLP — バックグラウンドスキャナーがClaudeの会話履歴を読み取り、Claudeが応答テキスト内に 秘密を書き込んだ 場合に警告を発します
- 自動元に戻す — AIファイル編集の前にgitスナップショットを作成 →
node9 undoで元に戻せます - スキルピン留め — インストールされたClaudeスキル/プラグインをセッション間で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を指定):
{
"settings": {
"reviewChannel": "ask", // "ask" = インラインエージェントプロンプト(デフォルト)| "approver" = Node9独自の承認者
},
}
- チーム設定:クラウド/チーム承認者が設定されている場合(
approvers.cloud: true)、レビューはその承認者にルーティングされます — Node9はインライン自己承認によってルーティング済み/第二者承認がバイパスされるのを防ぎます。
サンドボックス — エージェントを隔離環境で実行
監視だけでは不十分な場合、node9 sandbox はエージェントを カーネル強制のEgress許可リスト と スコープ付きマウント を持つ使い捨てコンテナ内で実行します — 同時にNode9のフックが ボックス内 の全てのツール呼び出しを監査および制御します。保護のハードバージョン:エージェントはマウントしたフォルダと許可したホストにしかアクセスできず、それ以外はカーネルレベルでドロップされます。
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
- 使い捨て — コンテナは終了時に破棄されます。プロジェクトの編集は実際のディスクに保存され、それ以外は何も残りません。
- 同じポリシー — 既存のシールド/Egressルール/承認はボックス内でも適用され、同じ監査ログとダッシュボードにストリーミングされます。
- 姿勢ループのクローズ — これを実行すると、隔離/Egressの発見事項がグリーンに変わります。
正直な範囲(フェーズ1):シングルコンテナ、Claude優先(Codexは次回);エージェントはボックス内で 自身の 資格情報を保持します(Egress壁により許可されたホストに制限されます)— 「エージェントが秘密を決して保持しない」というのはロードマップ上の資格情報ブローカーフェーズです。Dockerが必要です。
MCPゲートウェイ
任意のMCPサーバーを透過的にラップします。エージェントは同じサーバーを見ます — Node9が全てのツール呼び出しをインターセプトします。
{
"mcpServers": {
"postgres": {
"command": "node9",
"args": ["mcp", "--upstream", "npx -y @modelcontextprotocol/server-postgres postgresql://..."]
}
}
}
または単に node9 init を実行してください — 既存のMCPサーバーを自動的にラップします。
🔐 MCPツールピン留め — ラグプル対策
MCPサーバーはセッション間でツール定義を変更できます。侵害された、または悪意のあるサーバーは、最初に信頼した後に静かにツールを追加、削除、変更する可能性があります — これは ラグプル攻撃 です。
Node9は初回使用時にツール定義をピン留めします:
- 初回接続 — ゲートウェイが各ツールの名前、説明、スキーマのSHA-256ハッシュを記録
- 以降の接続 — ハッシュを比較;ツールが変更されていた場合、セッションは 隔離 され、人がレビューして変更を承認するまで全てのツール呼び出しがブロックされます
- ピン状態の破損 — フェイルクローズ(ブロック)、決して静かに再信頼しません
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
その他のコマンド
上記の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がシグナルを表示します。知っておくべきパターンは以下の通りです:
| シグナル | 考えられる意味 |
|---|---|
週に Would have blocked ≥ 5 回 | エージェントが影響の大きい操作を試行している;シールドの見直しを検討すべき |
単一の review-git-push ルールが発見事項の >50% | 自分のルールが意図通りに発動している — リスクではなく単なる監視 |
user-prompt ツールでのDLP発見事項 | 自身のプロンプトに秘密情報を貼り付けた — キーをローテーション |
| 同じファイルでのエージェントループ ×50+ | エージェントが編集/テスト/修正サイクルに陥っている — コンテキストを確認するか速度を落とす |
| MCPツールピン不一致 | サーバーがツールを変更した — 再信頼する前にレビュー |
| 大規模MCP応答警告 | そのサーバーが以降のターンごとにコンテキストウィンドウを膨らませている |
Response DLP アラート | Claudeが応答テキスト内に秘密情報を書き込んだ — ブロックされず、すぐにローテーション |
tool-result でのDLP発見事項 | Claudeが秘密情報を含むファイル(.env、資格情報)を読み取った — キーをローテーションし node9 mask を実行 |
[Shell] でのDLP発見事項 | ~/.zshrc や ~/.bashrc 内の平文秘密情報 — 全てのAIセッションがアクセス可能 |
単発のシグナルは正常ですが、持続的なパターンは対応すべきものです。
Python SDK — あらゆるPythonエージェントを統制
from node9 import configure, protect
configure(agent_name="my-agent", policy="require_approval")
@protect("bash")
def run_command(cmd: str) -> str:
...
Python SDK → · CIコードレビューエージェントの例 →
内部構造
- スキャン は
~/.claude/projects/、~/.gemini/tmp/、~/.gemini/antigravity-*/brain/、~/.copilot/session-state/、~/.codex/sessions/から生のエージェント履歴を読み取ります — API呼び出しなし、完全オフライン - ランタイム は、事前実行フック(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/callJSON-RPCをインターセプトし、その他は転送します - ポリシーエンジン は mvdan-sh を使用してbash AST分析を行います — バックスラッシュエスケープ、変数展開、リモートダウンロードのevalによる難読化を無効化します
- 自動元に戻す用シャドウリポジトリ は
~/.node9/snapshots/<hash16>/にあります — あなたの.gitには一切影響しません - サンドボックス は、
ipset/iptablesでデフォルト拒否のEgress壁を封印し、ルート以外のエージェントとしてNode9のデーモンとフックを内部で実行するDockerfile + エントリポイントを生成します。エージェントの資格情報ファイルのみがマウントされ、~/.claude全体はマウントされません
完全なドキュメント
設定リファレンス、スマートルール、ステートフルルール、信頼できるホスト、承認モード、CLIリファレンス — node9.ai/docs をご覧ください。
関連プロジェクト
- node9-python — Python SDK
- node9-pr-agent — Node9を通じてPRをレビューするGitHub Action
エンタープライズ
Node9 Pro は、ガバナンスロック、SAML/SSO、中央監査エクスポート、VPCデプロイメントを追加します。node9.ai をご覧ください。
ライセンス
Apache-2.0
☕ と健全なパラノイアで作られています。