Stop and quarantine an agent at once
Stop an agent with coordination.halt so admission answers quarantine, check that it does, and lift the stop when it is safe.
coordination.haltcoordination.quarantine
Stop an agent with coordination.halt so admission answers quarantine, check that it does, and lift the stop when it is safe.
coordination.haltcoordination.quarantinePut admission in front of your MCP servers, repositories, SaaS tools and cloud accounts. Every agent gets a lease or a reason – and you keep the lever to stop any of them.
An agent is writing in a loop and you want it refused now, without waiting for a release. An agent stop adds its DID to the quarantine set, so the next admission answers quarantine. Only a signed-in administrator can set or lift it.
The code reads the key from INTRAMEDIAL_KEY. Keep it in your shell or your secret store, never in a file you commit. Calls that need a signed-in person cannot use a key: the console makes them.
Send the scope agent, the DID and a reason. The reason is required so whoever lifts the stop knows what it was for. This is the body the console sends.
{
"scope": "agent",
"target": "did:web:acme.example:agent:billing",
"reason":
}created is false when it already stood; ledgered marks the event.
{
"ok": true,
"halt": {
"id": "hlt_5d2c81",
"scope": "agent",
"target": "did:web:acme.example:agent:billing",
: ,
: ,
:
},
: ,
:
}enforce.coordination.haltcoordination-haltcoordination.quarantinecoordination-quarantine
Declare any intent as that agent. Admission answers quarantine, because an agent stop adds the DID to the quarantine set. It is checked before confirmation, grants and a mandate stop, so no grant gets past it. Other scopes answer resource_halted.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/admit \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "read"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/admit", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "read",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/admit",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "read",
},
timeout=30,
)
print(res.status_code, res.json()){ "result": { "allow": false, "reason": "quarantine" }, "llm": false }Send the stop's id to unhalt, with a why. A bare quarantine shows in switches as q:<did>.
{
"id": "hlt_5d2c81",
"why": "cause fixed, writes checked"
}Copied from: /docs/coordination-halt
The ledger is append-only and sealed under Merkle roots. The time on an entry is Intramedial's own clock, and a signed bundle can be checked offline with the published key.
Open a dual-control request for a fixed scope, have a second administrator approve its digest, then run the gated action.
dual.control-scopesRead every agent, lease, waiter and quarantine the plane holds, in one call, with no inventory to keep by hand.
coordination.fleetmapRead the ledger for bursts, spikes and silence in lease and credential events, and run the check from your own scheduler.
watchdog.checkOne short email when we add recipes to the cookbook. No other mail, and you can unsubscribe from any message.
No key or account: Try it on the coordination.admit module page runs the real kernel in your browser. Use a workspace key for your own workspace.