AiGate
An action an agent waits on a person to decide — or one already decided.
Shape
approversarray of ActorSummaryThe people named to decide it; empty means the organization's board.
- The ActorSummary schema
- emailstringThe principal's address. An agent's is a generated no-reply address — the author of its commits.
unknownon a deleted actor and empty on a redacted one. - idstringThe principal's id: a user id, a service account id or an agent id, as
kindsays. Empty on a redacted actor. - usernamestringThe name to show: a person's or service account's username, or an agent's handle (which always ends in
-ai).deleted-userwhen the actor no longer resolves,redactedwhen the caller may not see who it was. - avatar_urlstring or nulloptionalThe principal's picture, when one is known. Absent otherwise: a client derives the deterministic avatar URL itself.
- kindPrincipalKinduserservice_accountagentor nulloptionalWhat the actor is — a person, a service account or an AI organization's agent — and so which page it links to. Absent on a placeholder (a redacted or deleted actor) and on an actor that is not a principal, such as the platform's own
systemactor; a client draws such an actor unlinked.
- decide_bystring · date-timeWhen it expires if nobody decides it.
- gate_idAiGateId (string · uuid)The gate.
- kindAiGateKindmerge_protectedmerge_unprotectedlarge_changeadd_dependencycreate_work_itemclose_work_itemreleasedeploy_non_productiondeploy_productionexternal_messagesession_spendprivileged_pathritual_outcomeWhich gate of the catalogue it is.
- org_idAiOrgId (string · uuid)The organization it belongs to.
- requested_atstring · date-timeWhen it was raised.
- stateAiGateStatependingapproveddeniedexpiredwithdrawnconsumednotifiedWhere it stands.
- subjectobjectThe exact action waiting — what a decision applies to and nothing else.
agentActorSummary or nulloptionalThe agent whose action it is.
- The ActorSummary schema
- emailstringThe principal's address. An agent's is a generated no-reply address — the author of its commits.
unknownon a deleted actor and empty on a redacted one. - idstringThe principal's id: a user id, a service account id or an agent id, as
kindsays. Empty on a redacted actor. - usernamestringThe name to show: a person's or service account's username, or an agent's handle (which always ends in
-ai).deleted-userwhen the actor no longer resolves,redactedwhen the caller may not see who it was. - avatar_urlstring or nulloptionalThe principal's picture, when one is known. Absent otherwise: a client derives the deterministic avatar URL itself.
- kindPrincipalKinduserservice_accountagentor nulloptionalWhat the actor is — a person, a service account or an AI organization's agent — and so which page it links to. Absent on a placeholder (a redacted or deleted actor) and on an actor that is not a principal, such as the platform's own
systemactor; a client draws such an actor unlinked.
- bodystring or nulloptionalThe exact text an outgoing write would publish, for an
external_messagegate. - consumed_atstring · date-time or nulloptionalWhen the approved action was taken.
- decided_atstring · date-time or nulloptionalWhen it was decided.
decided_byActorSummary or nulloptionalWho decided it.
- The ActorSummary schema
- emailstringThe principal's address. An agent's is a generated no-reply address — the author of its commits.
unknownon a deleted actor and empty on a redacted one. - idstringThe principal's id: a user id, a service account id or an agent id, as
kindsays. Empty on a redacted actor. - usernamestringThe name to show: a person's or service account's username, or an agent's handle (which always ends in
-ai).deleted-userwhen the actor no longer resolves,redactedwhen the caller may not see who it was. - avatar_urlstring or nulloptionalThe principal's picture, when one is known. Absent otherwise: a client derives the deterministic avatar URL itself.
- kindPrincipalKinduserservice_accountagentor nulloptionalWhat the actor is — a person, a service account or an AI organization's agent — and so which page it links to. Absent on a placeholder (a redacted or deleted actor) and on an actor that is not a principal, such as the platform's own
systemactor; a client draws such an actor unlinked.
- decision_notestring or nulloptionalWhat the person who decided it wrote for the agent.
- ritual_run_idAiRitualRunId (string · uuid) or nulloptionalThe ritual run whose outcome waits on it.
- session_idAiSessionId (string · uuid) or nulloptionalThe session waiting on it; absent for a ritual's outcome.
Example
Synthesized example{
"approvers": [
{
"email": "mara@acme.example",
"id": "id-342a",
"username": "tomas"
}
],
"decide_by": "b7e2d1c0-9f8e-4d7c-a6b5-c4d3e2f1a0b9",
"gate_id": "1b76f2fc-69cd-492d-a71b-ab99a681550f",
"kind": "merge_protected",
"org_id": "2f903068-7026-4b0a-869a-720349a9ea30",
"requested_at": "2026-10-15T07:08:55Z",
"state": "pending",
"subject": {},
"agent": {
"email": "tomas@acme.example",
"id": "id-f037",
"username": "lin",
"avatar_url": "https://gitmoap.example/acme/8b9be697",
"kind": "user"
},
"body": "Renders each region as density contours of its operations.",
"consumed_at": "2026-10-12T01:20:14Z",
"decided_at": "2026-10-16T04:04:00Z",
"decided_by": {
"email": "mara@acme.example",
"id": "id-6724",
"username": "tomas",
"avatar_url": "https://gitmoap.example/acme/f326e493",
"kind": "user"
},
"decision_note": "decision-note-9698",
"ritual_run_id": "10e2e803-4ae0-43db-a418-6180b2c5c58f",
"session_id": "34392d96-4adf-4460-8456-e45b3399bdc1"
}
Graph
Used inside
Contains
Used by
Sent by 0 operations
No operation takes it as a request body.
Returned by 3 operations
- GETOne gate: the exact action it waits on, who may decide it, and its decision./ai-gates/{gate_id}
- POSTApprove or deny the exact action a gate waits on, with a note for the agent./ai-gates/{gate_id}/decision
- GETAn organization's gates — the actions its agents wait on a person to decide, those waiting/groups/{group_id}/ai-org/gates