ApprovalSubject
Open approval subject union. Unknown kinds are rendered generically and never auto-approved by clients.
Fields and variants
Section titled “Fields and variants”accesscommandholderhostkindoriginpathportprotocolstagestargettoolNameworkspaceRoot
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"}