Skip to content
Developer Preview

ApprovalChange

The change an approval/updated event reports. kind says what happened, and only the fields for that kind are present.

  • choiceId
  • decision
  • executable
  • kind
  • reason
  • reparsed
  • requirementId
  • status
Source

schema/msp/experimental/msp.schema.json#/types/ApprovalChange

{
"description": "The change an `approval/updated` event reports. `kind` says what happened,\nand only the fields for that kind are present.",
"properties": {
"choiceId": {
"description": "The `choiceId` that satisfied the stage. Present only when `kind` is\n`stageResolved`.",
"type": "string"
},
"decision": {
"$ref": "#/$defs/ApprovalDecision",
"description": "The decision the chosen option applied to the stage. Present only when\n`kind` is `stageResolved`."
},
"executable": {
"description": "A recovery detail: whether the action could run without a new decision.\nPresent only when `kind` is `restartRecovered`.",
"type": "boolean"
},
"kind": {
"description": "What happened: for example `stageResolved` (a shell stage was\nsatisfied), `policyPersistence` (saving a rule succeeded or failed),\n`reviewStarted` or `reviewCompleted` (the automated LLM judge started or\nfinished reviewing), `restartRecovered` (a host restart recovered this\napproval: either the host first resolves it `abort` and a re-ask comes\nas a new approval with a new `approvalId`, or it stays pending under\nthe same `approvalId` with refreshed choices), `alreadyTerminal`\n(recovery found it already decided) or `resolving` (a\n`computerUseTakeover` approval was marked resolving and waits for the\nlock broker; a decide now answers -32059). The set is open, so newer\nhosts may add kinds.",
"type": "string"
},
"reason": {
"description": "Why saving the policy rule failed, as human-readable text. Present only\nwhen `kind` is `policyPersistence` and `status` is `failed`.",
"type": "string"
},
"reparsed": {
"description": "A recovery detail: whether the command was re-parsed during recovery.\nPresent only when `kind` is `restartRecovered`.",
"type": "boolean"
},
"requirementId": {
"$ref": "#/$defs/ApprovalRequirementRef",
"description": "The stage requirement that was satisfied. Present only when `kind` is\n`stageResolved`."
},
"status": {
"$ref": "#/$defs/ApprovalPersistenceStatus",
"description": "Whether saving the policy rule succeeded or failed; present only when\n`kind` is `policyPersistence`. A failure does not undo the decision;\nonly the saved rule is missing."
}
},
"required": [
"kind"
],
"type": "object"
}