Agent Admission โ Revoke
PROPOSED โ not yet upstreamed. Built to the ToIP
spec.meta.schema.jsonfor the dtgwg-trust-tasks-tf registry; the slug below is proposed to that namespace, not registry-accepted. The PR is pending; the registry's decision governs.
Proposed slug: agent-admission/revoke ยท version 0.1 ยท status draft
A supervisor revokes an admitted agent's relationship credential; the gate authority records the revocation, and mirrors a revocation mark to every external registry the outcome was anchored on, so on-chain and off-chain relying parties converge on refusal.
Abstract
The Agent Admission โ Revoke Trust Task ends an admitted agent's standing.
Because an admission outcome may have been anchored on external registries as
discoverable evidence, revocation is not complete until a revocation mark is
mirrored to the same registries โ otherwise off-chain relying parties refuse
the agent while on-chain ones keep trusting the stale anchor. Anchors are
evidence, never authority: the revocation's authority is this signed task and
the gate authority's record; the mirrors only make it discoverable everywhere
the issuance was.
Status of this Document
This is a draft Trust Task specification per SPEC.md ยง5.3; the schema MAY change without notice. Feedback via the issue tracker.
Conformance
RFC2119(https://www.rfc-editor.org/rfc/rfc2119) and RFC8174(https://www.rfc-editor.org/rfc/rfc8174) key-word conventions apply.
A conforming producer (the supervisor) MUST emit a Trust Task document whose type is https://trusttasks.org/spec/agent-admission/revoke/0.1, with itself as issuer, the gate authority as recipient, and a verifiable proof.
A conforming consumer (the gate authority) MUST:
- Verify the
proofand that theissueris a supervisor it recognises for this credential's policy (permissionDeniedotherwise). - Record the revocation and append the event to the content-addressed audit ledger before attempting any mirror โ the local record is the authority; mirrors follow it.
- Post a revocation mark to every registry named in the credential's anchor set, and report per-anchor convergence in the
#response. Partial mirror failure ismirrorFailed(retryable); the revocation itself is never rolled back for a failed mirror. - Refuse further delegated authority derived from this credential immediately upon recording, without waiting for mirrors.
Payload
payload.credentialId (REQUIRED) โ the credential being revoked (its digest or ceremony identifier).payload.agent (REQUIRED) โ VID of the agent whose standing ends.payload.reason (REQUIRED) โ recorded, durable free text.payload.ext โ extension slot per SPEC.md ยง4.5.1.
Request
{
"id": "urn:uuid:9f5ea3b8-c2d6-4be4-a6f7-809102132435",
"type": "https://trusttasks.org/spec/agent-admission/revoke/0.1",
"issuer": "did:key:z6MkSupervisorExample",
"recipient": "did:key:z6MkGateAuthorityExample",
"issuedAt": "2026-07-18T14:00:00Z",
"payload": {
"credentialId": "4a5b6c7d8e9f2021324a5b6c7d8e9f2021324a5b6c7d8e9f2021324a5b6c7d8e",
"agent": "did:key:z6MkCandidateAgentExample",
"reason": "Deployment scope exceeded during batch run; standing withdrawn pending re-assessment."
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-07-18T14:00:00Z",
"verificationMethod": "did:key:z6MkSupervisorExample#z6MkSupervisorExample",
"proofPurpose": "assertionMethod",
"proofValue": "z3FXQmV6ExampleProofValueForAgentAdmissionRevoke"
}
}
Response
{
"id": "urn:uuid:a06fb4c9-d3e7-4cf5-b708-9102132435460",
"type": "https://trusttasks.org/spec/agent-admission/revoke/0.1#response",
"issuer": "did:key:z6MkGateAuthorityExample",
"recipient": "did:key:z6MkSupervisorExample",
"threadId": "urn:uuid:9f5ea3b8-c2d6-4be4-a6f7-809102132435",
"issuedAt": "2026-07-18T14:00:03Z",
"payload": {
"credentialId": "4a5b6c7d8e9f2021324a5b6c7d8e9f2021324a5b6c7d8e9f2021324a5b6c7d8e",
"revoked": true,
"revokedAt": "2026-07-18T14:00:03Z",
"mirroredAnchors": [
{ "namespace": "org.erc8004.validation", "ref": "0x5aโฆe21f" }
]
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-07-18T14:00:03Z",
"verificationMethod": "did:key:z6MkGateAuthorityExample#z6MkGateAuthorityExample",
"proofPurpose": "assertionMethod",
"proofValue": "z58aKqExampleProofValueForAgentAdmissionRevokeResponse"
}
}
Security & Privacy
The reason is durable and, where anchors exist, its existence (not its
text) becomes publicly discoverable; supervisors SHOULD keep reasons free of
third-party personal data, and mirrors MUST carry only the revocation mark and
credential digest โ never the reason text. Revocation timing is itself a
signal: a relying party watching an anchor registry learns when an agent lost
standing. That is the intended disclosure โ convergence beats confidentiality
here, which is why the mirror is mandatory rather than best-effort. The window
between local recording and mirror convergence is the residual risk; relying
parties that can reach the gate authority SHOULD preferagent-admission/status over anchor reads.
Assets
Source: specs/agent-admission/revoke/0.1/ โ spec.md + payload.schema.json
upstream: ~/dtgwg-trust-tasks-tf-mage (untracked contribution lane; upstream registry: trustoverip/dtgwg-trust-tasks-tf) ยท author: Mitchell Travers ยท the git source wins on any disagreement ยท (โ๏ธโฅโฟปโฅ๐ง)๐
โ The Trust Tasks ยท Welcome Visitors