Einen GitHub-Write eines Agenten absichern
Lassen Sie den Schreibzugriff eines Agenten auf ein Repository über Intralock zu und posten Sie das Urteil als Check-Run oder Status auf den Commit.
github.enforce
Lassen Sie den Schreibzugriff eines Agenten auf ein Repository über Intralock zu und posten Sie das Urteil als Check-Run oder Status auf den Commit.
github.enforceLeiten Sie Agent-Aktionen, Inhalts-Hashes, API-Checks, DNS-Abfragen, Webhooks, LLM-Aufrufe und Git-Commits über Intramedial – für einen signierten Beleg, den jeder prüft, ohne uns zu vertrauen.
Ein Agent schreibt in ein Repository, und Sie wollen den Write entschieden haben, mit dem Urteil am Commit. Ein Write, der eine Bestätigung braucht, wird abgelehnt, bis ein Genehmiger ein Token ausstellt.
Der Code liest den Schlüssel aus INTRAMEDIAL_KEY. Halten Sie ihn in Ihrer Shell oder Ihrem Secret Store, nie in einer Datei, die Sie committen. Aufrufe, die eine angemeldete Person brauchen, können keinen Schlüssel verwenden: Die Konsole führt sie aus.
Senden Sie Repository, Agent, Commit-SHA und Verb. Admission gilt je Repository; action ist standardmäßig write.
github.enforcegithub-enforce
curl -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 ist false mit confirmation_required, bis ein Genehmiger ein Token ausstellt. Eine GitHub App postet es als Check 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" }
}Verlangen Sie im Branch-Schutz den Check intramedial/acp. Ohne das wird der Check angezeigt, blockiert aber keinen Merge. Pull-Request- und Merge-Group-Ereignisse setzen durch; ein Push wird nur protokolliert.
Kopiert aus: /docs/github-enforce
Das Ledger ist Append-only und unter Merkle-Roots versiegelt. Die Zeit eines Eintrags ist Intramedials eigene Uhr, und ein signiertes Bundle lässt sich offline mit dem veröffentlichten Schlüssel prüfen.
Lassen Sie einen abgelehnten Write in der Freigabewarteschlange warten, bis eine angemeldete Person ihn freigibt, und versuchen Sie es dann mit dem Token erneut.
coordination.approveFragen Sie das MCP-Gateway nach dem Intralock-Urteil zum Tool-Aufruf eines Agenten, lesen Sie die Begründung und listen Sie die Aufrufer auf, die es gesehen hat.
mcp.enforceFragen Sie die Ebene, ob ein Agent auf einer verbundenen SaaS-Quelle handeln darf, und lesen Sie das Urteil, bevor etwas gesendet wird.
saas.admitEine kurze E-Mail, wenn wir neue Rezepte ergänzen. Sonst keine Mail, und Sie melden sich aus jeder Nachricht ab.
Kein Konto nötig: 35 Aufrufe in 7 Tagen auf den Attest-Routen, Belege als Testbelege markiert. Registrieren Sie sich, wenn Sie weitermachen wollen.