protect-mcp-setup
Cedar ポリシーの強制適用と Ed25519 署名付きレシートを Claude Code のツール呼び出しに設定します。暗号化された監査証跡、ポリシーによるツール実行制御、またはエージェントの操作に関するコンプライアンス対応の証跡が必要なプロジェクトのセットアップ時に使用してください。
description の原文を見る
Configure Cedar policy enforcement and Ed25519 signed receipts for Claude Code tool calls. Use when setting up projects that need cryptographic audit trails, policy-gated tool execution, or compliance-ready evidence of agent actions.
SKILL.md 本文
protect-mcp — ポリシー適用 + 署名付きレシート
すべての Claude Code ツールコールに対する暗号化ガバナンス。各呼び出しは Cedar ポリシーに照らして評価され、だれでもオフラインで検証できる Ed25519 署名付きレシートを生成します。
概要
Claude Code は強力なツールを実行します: Bash、Edit、Write、WebFetch。デフォルトでは
監査証跡がなく、ポリシー適用がなく、その後何が決定されたかを証明する方法がありません。protect-mcp は 3 つすべてのギャップを埋めます:
- Cedar ポリシー (AWS のオープン認可エンジン) は実行前にすべてのツール呼び出しを評価します。Cedar の拒否は権限があります。
- Ed25519 レシート は各決定をその入力、それを管理するポリシー、および結果とともに記録します。レシートはハッシュチェーンされています。
- オフライン検証
npx @veritasacta/verifyを使用します。サーバーなし、アカウントなし、オペレーターへの信頼なし。
問題
AI エージェントはお金、安全性、権利に影響を与える決定を下します。Claude Code セッションログは何が起きたかを記録しますが、そのログは:
- 変更可能 — アクセス権のある人なら誰でも編集できます
- 署名なし — 整合性を証明する方法がありません
- オペレーター依存 — 検証にはログを保有している人を信頼する必要があります
コンプライアンス文脈 (金融、医療、規制対象研究) では、これは十分ではありません。第三者があなたを信頼することなく検証できる改ざん検知可能な証拠が必要です。
ソリューション
Claude Code プロジェクトに protect-mcp を追加します:
# 1. プラグインをインストール (プロジェクトにフックとスキルを追加)
claude plugin install wshobson/agents/protect-mcp
# 2. .claude/settings.json でフックを設定 (下記参照)
# 3. レシート署名サーバーを起動 (ローカル実行、外部呼び出しなし)
npx protect-mcp@latest serve --enforce
# 4. 通常通り Claude Code を使用します。すべてのツール呼び出しはポリシー評価済みになり、
# ./receipts/ に署名付きレシートが生成されます
フック設定
プロジェクトの .claude/settings.json に以下を追加します:
{
"hooks": {
"PreToolUse": [
{
"matcher": ".*",
"hook": {
"type": "command",
"command": "npx protect-mcp@latest evaluate --policy ./protect.cedar --tool \"$TOOL_NAME\" --input \"$TOOL_INPUT\" || exit 2"
}
}
],
"PostToolUse": [
{
"matcher": ".*",
"hook": {
"type": "command",
"command": "npx protect-mcp@latest sign --tool \"$TOOL_NAME\" --input \"$TOOL_INPUT\" --output \"$TOOL_OUTPUT\" --receipts ./receipts/"
}
}
]
}
}
各フックの機能
PreToolUse — ツール実行の BEFORE に実行されます。ツール呼び出しを Cedar ポリシーファイルに照らして評価します。Cedar が deny を返す場合、フックはコード 2 で終了し、Claude Code はツール呼び出しをブロックします。
PostToolUse — ツール完了の AFTER に実行されます。ツール名、入力ハッシュ、出力ハッシュ、決定、ポリシーダイジェスト、タイムスタンプを含むレシートに署名します。
レシートを ./receipts/<timestamp>.json に書き込みます。
Cedar ポリシーファイル
プロジェクトルートに ./protect.cedar を作成します:
// デフォルトで読み取り専用ツールを許可
permit (
principal,
action in [Action::"Read", Action::"Glob", Action::"Grep", Action::"WebFetch"],
resource
);
// 破壊的なツールには明示的な許可が必要
permit (
principal,
action == Action::"Bash",
resource
) when {
// 安全なコマンドのみを許可
context.command_pattern in ["git", "npm", "ls", "cat", "echo", "pwd", "test"]
};
// 再帰的な削除は決して許可しない
forbid (
principal,
action == Action::"Bash",
resource
) when {
context.command_pattern == "rm -rf"
};
// プロジェクト外への書き込みには確認が必要
forbid (
principal,
action in [Action::"Edit", Action::"Write"],
resource
) when {
context.path_starts_with != "."
};
検証
単一のレシートを検証します:
npx @veritasacta/verify receipts/2026-04-15T10-30-00Z.json
# Exit 0 = 有効
# Exit 1 = 改ざんされている
# Exit 2 = 形式が不正
チェーン全体を検証します:
npx @veritasacta/verify receipts/*.json
Claude Code 内のプラグインのスラッシュコマンドを使用します:
/verify-receipt receipts/latest.json
/audit-chain ./receipts/ --last 20
レシート形式
各レシートは次の構造の JSON ファイルです:
{
"receipt_id": "rec_8f92a3b1",
"receipt_version": "1.0",
"issuer_id": "claude-code-protect-mcp",
"event_time": "2026-04-15T10:30:00.000Z",
"tool_name": "Bash",
"input_hash": "sha256:a3f8...",
"decision": "allow",
"policy_id": "autoresearch-safe",
"policy_digest": "sha256:b7e2...",
"parent_receipt_id": "rec_3d1ab7c2",
"public_key": "4437ca56815c0516...",
"signature": "4cde814b7889e987..."
}
- Ed25519 署名 (RFC 8032)
- JCS 正規化 (RFC 8785) 署名前
- ハッシュチェーン
parent_receipt_id経由で前のレシートに - オフラインで検証可能 — ネットワーク呼び出しなし、ベンダー参照なし
これが重要な理由
| 以前 | 現在 |
|---|---|
| 「エージェントはファイルを読むだけだと信じてください」 | 暗号化で証明可能: すべての Read がログ記録され署名されている |
| 「ログがそれが起きたことを示しています」 | レシートがそれが起きたことを証明し、だれも編集できない |
| 「当社のシステムを監査する必要があります」 | 誰でもすべてのレシートをオフラインで検証できます |
| 「ログは今までに異なる可能性があります」 | Ed25519 署名は署名時にレコードをロックします |
標準
- Ed25519 — RFC 8032 (デジタル署名)
- JCS — RFC 8785 (決定論的な JSON 正規化)
- Cedar — AWS のオープン認可ポリシー言語
- IETF draft — draft-farley-acta-signed-receipts
関連
- npm: protect-mcp (v0.5.5、月 10K+ ダウンロード)
- Verify CLI: @veritasacta/verify
- ソース: github.com/ScopeBlind/scopeblind-gateway
- プロトコル: veritasacta.com
- 統合: Microsoft Agent Governance Toolkit (PR #667)、AWS cedar-policy/cedar-for-agents (PR #64)
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- wshobson
- リポジトリ
- wshobson/agents
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/wshobson/agents / ライセンス: MIT
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。