proof-of-commitment について
proof-of-commitmentは、npm、PyPI、Cargo、GoのパッケージとGitHubリポジトリを、行動シグナルに基づいて評価するサプライチェーンリスクツールです。開発者はMCPサーバー、コマンドライン、Webツールで依存関係やメンテナーの集中度を調べ、脆弱性情報とは別の観点からリスクを確認できます。
主な機能
- 01パッケージとリポジトリの行動シグナルを評価
- 02依存リストと依存ツリーを監査
- 03npm、PyPI、Cargo、Goのパッケージを評価
- 04SARIFとCI監査結果を生成
- 05インストールを検知するフックを導入
- 06企業やメンテナーの情報を検索
活用シーン
- 01プロジェクト監査で依存関係のリスクを確認
- 02コーディングエージェントによるインストールを制御
- 03CIワークフローにサプライチェーン検査を追加
- 04GitHubリポジトリの依存関係を調査
MCP 対応
パッケージ、依存ツリー、GitHubリポジトリの監査に加え、パッケージや企業の情報を調べる12のMCPツールを公開します。MCPクライアントからnpm、PyPI、Cargo、Goのリスクスコアを照会できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://poc-backend.amdal-dev.workers.dev/mcpclaude mcp add --transport http proof-of-commitment https://poc-backend.amdal-dev.workers.dev/mcp{"mcpServers":{"proof-of-commitment":{"type":"http","url":"https://poc-backend.amdal-dev.workers.dev/mcp"}}}Cursor で開く{"servers":{"proof-of-commitment":{"type":"http","url":"https://poc-backend.amdal-dev.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"proof-of-commitment":{"type":"http","url":"https://poc-backend.amdal-dev.workers.dev/mcp"}}}{"mcpServers":{"proof-of-commitment":{"serverUrl":"https://poc-backend.amdal-dev.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
12| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| domain | string | はい | クエリ対象のドメイン(例:'example.com')。プロトコルやパスを含まない小文字に正規化されます。 |
詳細
コミットメントの証明
スターは当てになりません。行動のシグナルは嘘をつきません。
npm パッケージ、PyPI パッケージ、Rust クレート、Go モジュール、GitHub リポジトリを、行動に基づくコミットメントで評価する MCP サーバー兼ウェブツールです。スター、README、ダウンロード数よりも偽装が難しいシグナルを使います。
$ npx proof-of-commitment axios zod chalk lodash minimatch
Scoring 5 npm packages... done in 3.0s
Package Risk Score Publishers Downloads Age Provenance
chalk 🔴 CRITICAL 72 1 432.9M/wk 14.6y —
minimatch 🔴 CRITICAL 78 1 634.1M/wk 14.9y —
lodash 🔴 CRITICAL 80 1 158.9M/wk 14.1y —
zod 🔴 CRITICAL 83 1 161.2M/wk 6.3y 🔐 verified
axios 🔴 CRITICAL 88 1 115.7M/wk 11.8y 🔐 verified
⚠ COMPROMISED — axios token theft (2026-03-30)
⚠ 5 CRITICAL packages found.
CRITICAL = sole npm publisher + >10M weekly downloads (publish-access concentration risk)
これらはいずれも npm audit では検出されません。脆弱性ではなく、攻撃対象領域の集中です。npm トークンが一つ盗まれたり、メンテナーが一人フィッシングに遭ったりすれば、たった一度のプッシュでエコシステム全体に影響が及びます(axios、2026 年 3 月 30 日 — 実際に発生)。
サプライチェーンの問題
週間ダウンロード数が 1,000 万を超える npm パッケージ 91 件のうち、26 件は npm の公開者が 1 人だけです。合計すると、週間ダウンロード数は 30 億を超えます。これは npm audit では検出できません。スターでも検出できません。
一般的な Node.js プロジェクトに含まれる次の 4 つのパッケージは、現在 CRITICAL です。
- chalk — 週間ダウンロード数 4 億 3,200 万、npm の公開者 1 人
- zod — 週間ダウンロード数 1 億 8,500 万、npm の公開者 1 人(GitHub コントリビューターは 30 人以上)
- lodash — 週間ダウンロード数 1 億 5,600 万、npm の公開者 1 人
- axios — 週間ダウンロード数 1 億 1,300 万、npm の公開者 1 人(2026 年 3 月 30 日に攻撃を受けました)
これらは package.json に直接は現れませんが、ほぼすべてのプロジェクトに含まれています。
- minimatch — 週間ダウンロード数 6 億 2,500 万、npm の公開者 1 人
- glob — 週間ダウンロード数 3 億 6,600 万、npm の公開者 1 人
- cross-spawn — 週間ダウンロード数 2 億 1,500 万、npm の公開者 1 人
行動のシグナルなら、これらを検出できます。スターや README では検出できません。
クイックインストール(MCP)
ログインは不要です。MCP 対応の AI ツールに追加するだけで、サプライチェーンのリスクを調べられます。
Claude Desktop
macOS では ~/Library/Application Support/Claude/claude_desktop_config.json(設定ファイルのリファレンス)、Windows では %APPDATA%\Claude\claude_desktop_config.json を開き、次を追加します。
{
"mcpServers": {
"commit": {
"type": "streamable-http",
"url": "https://poc-backend.amdal-dev.workers.dev/mcp"
}
}
}
Claude Desktop を再起動します。チャット入力欄にツールアイコンが表示されたら、package.json の監査を依頼してください。
Cursor
~/.cursor/mcp.json(Cursor の MCP ドキュメント)を開き、次を追加します。
{
"mcpServers": {
"commit": {
"type": "streamable-http",
"url": "https://poc-backend.amdal-dev.workers.dev/mcp"
}
}
}
Smithery(インデックス登録後)
npx -y @smithery/cli install proof-of-commitment --client claude
今すぐ試す
ターミナル(インストール不要):
# New in v1.8.0: zero-arg auto-detect — cd into any project, run once:
npx proof-of-commitment
# Picks the highest-coverage manifest in cwd (package-lock.json > yarn.lock >
# pnpm-lock.yaml > pnpm-workspace.yaml > package.json; requirements.txt;
# Cargo.toml; go.sum > go.mod). When multiple ecosystems are present, the
# file with the most recent mtime wins.
# Explicit package list still works:
npx proof-of-commitment axios zod chalk
# Or point at a specific file:
npx proof-of-commitment --file package.json
npx proof-of-commitment --file package-lock.json # npm (transitive)
npx proof-of-commitment --file yarn.lock # yarn
npx proof-of-commitment --file pnpm-lock.yaml # pnpm
npx proof-of-commitment --file pnpm-workspace.yaml # pnpm monorepo
npx proof-of-commitment --pypi litellm langchain requests
npx proof-of-commitment --cargo serde tokio reqwest
npx proof-of-commitment --golang github.com/gin-gonic/gin golang.org/x/net
npx proof-of-commitment --file go.mod
npx proof-of-commitment --file go.sum # full transitive Go set
# JSON output for downstream tools:
npx proof-of-commitment --file package-lock.json --json | jq '.criticalCount'
CI との統合(v1.8.0+)
--fail-on=<level> を使うと、CLI を 1 行の CI ゲートとして利用できます。GitHub Action は不要です。
# .github/workflows/supply-chain.yml
name: Supply Chain
on: [pull_request]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npx -y proof-of-commitment --fail-on=critical
レベル:
--fail-on | 次の場合に終了コード 1 を返す |
|---|---|
critical | いずれかのパッケージが CRITICAL(公開権限の集中)と判定された場合 |
risky | いずれかのパッケージが CRITICAL または HIGH(スコア < 40)と判定された場合 |
none | 常にレポートのみ |
デフォルトは、CI 環境(すべての主要な CI ランナーが設定する CI=true が設定されている場合)と --json 出力では critical です。対話モード(TTY、非 CI)では v1.7 のデフォルトである 終了コード 0 が維持されるため、ローカルで実行しても普段のシェル操作に影響しません。
PR コメントとステップの概要が必要な場合は、専用の piiiico/commit-action@v1 が引き続き最適です。--fail-on は、はい/いいえの判定だけが必要なシンプルなパイプライン向けです。
GitHub Code Scanning 用の SARIF 出力(v1.26.0+)
--sarif は、静的解析結果の標準形式である SARIF 2.1.0 を出力します。GitHub Code Scanning にアップロードすると、Commit の検出結果が CodeQL や Snyk と並んで Security タブに表示されます。
# .github/workflows/supply-chain.yml
name: Supply Chain
on: [pull_request]
jobs:
audit:
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: '20' }
- run: npx -y proof-of-commitment --file package-lock.json --sarif --fail-on=none > results.sarif
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: results.sarif
category: commit-supply-chain
CRITICAL および HIGH のパッケージは、リポジトリの Security タブにアラートとして表示されます(Commit インシデントレジストリに登録されている)侵害されたパッケージには、別のアラートが表示されます。--fail-on は終了コードを引き続き個別に制御します。PR もブロックするには --fail-on=critical を使います。
ウェブデモ(インストール不要): getcommit.dev/audit — パッケージを貼り付けると、数秒でリスクスコアを確認できます。
IDE フック(Cursor + Claude Code + Windsurf)
poc hook は、Cursor(beforeShellExecution)、Claude Code(PreToolUse)、Windsurf(pre_run_command)のサプライチェーンゲートを、1 つのコマンドでインストールします。同じフックスクリプトがあらゆるエージェントからのパッケージインストールをインターセプトし、呼び出したクライアントを自動検出して、実行前に CRITICAL パッケージをブロックします。
# Install for the current project (writes .cursor/hooks.json + .claude/settings.json + .windsurf/hooks.json):
poc hook
# Or protect every project for your user:
poc hook --global
# Narrow to one client:
poc hook --cursor # only .cursor/hooks.json
poc hook --claude-code # only .claude/settings.json
poc hook --windsurf # only .windsurf/hooks.json
# Remove (cleans all three):
poc hook --uninstall
フックは .cursor/hooks.json、.claude/settings.json、.windsurf/hooks.json(プロジェクト内)、または --global を指定した場合は ~/ 配下の同等のファイルに書き込みます。Cursor、Claude Code、Windsurf が npm install axios、pip install litellm、cargo add serde、go get github.com/gin-gonic/gin を実行すると、フックは Commit API を呼び出し、500 ミリ秒未満でブロック、警告、または許可を判断します。
インターセプト対象:
| パッケージマネージャー | コマンド例 |
|---|---|
| npm / npx | npm install <pkg>、npm add <pkg> |
| pnpm | pnpm add <pkg> |
| yarn | yarn add <pkg> |
| pip / pip3 / uv | pip install <pkg> |
| cargo | cargo add <pkg>、cargo install <pkg> |
| go | go get <module>、go install <module> |
重要な理由: サプライチェーン攻撃は、今や数分で発生します。Shai-Hulud ワーム(2026 年 5 月)は 39 分で 637 個のパッケージを侵害し、AI コーディングアシスタントを特に標的にしました。.claude/settings.json と .vscode/tasks.json に永続化フックを仕込んだのです。AI アシスタントが依存関係をインストールすると、かつて最後の防衛線だった人間によるレビューが回避されます。poc hook はゲートを復活させます。Cursor、Claude Code、Windsurf のどれを使っていても、同じゲートが機能します。
デフォルトの動作: CRITICAL パッケージ(npm の公開者が 1 人のみ、かつ週あたりのダウンロード数が 1,000 万件超。LiteLLM/axios の攻撃プロファイルそのもの)はブロックされます。HIGH パッケージでは「ユーザーに確認」プロンプトが表示される(Cursor/Claude Code)か、メッセージとともにブロックされます(Windsurf)。両方をブロックするには COMMIT_HOOK_SEVERITY_BLOCK=HIGH を設定します。
API キーを使う場合: poc hook を実行する前に poc login sk_commit_… を実行します。キーがフック設定に埋め込まれ、レート制限が緩和されます。
次の攻撃が起きる前に通知を受け取る
CLI では、今日のリスクを確認できます。無料の API キーを使うとモニタリングが利用可能になり、依存しているパッケージのスコアが再計算され、状態が悪化した場合(公開者の減少、リリースの停滞、スコアが 10 点以上低下)にアラートが届きます。
- Open(無料): 3 個のパッケージを監視 · 毎週月曜日に週次ダイジェスト
- Developer($15/月): 15 個のパッケージを監視 · 毎日のスキャン · 即時メールアラート
無料の API キーを取得 →(カード不要、30 秒 · 1 日あたり 200 回の監査を含む)
npm install -g proof-of-commitment # then:
poc watch axios --email [email protected] # free key + monitoring in one step
poc watch chalk # add more packages (3 free)
poc init # add CI gate to this repo
GitHub Action
30 秒であらゆる CI パイプラインにサプライチェーン監査を追加できます。package.json または requirements.txt からパッケージを自動検出し、結果を PR のコメントとして投稿して、GitHub Step Summary に書き込みます。また、CRITICAL なパッケージが見つかった場合に失敗させることもできます。
専用の Action piiiico/commit-action を使用します:
# .github/workflows/supply-chain.yml
name: Supply Chain Audit
on:
pull_request:
paths: ['package.json', 'package-lock.json', 'bun.lock']
jobs:
audit:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: piiiico/commit-action@v1
with:
fail-on-critical: true # blocks merges on CRITICAL packages
comment-on-pr: true # posts results as a PR comment
comment-on-pr: true(デフォルト)の場合、Action は監査結果の表をプルリクエストのコメントとして自動的に投稿します。再実行時は同じコメントを更新するため、コメントが何度も投稿されることはありません。レビュー担当者は PR を離れることなく、リスクの表を確認できます。
入力:
| 入力 | デフォルト | 説明 |
|---|---|---|
packages | (auto) | カンマ区切りのパッケージ名(設定されていない場合は package.json/requirements.txt から自動検出) |
packages-file | (auto) | package.json または requirements.txt のパス(デフォルト:ワークスペースのルートで自動検出) |
fail-on-critical | true | CRITICAL なパッケージが見つかった場合にワークフローを失敗させます |
max-packages | 20 | 自動検出時に監査するパッケージの最大数 |
include-dev-dependencies | false | package.json の devDependencies を含めます |
comment-on-pr | true | 監査結果を PR のコメントとして投稿します(pull-requests: write 権限が必要です) |
api-key | (none) | Commit Pro API キー。バッチリクエストと月 10K リクエストが利用可能になります |
api-url | (prod) | API エンドポイントを上書きします(セルフホストに便利です) |
出力: has-critical、critical-count、audit-summary(Markdown の表。Step Summary にも書き込まれます)。
Free と Pro の違い: API キーがない場合、レート制限を守るために間隔を空けながら、パッケージを 1 つずつ監査します。Pro API キーを使用すると、すべてのパッケージを 1 回のバッチリクエストで監査できるため、より高速で、月間リクエスト上限も高くなります。
PR コメント/Step Summary の出力例:
| Package | Risk | Score | Publishers | Downloads/wk | Age |
|---------|-------------|-------|------------|--------------|-------|
| chalk | 🔴 CRITICAL | 75 | 1 | 380M | 12.7y |
| zod | 🔴 CRITICAL | 83 | 1 | 133M | 6.1y |
| axios | 🔴 CRITICAL | 89 | 1 | 93M | 11.6y |
README バッジ
管理または依存している npm パッケージに Commit Trust バッジを追加します:

例:
| パッケージ | バッジ URL |
|---|---|
| chalk |  |
| react |  |
| express |  |
| @babel/core |  |
評価:🟢 OK(75 以上)・🟠 WARNING(40~74)・🔴 CRITICAL(40 未満、または週間ダウンロード数が 1,000 万を超える唯一の npm 公開者)
バッジは 1 時間キャッシュされます。API キーは不要です。
PyPI、Cargo、Go モジュール、およびエコシステム固有の完全な形式にも対応しています:




REST API
API キー不要。インストール不要。
curl https://poc-backend.amdal-dev.workers.dev/api/audit \
-X POST \
-H "Content-Type: application/json" \
-d '{"packages": ["axios", "zod", "chalk", "lodash", "express"]}'
{
"count": 5,
"results": [
{
"name": "chalk",
"ecosystem": "npm",
"score": 75,
"maintainers": 1,
"weeklyDownloads": 398397580,
"ageYears": 12.7,
"trend": "stable",
"riskFlags": ["CRITICAL"],
"scorecardScore": 3.6, // null if no GitHub repo
"hasDangerousWorkflow": false // null if no Scorecard data
},
...
]
}
12 個の MCP ツール
| ツール | 説明 |
|---|---|
audit_dependencies | npm/PyPI/Cargo/Go パッケージ最大 20 個の一括リスク監査 |
audit_github_repo | リポジトリの package.json/requirements.txt を取得し、すべての依存関係を監査 |
audit_dependency_tree | npm パッケージの完全な依存関係ツリーをマッピング(推移的な CRITICAL 依存関係を含む) |
lookup_npm_package | 単一の npm パッケージの動作プロファイル |
lookup_pypi_package | 単一の PyPI パッケージの動作プロファイル |
lookup_cargo_crate | 単一の Rust クレートの動作プロファイル(crates.io) |
lookup_go_module | 単一の Go モジュールの動作プロファイル(proxy.golang.org + GitHub) |
lookup_github_repo | GitHub リポジトリのコミットメントスコア(継続年数、コミット頻度、コントリビューターの層の厚さ) |
lookup_business | ノルウェー企業登録情報 — 事業年数、従業員数、財務情報 |
lookup_business_by_org | 同上。組織番号で検索 |
query_commitment | ブラウザー拡張機能の行動データ(検証済みのユニーク訪問者数、再訪率) |
get_api_key | チャット内で無料 API キーを作成。ブラウザー不要で、キーは即座に返されます |
匿名利用:/mcp と /api/audit の合計で、IP ごとに UTC 日あたり 15 リクエスト。無料キー(カード不要、https://getcommit.dev/get-started で 30 秒で登録):1 日 200 リクエスト。上位プランは https://getcommit.dev/pricing をご覧ください。
スコアの測定対象
各パッケージを以下の項目で0〜100点で評価します。
- 運用期間 — そのパッケージはどれくらい前から存在していますか? 放棄されたパッケージが攻撃に再利用されることがあります。
- 公開者の規模 — npm の公開者が1人で、週に数百万回ダウンロードされる組み合わせが、LiteLLM が悪用した攻撃対象でした。(公開者とは npm で公開する権限を持つ人で、GitHub のコントリビューターとは異なります。)
- リリースの一貫性 — 定期的なリリースは、継続的に管理されていることを示します。長い空白期間は、脆弱性が蓄積している可能性を示します。
- ダウンロード傾向 — ダウンロード数の増加に伴い、パッケージはより厳しく注視されるようになり(攻撃も増えます)。安定していれば、注目度は低くなります。
- OpenSSF Scorecard — プロセスのセキュリティ(コードレビューの徹底、ブランチ保護、CI/CD の安全性)を評価します。行動シグナルとは別の指標です。Scorecard のスコアが高くても、認証情報の窃取攻撃を防げるとは限りません。
axios(Scorecard 8.1/10)と chalk(Scorecard 3.6/10)はどちらも、行動シグナルで CRITICAL と評価されています。これらは異なる攻撃対象を測定します。Scorecard はプロセス上の不備を検出し、行動シグナルは公開者の集中を検出します。
リスクフラグ:
CRITICAL— npm の公開者が1人で、週に1,000万回を超えるダウンロード(LiteLLM/axios とまったく同じ攻撃プロファイル)HIGH— パッケージが公開から1年未満で、急速に普及WARN— 12か月以上リリースがない
実際のデータ例
# packages you know about:
chalk — score 75, 1 publisher, 432M/week ⚑ CRITICAL
zod — score 83, 1 publisher, 185M/week ⚑ CRITICAL (30+ GitHub contributors)
lodash — score 81, 1 publisher, 156M/week ⚑ CRITICAL
axios — score 88, 1 publisher, 113M/week ⚑ CRITICAL (attacked Mar 30 2026)
express — score 90, 5 publishers, 95M/week
# packages probably not in your package.json, definitely in your lock file:
minimatch — score 78, 1 publisher, 625M/week ⚑ CRITICAL
glob — score 80, 1 publisher, 366M/week ⚑ CRITICAL
cross-spawn — score 72, 1 publisher, 215M/week ⚑ CRITICAL
# post-attack:
litellm — score 74, 1 publisher ⚑ CRITICAL (supply chain attack Mar 2026)
# Rust crates (new in v1.3.0):
serde — score 78, 1 owner, 13M/week ⚑ CRITICAL (dtolnay sole owner)
tokio — score 89, 2 owners, 10M/week
reqwest — score 85, 1 owner, 8M/week ⚑ HIGH
行動シグナルが重要な理由
LiteLLM 攻撃(2026年3月)と axios 攻撃(2026年3月30日)は、同じパターンをたどりました。認証情報の窃取 → 悪意のあるパッケージの公開 → 9,700万台以上のマシンが危険にさらされました。どちらのパッケージも、攻撃者が利用した条件である単一アカウントという点に基づき、現在これらの指標で CRITICAL と評価されています。スコアは攻撃後に算出されたもので、予測ではなく、過去への適用です。
宣言的なシグナル(スター数、README の品質、CI バッジ)では、このリスクを捉えられません。行動に基づく取り組みが重要です。
ブログ
- LinkedIn のバックドア:npm audit が250行の攻撃を見逃した理由 — 偽のリクルータークローン攻撃は、テストファイルにマルウェアを隠し、npm のライフサイクルスクリプト経由で実行しました。npm audit は何も検出しませんでした。どのような行動シグナルがあれば検出できたのかを解説します。
- axios:構造的な観点からの考察 — axios は、2026年3月30日のトークン窃取で利用された条件(npm の公開者が1人)に基づき、CRITICAL と評価されています。スコアは攻撃前ではなく、攻撃後に算出されました。
技術スタック
| レイヤー | 技術 |
|---|---|
| バックエンド | Cloudflare Workers + D1 |
| MCP | Model Context Protocol SDK |
| データ | npm registry、PyPI、crates.io、proxy.golang.org、deps.dev、GitHub API、Brønnøysund(NO) |
| ランディングページ | Astro + Cloudflare Pages |
ロードマップ
予定している項目であり、実装を約束するものではありません。プロジェクトは初期段階にあり、どの項目への貢献も歓迎します。
| 機能 | 状況 | 備考 |
|---|---|---|
| Cargo(Rust)レジストリのサポート | ✅ 提供中 | MCP ツール、REST API、バッジエンドポイント — ecosystem: "cargo" |
| Go モジュールのサポート | ✅ 提供中 | proxy.golang.org + deps.dev + GitHub を主要情報源とするスコアリング — ecosystem: "golang" |
| スコアの内訳の可視化 | 予定 | getcommit.dev/audit の5つの評価項目を表示するチャートコンポーネント |
CLI の --json フラグ | ✅ 提供中 | npx proof-of-commitment --file package-lock.json --json | jq '.criticalCount' |
| pnpm ワークスペースのモノレポ対応 | ✅ 提供中 | --file pnpm-workspace.yaml を指定するか、pnpm-lock.yaml から自動検出 |
| 過去のスコアの追跡 | 予定 | 推移チャート — このパッケージのリスクは時間とともに高まっていたか? |
| 組織レベルのダッシュボード | 予定 | GitHub 組織内のすべてのリポジトリを集約したリスクビュー |
今すぐ協力できる項目については、未解決のイシューをご覧ください。
より広いビジョン
サプライチェーン監査は、最初のツールです。その基盤となるプリミティブはコミットメントグラフです。あらゆる分野で、コンテンツベースの信頼に代わる行動シグナルです。
コンテンツを簡単に偽造できる場合(レビュー、スター、README など)、コミットメントがシグナルになります。12 年間に 847 件のリリースを公開してきた発行者のコミットメントは、2023 年に一度だけ公開した発行者のものとは異なります。
同じ考え方は、ウェブサイト、企業、AI エージェントにも当てはまります。2 つのカードネットワークが、このギャップを独立して指摘しています。Mastercard Verifiable Intent §9.2 では、行動に基づく信頼が「対象外」と明記されています。Visa TAP はエージェントを特定しますが、信頼すべきかどうかには答えていません。
Proof of Commitment は、両者が示している信頼レイヤーです。
ローカルで実行する
bun install
bun run dev:backend # local server with SQLite
bun run test:e2e # E2E test with mock World ID
デプロイ:
bun run deploy # deploys to Cloudflare Workers
リリース
v* タグをプッシュすると自動的に公開されます。また、GitHub Actions の workflow_dispatch から手動で公開することもできます。
ファネルのスモークテストゲート
npm publish の実行前に、CI ワークフローで scripts/funnel-smoke.sh が実行されます。これは、ファネルの主要な 4 つの経路を検証する、ローカルモックを使った公開前チェックです。
| 経路 | テスト内容 | 検出するバグの種類 |
|---|---|---|
| A | COMMIT_API_KEY を設定した CLI 監査 → 200 + 結果 | v1.20.0:Authorization ヘッダーの欠落 → 有料コンバージョンが 0 件 |
| B | 匿名での CLI 監査、429 → メッセージ + instant_key_url | 429 の処理/CTA の表示 |
| C | cursor-hook(Cursor stdin)での 429 → permission: ask + サインアップ URL | v1.21.0:429 時に暗黙的に allow → セキュリティ上の問題 + コンバージョンが 0 件 |
| D | cursor-hook(Claude Code の PreToolUse stdin)での 429 → hookSpecificOutput.permissionDecision: ask + claude-code-hook-429 のアトリビューション | v1.22.0:Claude Code が実行した場合の応答形式の誤り → 暗黙的に allow/コンバージョンの誤ったアトリビューション |
いずれかの経路で失敗すると、リリースはブロックされます。このゲートではローカルの Python モックサーバーを実行するため、CI での結果は一定で、本番環境のレート制限状態にも依存しません。
任意の CI シークレット: GitHub リポジトリのシークレットに COMMIT_TEST_API_KEY を設定すると、経路 A で実際の API キーを使用できます。設定しない場合は、ローカルサーバーが無条件に受け入れるモックキーを使用します。
ローカルで実行する:
bash scripts/funnel-smoke.sh
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。