
Ed25519署名付きレシート + AIエージェント向けCedarポリシー。金融マンデートゲート(Legate)、プルーフパック、3件のIEFTインターネットドラフト。npx protect-mcp
AIエージェントのツール呼び出しに対するフェイルクローズドなCedarポリシーゲートと署名付きレシート。
protect-mcp は、AIエージェントのツール呼び出しの手前に位置するゲートです。各呼び出しを Cedar ポリシーに対して評価し、ルールに違反するものを実行前にブロックし、すべての決定に対してオフラインで検証可能なEd25519レシートに署名します。設定されたゲートウェイはローカルで動作し、決定に関するテレメトリを一切送信しません。別個の連携アダプターはScopeBlindのホスト型コラボレーションサービスに接続し、そのリクエストと返却されるレコードは以下に説明するデータパスを持ちます。どちらもMITライセンスです。
共有リポジトリでの作業には、クライアントプロジェクトを使用してください。関係者がブリーフと制限に合意し、エージェントがレビューを準備し、オーナーのレシーバーがリポジトリを変更できる前に両者が正確なバージョンを承認します。以下のリポジトリワークフローにはセットアップと5つの境界付きエージェントツールが含まれています。
would_deny: true とフラグ付けされるため、失敗が黙殺されることはありません。serve --enforce と doctor は起動時のセルフテストを実行し、既知の禁止アクションが実際に拒否されることを示せない限りゲートを有効化しません。拒否を証明できないゲートは起動しません。@veritasacta/verify でオフライン検証できます。署名検証にネットワーク参照は不要です。実行に関する主張は、依然として特定されたゲートオペレーターに依存します。# 1. Generate an Ed25519 keypair, config template, and sample policy.
npx protect-mcp init
# 2. Print a shadow-mode client configuration, then apply it in your MCP host.
# This command prints configuration and exits; it does not launch the server.
npx protect-mcp wrap -- node your-mcp-server.js
# 3. Reopen the host and use its tools, then inspect the local-only dashboard.
npx protect-mcp dashboard --open
# 4. Draft a reviewable policy from observed calls.
npx protect-mcp recommend --write
# 5. When reviewed, restart the wrapper in enforce mode with that policy.
npx protect-mcp --policy protect-mcp.recommended.json --enforce -- node your-mcp-server.js
Claude Desktop の場合は、まずドライラン設定パッチを実行し、その後適用します:
npx protect-mcp wrap --claude-desktop
npx protect-mcp wrap --claude-desktop --write
npx protect-mcp dashboard --open
ダッシュボードは 127.0.0.1 にバインドされ、ローカルのログ/レシートファイルのみを読み取り、何もアップロードしません。ホスト型の ScopeBlind ダッシュボードを明示的に希望する場合にのみ、npx protect-mcp connect を使用してください。
Claude Code フックを配線するよりも、ゲートをツールとして呼び出したい場合は、MCP サーバーとして実行します:
npx protect-mcp mcp
MCPをstdio経由で話し、4つの読み取り専用ツール、つまりループ全体を公開します:
evaluate_action: 提案されたツール呼び出しをインラインCedarポリシーに照らして判定し、フェイルクローズドで動作します(ポリシーエラーはすべてDENY)。{ allowed, decision, reason, policy_digest } を返します。sign_decision: 判定をEd25519署名付きレシートに変換します(拒否は gateway_restraint に署名し、許可は decision_receipt に署名します)。レシートとその公開鍵を返します。鍵を指定しない場合は一時的な鍵を生成します。verify_receipt: 署名付きレシートを公開鍵に対してオフラインで検証します。{ valid, error, type, kid, issuer } を返します。self_test: 入力を必要とせず、それを証明します。既知の禁止されたアクションが拒否され、次に署名付きレシートがラウンドトリップし、改ざんされたコピーが失敗します。任意のMCPホストをこれに向けてください。たとえばClaude Desktop:
{
"mcpServers": {
"protect-mcp": { "command": "npx", "args": ["-y", "protect-mcp", "mcp"] }
}
}
レシートは、ゲートが実行時に署名するものとバイト互換であるため、ここで発行されたレシートは同じActaエンベロープを使用します。検証機能と正規化の互換性は検証器のバージョンに依存します。以下に説明する適合動作には、ゲートウェイのverifyReceipt APIを使用してください。
このソースツリーは、0.14.0まで存在していた整数キー順序の欠陥を修正します。署名とチェーンハッシュは、ゲートウェイのASCIIオブジェクトキープロファイルを維持しつつ、直接的なJCSメンバー出力を使用するようになりました。"10"のような数値に見えるキーは、ネストされたオブジェクト内も含め、"2"より前に配置されます。非JSON値と無効なUnicodeは拒否されます。
エンコーディングが変更されていない通常のJSONレシートは引き続き検証されます。古い数値キー順序で署名された履歴レシートはlegacy_non_jcs_signatureとして報告され、厳格な検証では有効なJCSとは見なされません。明示的な履歴互換性チェックには、verifyReceipt(receipt, publicKey, { allowLegacyNumericKeys: true })を使用し、canonicalizationフィールドとwarningフィールドを確認してください。その場合のhashは元の履歴ハッシュとなります。元のレシートとチェーンリンクを保持してください。古い数値キーレシートをreceiptHashで再計算すると、JCSハッシュが生成され、履歴チェーンが壊れる可能性があります。これらの変更は0.15.0に含まれています。
バージョン0.25.0には、再利用可能なエージェントプロファイルが含まれています。エージェントを通じて開始を開き、サービスに表示された権限キーを含むセットアップコマンドを確認してください。接続する前に、そのキーを信頼できるソースと照合してください。例:
npx --yes [email protected] coordination agent setup \
--client claude-code \
--profile ~/.scopeblind/agent.json \
--endpoint https://scopeblind.com/api/coordination \
--authority-key PINNED_64_HEX_AUTHORITY_KEY
--client codex または --client json をそれらの登録手順に使用します。
セットアップは設定を出力します。それをクライアントに適用し、その後そのクライアントを再度開きます。
プライベートプロファイルはエージェントキーと個別にスコープされた接続を保持し、
ファイル権限は 600 です。セットアップはタスク権限を付与せず、人間のブラウザキーをコピーしません。登録されたサーバーは coordination agent --profile FILE を実行します。
エージェントに、レビュー用の共有請求書タスクを準備するよう依頼します。ツールの流れは次のとおりです:
coordination.prepare_task({request_id, draft}) は未署名のドラフトを保存し、
あなた専用のプライベートレビューリンクを返します。再試行するときは
同じ request_id を保持します。ドラフトにはタイトル、目標、および任意で提案された制限、
前提条件、プライベートな設定が含まれます。ルームや人間の権限は作成しません。coordination.inspect_task_request({request_id}) はそのレビューを確認します。
coordination.claim_task_connection({request_id}) は正確に承認された
グラントを要求し、connection_id を返します。その後、提案またはテストの前に
coordination.inspect_negotiation({connection_id}) を呼び出します。coordination.check_handoffs({connection_id}) はその承認を検出します;
coordination.claim_execution_connection({connection_id, handoff_id}) は
新しい実行接続を保存します。支払いを送信する前に、返された connection_id を
検査します。交渉トークンが支払いトークンになることは決してありません。プロファイル内のすべてのスコープ付きツールは明示的な connection_id を必要とします;
coordination.connections を使用して、資格情報なしで保存された接続を一覧表示します。プロファイルは
要求する前にトークンを保持するため、不確実な応答は同じIDで復元できます。初期ペアリングウィンドウは
最大10分間続きます。そのウィンドウまたはグラントが失効した場合、
元の人物が現在の制限の下で同じプロファイルを明示的に再接続する必要があります。プロファイルが見つからない場合は
新たな承認が必要です。プロファイルは最大50件のリクエストと50件の接続を保持します;プライベートに保ってください。
以下の既存の単一ルーム接続は引き続き機能します。プロファイルをセットアップした後、
coordination agent import --profile FILE --config OLD_PRIVATE_CONFIG でインポートします。
インポートはそのスコープを保持し、古いペアリングで破棄されたプライベートエージェントキーを再構築することはできません;
その接続は同一キーの実行ハンドオフを要求できません。
ドラフトテキストとプライベートな指示は ScopeBlind に送信されます。エージェントのモデル プロバイダーは、あなた自身が承認したプライベートブリーフを含むツール結果を受け取ることがあります。 ホスト型アシスタントは、自身のプリンシパルのブリーフと共有レコードを受け取ります。 プロファイルのセットアップも、停止したクライアントも、バックグラウンドエージェントやモデルを実行しません。
元の承認済みブラウザのタスクから、別のデバイスで続行を選択します。そのリンクを スマートフォンで開くかスキャンし、アクセスを要求し、両方のデバイスに表示されるコードを比較します。 元のブラウザが、正確なスマートフォンキー、ルーム、権限、有効期限に署名します。リンクやQRコードだけでは 権限は付与されません;各デバイスは独自のプライベート署名キーを保持します。
アクセスは最大7日間、またはタスクの有効期限まで続きます。選択されたスコープと その人物の既存の役割に応じて、スマートフォンはタスクを検査し、 正確な支払いを承認または拒否し、その正確な結果への変更を受け入れるか要求し、 自身の交渉マンデートまたは正確にテスト済みの計画の決定に署名できます。タスクの作成、 人物やエージェントの招待、ホスト型モデルの起動、ルールの採用、支払いの実行、 別のデバイスへの委任はできません。将来の合意とレビュアー役割の 署名は、その正確に共同レビューされた提案の範囲内でのみ許可されます。それらは スマートフォンのアクセスを新しいタスクに引き継ぎません。
元のブラウザまたはリンクされたデバイスは、そのデバイスのアクセスを取り消すことができます。 取り消しは新しいアクションをブロックします;有効な以前の決定を消去するものではありません。 証拠は、実際のデバイス署名者、元のプリンシパルの署名済み 承認、およびサービスの署名済み承認使用レシートを保持します。ポータブルな 交渉、結果、およびリハーサルの検証は、必要な系統をチェックします。 これらの署名はキーを識別するものであり、検証済みの実世界の身元ではありません。
あなたの決定は、 このデバイスで認証された現在の作業を読み取ります。アイテムを開くと現在の リクエストが再確認されます;失効または置き換えられた決定は、変更された 支払いや結果を承認できません。オプションのブラウザリマインダーにはタスクの詳細や 資格情報は含まれず、この受信トレイを開き、作業を承認したり外部エージェントを起動したりすることは決してありません。 配信はブラウザ、オペレーティングシステム、およびホスト設定に依存します。 iPhone または iPad では、ScopeBlind をホーム画面に追加し、そのアプリのデバイスキーをリンクし、 そこでリマインダーを有効にします。リマインダーはタスク権限を変更せずにオフにできます。
protect-mcp バージョン 0.25.0 は、インストールされたエージェントを共有ルームと同じ
アドミッションおよびサンプル元帳サービスに接続します。ScopeBlind でルームを開始し、次に 自分の
エージェントを使用 → ペアリングコードを作成を選択します。これは架空の請求書サンドボックスです;実際の
お金は動きません。