Skip to content
Developer Preview

ApprovalSubject

Open approval subject union. Unknown kinds are rendered generically and never auto-approved by clients.

  • access
  • command
  • holder
  • host
  • kind
  • origin
  • path
  • port
  • protocol
  • stages
  • target
  • toolName
  • workspaceRoot
Source

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

{
"description": "Open approval subject union. Unknown kinds are rendered generically and\nnever auto-approved by clients.",
"properties": {
"access": {
"description": "The access asked for: `read` or `write` for `fileAccess`, `control` for\n`process`. Absent for other kinds.",
"type": "string"
},
"command": {
"description": "The full raw shell command. Present when `kind` is `shell`.",
"type": "string"
},
"holder": {
"$ref": "#/$defs/ComputerUseLockHolder",
"description": "The session that holds the Computer Use lock now, by label and times\nonly. Present when `kind` is `computerUseTakeover`."
},
"host": {
"description": "The network host the tool wants to reach. Present when `kind` is\n`network`.",
"type": "string"
},
"kind": {
"description": "Open discriminator: `shell | fileAccess | network | unixSocket | process | tool | computerUseTakeover`.",
"type": "string"
},
"origin": {
"$ref": "#/$defs/ApprovalOrigin",
"description": "What triggered the action (a shell command or a URL), for display only\nand untrusted. It is not sent on `shell` subjects, and policy rules\nnever match on it."
},
"path": {
"description": "For `fileAccess`, the path the tool asked to access, normalized by the\nhost (workspace-relative inside the workspace); for\n`unixSocket`, the exact resolved socket path, sent unescaped, so escape\nit before display.",
"type": "string"
},
"port": {
"description": "The network port, present only on `network` subjects that name one. A\nsession grant made from a subject without a port covers every port.",
"type": "integer"
},
"protocol": {
"description": "The network protocol, for example `https`. Present only on `network`\nsubjects that name one.",
"type": "string"
},
"stages": {
"description": "The shell command split into stages that are approved separately (the\ncommands of a pipeline or command list), in order. Present on `shell`\nsubjects; it may be empty.",
"items": {
"$ref": "#/$defs/ApprovalStage"
},
"type": "array"
},
"target": {
"description": "Display text naming the process the tool wants to control. Present when\n`kind` is `process`.",
"type": "string"
},
"toolName": {
"description": "The tool asking for the action. Present for every kind except `shell`.",
"type": "string"
},
"workspaceRoot": {
"description": "The canonical workspace root the shell command runs in, present on\n`shell` subjects when the host knows it. Saved command-prefix rules\napply only within this root.",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
}