Agent Admission โ Approve
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/approve ยท version 0.1 ยท status draft
A supervisor, accountable for the admission, records the human gate โ a signed approval or denial of one pending agent application, distinct from and never substitutable for the understanding gate.
Abstract
The Agent Admission โ Approve Trust Task records the human gate of the
two-gate admission ceremony: a supervisor, accountable for this agent operating
in this scope, signs an approval or denial of one pending application.
The two gates are deliberately different in kind. The understanding gate
(agent-admission/respond) tests the agent; the
supervisor gate binds a human. Either alone is refused at issuance
(agent-admission/issue): an approval without
demonstrated understanding is patronage; demonstrated understanding without an
accountable approver is unsupervised admission. Two results of the same kind
never satisfy the rule.
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
typeishttps://trusttasks.org/spec/agent-admission/approve/0.1, with itself asissuer, the gate authority asrecipient, and a verifiableproof. - Decide against the recorded application โ the gate authority's rendering of the submission, the draw, and the understanding-gate result โ not against material supplied out-of-band by the candidate.
A conforming consumer (the gate authority) MUST:
- Verify the
proofand that theissueris a supervisor it recognises for this policy; an unverifiable or unrecognised approval ispermissionDenied, and the gate authority MUST NOT record it. - Reject with
supervisorIsAgentwhen the approving VID is, or resolves to the same controller as, the candidate agent. The separation of parties is the gate. - Record exactly one decision per application (
alreadyDecidedthereafter), append the supervisor-gate event to the content-addressed audit ledger, and return the gate result in the#response. - Treat a
denydecision as terminal for the application: issuance MUST NOT proceed, whatever the understanding gate scored.
Payload
payload.applicationId (REQUIRED) โ the application being decided.payload.agent (REQUIRED) โ VID of the candidate agent the decision covers.payload.decision (REQUIRED) โ approve or deny.payload.note (OPTIONAL) โ the supervisor's free-text rationale, recorded to the ledger.payload.ext โ extension slot per SPEC.md ยง4.5.1.
Request
{
"id": "urn:uuid:5b1a6f74-8e92-4da0-c2b3-4c5d6e7f8091",
"type": "https://trusttasks.org/spec/agent-admission/approve/0.1",
"issuer": "did:key:z6MkSupervisorExample",
"recipient": "did:key:z6MkGateAuthorityExample",
"issuedAt": "2026-07-18T10:20:00Z",
"payload": {
"applicationId": "app-7c1b2a90",
"agent": "did:key:z6MkCandidateAgentExample",
"decision": "approve",
"note": "Reviewed the submission and the scored answers; scope derivation is correctly understood."
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-07-18T10:20:00Z",
"verificationMethod": "did:key:z6MkSupervisorExample#z6MkSupervisorExample",
"proofPurpose": "assertionMethod",
"proofValue": "z3FXQmV6ExampleProofValueForAgentAdmissionApprove"
}
}
Response
{
"id": "urn:uuid:6c2b7085-9fa3-4eb1-d3c4-5d6e7f809102",
"type": "https://trusttasks.org/spec/agent-admission/approve/0.1#response",
"issuer": "did:key:z6MkGateAuthorityExample",
"recipient": "did:key:z6MkSupervisorExample",
"threadId": "urn:uuid:5b1a6f74-8e92-4da0-c2b3-4c5d6e7f8091",
"issuedAt": "2026-07-18T10:20:02Z",
"payload": {
"applicationId": "app-7c1b2a90",
"supervisorGate": {
"gate": "supervisorApproval",
"passed": true,
"at": "2026-07-18T10:20:02Z",
"evidenceDigest": "2e3f4a5b6c7d8e9f102e3f4a5b6c7d8e9f102e3f4a5b6c7d8e9f102e3f4a5b6c"
}
},
"proof": {
"type": "DataIntegrityProof",
"cryptosuite": "eddsa-jcs-2022",
"created": "2026-07-18T10:20:02Z",
"verificationMethod": "did:key:z6MkGateAuthorityExample#z6MkGateAuthorityExample",
"proofPurpose": "assertionMethod",
"proofValue": "z58aKqExampleProofValueForAgentAdmissionApproveResponse"
}
}
Security & Privacy
The decision discloses the supervisor's identity to the gate authority and, via
the ledger, to auditors โ that disclosure is the point: accountability requires
attributability. The note is free text written by the supervisor and recorded
durably; supervisors SHOULD NOT place third-party personal data in it. ThesupervisorIsAgent check depends on the gate authority's controller-resolution
being at least as strong as its VID acceptance policy; where controllers cannot
be resolved, the gate authority SHOULD require the supervisor set and the agent
population to be disjoint by construction.
Assets
Source: specs/agent-admission/approve/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