エージェントによるGitHubへの書き込みをゲートする
エージェントによるリポジトリへの書き込みをIntralock経由で許可し、判定をチェック実行またはステータスとしてコミットに投稿します。
github.enforce
エージェントによるリポジトリへの書き込みをIntralock経由で許可し、判定をチェック実行またはステータスとしてコミットに投稿します。
github.enforceエージェントがリポジトリに書き込むとき、その書き込みを判定し、判定をコミットに残したい場合です。確認が必要な書き込みは、承認者がトークンを発行するまで拒否されます。
コードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
リポジトリ、エージェント、コミットのsha、動詞を送ります。受け入れはリポジトリ単位で、actionの既定はwriteです。
github.enforcegithub-enforcecurl -sS -X POST https://api.intramedial.com/api/v1/acp/github/enforce \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"repo": "acme/payments",
"actorDid": "did:web:acme.example:agent:billing",
"sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
"action": "write"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/github/enforce", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
repo: "acme/payments",
actorDid: "did:web:acme.example:agent:billing",
sha: "9fceb02d0ae598e95dc970b74767f19372d61af8",
action: "write",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/github/enforce",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"repo": "acme/payments",
"actorDid": "did:web:acme.example:agent:billing",
"sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
"action": "write",
},
timeout=30,
)
print(res.status_code, res.json())承認者がトークンを発行するまで、allowはfalseで、confirmation_requiredが返ります。GitHub Appがintramedial/acpチェックとして投稿します。
{
"allow": false,
"llm": false,
"reason": "confirmation_required",
"sha": "9fceb02d0ae598e95dc970b74767f19372d61af8",
"repo": "acme/payments",
"commitStatus": null,
"checkRun": { "id": "4417203551", "url": "https://github.com/acme/payments/runs/4417203551" }
}ブランチ保護でintramedial/acpチェックを必須にします。そうしないと、チェックは表示されてもマージはブロックされません。プルリクエストとマージグループのイベントは強制されますが、プッシュは記録するだけです。
転載元の資料: /docs/github-enforce
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
拒否された書き込みを承認キューで待機させ、サインインした人が承認したら、トークンを付けて再試行します。
coordination.approveエージェントのツール呼び出しに対するIntralockの判定をMCPゲートウェイに尋ね、理由を読み取り、確認された呼び出し元を一覧します。
mcp.enforce接続されたSaaSソースに対してエージェントが操作してよいかをプレーンに尋ね、何かが送信される前に判定を読み取ります。
saas.admitレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。