ApprovalResolvedParams
approval/resolved params: the first durable terminal decision.
Fields and variants
Section titled “Fields and variants”abortReasonamendmentapprovalIdbyClient— ExperimentaldecidedAtdecidedByCommandIddecisionitemIdpolicyResultresolvedBysessionIdsourceRangestageEvidencesubagentOriginturnIdviewCursor
Source
schema/msp/experimental/msp.schema.json#/types/ApprovalResolvedParams
{ "description": "`approval/resolved` params: the first durable terminal decision.", "properties": { "abortReason": { "description": "Why an `abort` was not a cancel, when the host knows: `lockEpochEnded |\nbrokerUnavailable`, an open vocabulary. Clients render an\nunknown value like an absent one.", "type": "string" }, "amendment": { "$ref": "#/$defs/ApprovalAmendment", "description": "The policy rule the decision created. Present only when the decision\ncreated one." }, "approvalId": { "description": "The approval that was decided.", "type": "string" }, "byClient": { "$ref": "#/$defs/ClientInfo", "description": "The client whose `approval/decide` won (ADR 73001 D4): absent\non policy, judge and interrupt terminals, for a connection with no\nrecorded handshake, and on older logs.", "x-msp-descriptor": "approval/resolved.byClient", "x-msp-stability": "experimental" }, "decidedAt": { "description": "The decision time as RFC3339, projected from the durable\n`DecisionApplied` record's own stamp (ADR 45450 D3): optional on the\nwire so decoders tolerate its absence, always populated by current\nhosts.", "type": "string" }, "decidedByCommandId": { "description": "The `commandId` of the `approval/decide` command that won. Absent when\nno such command made the decision, for example a policy or LLM judge\ndecision.", "type": "string" }, "decision": { "$ref": "#/$defs/ApprovalDecision", "description": "The final decision." }, "itemId": { "description": "The `toolCall` view item this approval was holding.", "type": "string" }, "policyResult": { "$ref": "#/$defs/ApprovalPolicyResult", "description": "Whether the final decision lets the action run (`allow`) or blocks it\n(`deny`)." }, "resolvedBy": { "$ref": "#/$defs/ApprovalResolvedBy", "description": "Who or what made the decision: `user`, `policy` or `llmJudge`." }, "sessionId": { "description": "The owning session.", "type": "string" }, "sourceRange": { "$ref": "#/$defs/SourceRange", "description": "The stored records this event was folded from: an opaque token clients\nmust not interpret." }, "stageEvidence": { "description": "For a `shell` approval, how each stage was resolved when the decision\nbecame final. Empty for other subject kinds, and it can be empty for\n`shell` too.", "items": { "$ref": "#/$defs/ApprovalStageEvidence" }, "type": "array" }, "subagentOrigin": { "$ref": "#/$defs/ApprovalSubagentOrigin", "description": "Present only for a child (native subagent) approval projected onto\nthe parent session's plane (ADR 36182); parent-own approvals omit it." }, "turnId": { "description": "The turn whose tool call this approval was holding.", "type": "string" }, "viewCursor": { "description": "This event's view cursor: opaque, and strictly increasing within the\nsession.", "type": "string" } }, "required": [ "approvalId", "decision", "itemId", "policyResult", "resolvedBy", "sessionId", "sourceRange", "stageEvidence", "turnId", "viewCursor" ], "type": "object"}