2026-02-01 23:38:43 -08:00
{
"$schema" : "http://json-schema.org/draft-07/schema#" ,
"definitions" : {
feat: add experimental additionalPermissions to v2 command execution approval requests (#12737)
This adds additionalPermissions to the app-server v2
item/commandExecution/requestApproval payload as an experimental field.
The field is now exposed on CommandExecutionRequestApprovalParams and is
populated from the existing core approval event when a command requests
additional sandbox permissions.
This PR also contains changes to make server requests to support
experiment API.
A real app server test client test:
sample payload with experimental flag off:
```
{
< "id": 0,
< "method": "item/commandExecution/requestApproval",
< "params": {
< "command": "/bin/zsh -lc 'mkdir -p ~/some/test && touch ~/some/test/file'",
< "commandActions": [
< {
< "command": "mkdir -p '~/some/test'",
< "type": "unknown"
< },
< {
< "command": "touch '~/some/test/file'",
< "type": "unknown"
< }
< ],
< "cwd": "/Users/celia/code/codex/codex-rs",
< "itemId": "call_QLp0LWkQ1XkU6VW9T2vUZFWB",
< "proposedExecpolicyAmendment": [
< "mkdir",
< "-p",
< "~/some/test"
< ],
< "reason": "Do you want to allow creating ~/some/test/file outside the workspace?",
< "threadId": "019c9309-e209-7d82-a01b-dcf9556a354d",
< "turnId": "019c9309-e27a-7f33-834f-6011e795c2d6"
< }
< }
```
with experimental flag on:
```
< {
< "id": 0,
< "method": "item/commandExecution/requestApproval",
< "params": {
< "additionalPermissions": {
< "fileSystem": null,
< "macos": null,
< "network": true
< },
< "command": "/bin/zsh -lc 'install -D /dev/null ~/some/test/file'",
< "commandActions": [
< {
< "command": "install -D /dev/null '~/some/test/file'",
< "type": "unknown"
< }
< ],
< "cwd": "/Users/celia/code/codex/codex-rs",
< "itemId": "call_K3U4b3dRbj3eMCqslmncbGsq",
< "proposedExecpolicyAmendment": [
< "install",
< "-D"
< ],
< "reason": "Do you want to allow creating the file at ~/some/test/file outside the workspace sandbox?",
< "threadId": "019c9303-3a8e-76e1-81bf-d67ac446d892",
< "turnId": "019c9303-3af1-7143-88a1-73132f771234"
< }
< }
```
2026-02-24 21:16:35 -08:00
"AdditionalFileSystemPermissions" : {
"properties" : {
"read" : {
"items" : {
"type" : "string"
} ,
"type" : [
"array" ,
"null"
]
} ,
"write" : {
"items" : {
"type" : "string"
} ,
"type" : [
"array" ,
"null"
]
}
} ,
"type" : "object"
} ,
"AdditionalMacOsPermissions" : {
"properties" : {
"accessibility" : {
"type" : [
"boolean" ,
"null"
]
} ,
"automations" : {
"anyOf" : [
{
"$ref" : "#/definitions/MacOsAutomationValue"
} ,
{
"type" : "null"
}
]
} ,
"calendar" : {
"type" : [
"boolean" ,
"null"
]
} ,
"preferences" : {
"anyOf" : [
{
"$ref" : "#/definitions/MacOsPreferencesValue"
} ,
{
"type" : "null"
}
]
}
} ,
"type" : "object"
} ,
"AdditionalPermissionProfile" : {
"properties" : {
"fileSystem" : {
"anyOf" : [
{
"$ref" : "#/definitions/AdditionalFileSystemPermissions"
} ,
{
"type" : "null"
}
]
} ,
"macos" : {
"anyOf" : [
{
"$ref" : "#/definitions/AdditionalMacOsPermissions"
} ,
{
"type" : "null"
}
]
} ,
"network" : {
"type" : [
"boolean" ,
"null"
]
}
} ,
"type" : "object"
} ,
2026-02-01 23:38:43 -08:00
"ApplyPatchApprovalParams" : {
"properties" : {
"callId" : {
2026-02-20 23:45:35 -08:00
"description" : "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent]." ,
2026-02-01 23:38:43 -08:00
"type" : "string"
} ,
"conversationId" : {
"$ref" : "#/definitions/ThreadId"
} ,
"fileChanges" : {
"additionalProperties" : {
"$ref" : "#/definitions/FileChange"
} ,
"type" : "object"
} ,
"grantRoot" : {
"description" : "When set, the agent is asking the user to allow writes under this root for the remainder of the session (unclear if this is honored today)." ,
"type" : [
"string" ,
"null"
]
} ,
"reason" : {
"description" : "Optional explanatory reason (e.g. request for extra write access)." ,
"type" : [
"string" ,
"null"
]
}
} ,
"required" : [
"callId" ,
"conversationId" ,
"fileChanges"
] ,
"type" : "object"
} ,
"ChatgptAuthTokensRefreshParams" : {
"properties" : {
"previousAccountId" : {
2026-02-09 20:48:58 -08:00
"description" : "Workspace/account identifier that Codex was previously using.\n\nClients that manage multiple accounts/workspaces can use this as a hint to refresh the token for the correct workspace.\n\nThis may be `null` when the prior auth state did not include a workspace identifier (`chatgpt_account_id`)." ,
2026-02-01 23:38:43 -08:00
"type" : [
"string" ,
"null"
]
} ,
"reason" : {
"$ref" : "#/definitions/ChatgptAuthTokensRefreshReason"
}
} ,
"required" : [
"reason"
] ,
"type" : "object"
} ,
"ChatgptAuthTokensRefreshReason" : {
"oneOf" : [
{
"description" : "Codex attempted a backend request and received `401 Unauthorized`." ,
"enum" : [
"unauthorized"
] ,
"type" : "string"
}
]
} ,
"CommandAction" : {
"oneOf" : [
{
"properties" : {
"command" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
} ,
"path" : {
"type" : "string"
} ,
"type" : {
"enum" : [
"read"
] ,
"title" : "ReadCommandActionType" ,
"type" : "string"
}
} ,
"required" : [
"command" ,
"name" ,
"path" ,
"type"
] ,
"title" : "ReadCommandAction" ,
"type" : "object"
} ,
{
"properties" : {
"command" : {
"type" : "string"
} ,
"path" : {
"type" : [
"string" ,
"null"
]
} ,
"type" : {
"enum" : [
"listFiles"
] ,
"title" : "ListFilesCommandActionType" ,
"type" : "string"
}
} ,
"required" : [
"command" ,
"type"
] ,
"title" : "ListFilesCommandAction" ,
"type" : "object"
} ,
{
"properties" : {
"command" : {
"type" : "string"
} ,
"path" : {
"type" : [
"string" ,
"null"
]
} ,
"query" : {
"type" : [
"string" ,
"null"
]
} ,
"type" : {
"enum" : [
"search"
] ,
"title" : "SearchCommandActionType" ,
"type" : "string"
}
} ,
"required" : [
"command" ,
"type"
] ,
"title" : "SearchCommandAction" ,
"type" : "object"
} ,
{
"properties" : {
"command" : {
"type" : "string"
} ,
"type" : {
"enum" : [
"unknown"
] ,
"title" : "UnknownCommandActionType" ,
"type" : "string"
}
} ,
"required" : [
"command" ,
"type"
] ,
"title" : "UnknownCommandAction" ,
"type" : "object"
}
]
} ,
"CommandExecutionRequestApprovalParams" : {
"properties" : {
2026-02-17 17:55:57 -08:00
"approvalId" : {
"description" : "Unique identifier for this specific approval callback.\n\nFor regular shell/unified_exec approvals, this is null.\n\nFor zsh-exec-bridge subcommand approvals, multiple callbacks can belong to one parent `itemId`, so `approvalId` is a distinct opaque callback id (a UUID) used to disambiguate routing." ,
"type" : [
"string" ,
"null"
]
} ,
2026-02-01 23:38:43 -08:00
"command" : {
"description" : "The command to be executed." ,
"type" : [
"string" ,
"null"
]
} ,
"commandActions" : {
"description" : "Best-effort parsed command actions for friendly display." ,
"items" : {
"$ref" : "#/definitions/CommandAction"
} ,
"type" : [
"array" ,
"null"
]
} ,
"cwd" : {
"description" : "The command's working directory." ,
"type" : [
"string" ,
"null"
]
} ,
"itemId" : {
"type" : "string"
} ,
2026-02-20 10:39:55 -08:00
"networkApprovalContext" : {
"anyOf" : [
{
"$ref" : "#/definitions/NetworkApprovalContext"
} ,
{
"type" : "null"
}
] ,
2026-02-24 23:06:19 -08:00
"description" : "Optional context for a managed-network approval prompt."
2026-02-20 10:39:55 -08:00
} ,
2026-02-01 23:38:43 -08:00
"proposedExecpolicyAmendment" : {
"description" : "Optional proposed execpolicy amendment to allow similar commands without prompting." ,
"items" : {
"type" : "string"
} ,
"type" : [
"array" ,
"null"
]
} ,
2026-02-24 23:06:19 -08:00
"proposedNetworkPolicyAmendments" : {
"description" : "Optional proposed network policy amendments (allow/deny host) for future requests." ,
"items" : {
"$ref" : "#/definitions/NetworkPolicyAmendment"
} ,
"type" : [
"array" ,
"null"
]
} ,
2026-02-01 23:38:43 -08:00
"reason" : {
"description" : "Optional explanatory reason (e.g. request for network access)." ,
"type" : [
"string" ,
"null"
]
} ,
"threadId" : {
"type" : "string"
} ,
"turnId" : {
"type" : "string"
}
} ,
"required" : [
"itemId" ,
"threadId" ,
"turnId"
] ,
"type" : "object"
} ,
"DynamicToolCallParams" : {
"properties" : {
"arguments" : true ,
"callId" : {
"type" : "string"
} ,
"threadId" : {
"type" : "string"
} ,
"tool" : {
"type" : "string"
} ,
"turnId" : {
"type" : "string"
}
} ,
"required" : [
"arguments" ,
"callId" ,
"threadId" ,
"tool" ,
"turnId"
] ,
"type" : "object"
} ,
"ExecCommandApprovalParams" : {
"properties" : {
2026-02-17 17:55:57 -08:00
"approvalId" : {
"description" : "Identifier for this specific approval callback." ,
"type" : [
"string" ,
"null"
]
} ,
2026-02-01 23:38:43 -08:00
"callId" : {
2026-02-20 23:45:35 -08:00
"description" : "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent]." ,
2026-02-01 23:38:43 -08:00
"type" : "string"
} ,
"command" : {
"items" : {
"type" : "string"
} ,
"type" : "array"
} ,
"conversationId" : {
"$ref" : "#/definitions/ThreadId"
} ,
"cwd" : {
"type" : "string"
} ,
"parsedCmd" : {
"items" : {
"$ref" : "#/definitions/ParsedCommand"
} ,
"type" : "array"
} ,
"reason" : {
"type" : [
"string" ,
"null"
]
}
} ,
"required" : [
"callId" ,
"command" ,
"conversationId" ,
"cwd" ,
"parsedCmd"
] ,
"type" : "object"
} ,
"FileChange" : {
"oneOf" : [
{
"properties" : {
"content" : {
"type" : "string"
} ,
"type" : {
"enum" : [
"add"
] ,
"title" : "AddFileChangeType" ,
"type" : "string"
}
} ,
"required" : [
"content" ,
"type"
] ,
"title" : "AddFileChange" ,
"type" : "object"
} ,
{
"properties" : {
"content" : {
"type" : "string"
} ,
"type" : {
"enum" : [
"delete"
] ,
"title" : "DeleteFileChangeType" ,
"type" : "string"
}
} ,
"required" : [
"content" ,
"type"
] ,
"title" : "DeleteFileChange" ,
"type" : "object"
} ,
{
"properties" : {
"move_path" : {
"type" : [
"string" ,
"null"
]
} ,
"type" : {
"enum" : [
"update"
] ,
"title" : "UpdateFileChangeType" ,
"type" : "string"
} ,
"unified_diff" : {
"type" : "string"
}
} ,
"required" : [
"type" ,
"unified_diff"
] ,
"title" : "UpdateFileChange" ,
"type" : "object"
}
]
} ,
"FileChangeRequestApprovalParams" : {
"properties" : {
"grantRoot" : {
"description" : "[UNSTABLE] When set, the agent is asking the user to allow writes under this root for the remainder of the session (unclear if this is honored today)." ,
"type" : [
"string" ,
"null"
]
} ,
"itemId" : {
"type" : "string"
} ,
"reason" : {
"description" : "Optional explanatory reason (e.g. request for extra write access)." ,
"type" : [
"string" ,
"null"
]
} ,
"threadId" : {
"type" : "string"
} ,
"turnId" : {
"type" : "string"
}
} ,
"required" : [
"itemId" ,
"threadId" ,
"turnId"
] ,
"type" : "object"
} ,
feat: add experimental additionalPermissions to v2 command execution approval requests (#12737)
This adds additionalPermissions to the app-server v2
item/commandExecution/requestApproval payload as an experimental field.
The field is now exposed on CommandExecutionRequestApprovalParams and is
populated from the existing core approval event when a command requests
additional sandbox permissions.
This PR also contains changes to make server requests to support
experiment API.
A real app server test client test:
sample payload with experimental flag off:
```
{
< "id": 0,
< "method": "item/commandExecution/requestApproval",
< "params": {
< "command": "/bin/zsh -lc 'mkdir -p ~/some/test && touch ~/some/test/file'",
< "commandActions": [
< {
< "command": "mkdir -p '~/some/test'",
< "type": "unknown"
< },
< {
< "command": "touch '~/some/test/file'",
< "type": "unknown"
< }
< ],
< "cwd": "/Users/celia/code/codex/codex-rs",
< "itemId": "call_QLp0LWkQ1XkU6VW9T2vUZFWB",
< "proposedExecpolicyAmendment": [
< "mkdir",
< "-p",
< "~/some/test"
< ],
< "reason": "Do you want to allow creating ~/some/test/file outside the workspace?",
< "threadId": "019c9309-e209-7d82-a01b-dcf9556a354d",
< "turnId": "019c9309-e27a-7f33-834f-6011e795c2d6"
< }
< }
```
with experimental flag on:
```
< {
< "id": 0,
< "method": "item/commandExecution/requestApproval",
< "params": {
< "additionalPermissions": {
< "fileSystem": null,
< "macos": null,
< "network": true
< },
< "command": "/bin/zsh -lc 'install -D /dev/null ~/some/test/file'",
< "commandActions": [
< {
< "command": "install -D /dev/null '~/some/test/file'",
< "type": "unknown"
< }
< ],
< "cwd": "/Users/celia/code/codex/codex-rs",
< "itemId": "call_K3U4b3dRbj3eMCqslmncbGsq",
< "proposedExecpolicyAmendment": [
< "install",
< "-D"
< ],
< "reason": "Do you want to allow creating the file at ~/some/test/file outside the workspace sandbox?",
< "threadId": "019c9303-3a8e-76e1-81bf-d67ac446d892",
< "turnId": "019c9303-3af1-7143-88a1-73132f771234"
< }
< }
```
2026-02-24 21:16:35 -08:00
"MacOsAutomationValue" : {
"anyOf" : [
{
"type" : "boolean"
} ,
{
"items" : {
"type" : "string"
} ,
"type" : "array"
}
]
} ,
"MacOsPreferencesValue" : {
"anyOf" : [
{
"type" : "boolean"
} ,
{
"type" : "string"
}
]
} ,
2026-02-20 10:39:55 -08:00
"NetworkApprovalContext" : {
"properties" : {
"host" : {
"type" : "string"
} ,
"protocol" : {
"$ref" : "#/definitions/NetworkApprovalProtocol"
}
} ,
"required" : [
"host" ,
"protocol"
] ,
"type" : "object"
} ,
"NetworkApprovalProtocol" : {
"enum" : [
"http" ,
"https" ,
"socks5Tcp" ,
"socks5Udp"
] ,
"type" : "string"
} ,
2026-02-24 23:06:19 -08:00
"NetworkPolicyAmendment" : {
"properties" : {
"action" : {
"$ref" : "#/definitions/NetworkPolicyRuleAction"
} ,
"host" : {
"type" : "string"
}
} ,
"required" : [
"action" ,
"host"
] ,
"type" : "object"
} ,
"NetworkPolicyRuleAction" : {
"enum" : [
"allow" ,
"deny"
] ,
"type" : "string"
} ,
2026-02-01 23:38:43 -08:00
"ParsedCommand" : {
"oneOf" : [
{
"properties" : {
"cmd" : {
"type" : "string"
} ,
"name" : {
"type" : "string"
} ,
"path" : {
"description" : "(Best effort) Path to the file being read by the command. When possible, this is an absolute path, though when relative, it should be resolved against the `cwd`` that will be used to run the command to derive the absolute path." ,
"type" : "string"
} ,
"type" : {
"enum" : [
"read"
] ,
"title" : "ReadParsedCommandType" ,
"type" : "string"
}
} ,
"required" : [
"cmd" ,
"name" ,
"path" ,
"type"
] ,
"title" : "ReadParsedCommand" ,
"type" : "object"
} ,
{
"properties" : {
"cmd" : {
"type" : "string"
} ,
"path" : {
"type" : [
"string" ,
"null"
]
} ,
"type" : {
"enum" : [
"list_files"
] ,
"title" : "ListFilesParsedCommandType" ,
"type" : "string"
}
} ,
"required" : [
"cmd" ,
"type"
] ,
"title" : "ListFilesParsedCommand" ,
"type" : "object"
} ,
{
"properties" : {
"cmd" : {
"type" : "string"
} ,
"path" : {
"type" : [
"string" ,
"null"
]
} ,
"query" : {
"type" : [
"string" ,
"null"
]
} ,
"type" : {
"enum" : [
"search"
] ,
"title" : "SearchParsedCommandType" ,
"type" : "string"
}
} ,
"required" : [
"cmd" ,
"type"
] ,
"title" : "SearchParsedCommand" ,
"type" : "object"
} ,
{
"properties" : {
"cmd" : {
"type" : "string"
} ,
"type" : {
"enum" : [
"unknown"
] ,
"title" : "UnknownParsedCommandType" ,
"type" : "string"
}
} ,
"required" : [
"cmd" ,
"type"
] ,
"title" : "UnknownParsedCommand" ,
"type" : "object"
}
]
} ,
"RequestId" : {
"anyOf" : [
{
"type" : "string"
} ,
{
"format" : "int64" ,
"type" : "integer"
}
]
} ,
2026-02-23 22:28:58 -08:00
"SkillRequestApprovalParams" : {
"properties" : {
"itemId" : {
"type" : "string"
} ,
"skillName" : {
"type" : "string"
}
} ,
"required" : [
"itemId" ,
"skillName"
] ,
"type" : "object"
} ,
2026-02-01 23:38:43 -08:00
"ThreadId" : {
"type" : "string"
} ,
"ToolRequestUserInputOption" : {
"description" : "EXPERIMENTAL. Defines a single selectable option for request_user_input." ,
"properties" : {
"description" : {
"type" : "string"
} ,
"label" : {
"type" : "string"
}
} ,
"required" : [
"description" ,
"label"
] ,
"type" : "object"
} ,
"ToolRequestUserInputParams" : {
"description" : "EXPERIMENTAL. Params sent with a request_user_input event." ,
"properties" : {
"itemId" : {
"type" : "string"
} ,
"questions" : {
"items" : {
"$ref" : "#/definitions/ToolRequestUserInputQuestion"
} ,
"type" : "array"
} ,
"threadId" : {
"type" : "string"
} ,
"turnId" : {
"type" : "string"
}
} ,
"required" : [
"itemId" ,
"questions" ,
"threadId" ,
"turnId"
] ,
"type" : "object"
} ,
"ToolRequestUserInputQuestion" : {
"description" : "EXPERIMENTAL. Represents one request_user_input question and its required options." ,
"properties" : {
"header" : {
"type" : "string"
} ,
"id" : {
"type" : "string"
} ,
"isOther" : {
"default" : false ,
"type" : "boolean"
} ,
"isSecret" : {
"default" : false ,
"type" : "boolean"
} ,
"options" : {
"items" : {
"$ref" : "#/definitions/ToolRequestUserInputOption"
} ,
"type" : [
"array" ,
"null"
]
} ,
"question" : {
"type" : "string"
}
} ,
"required" : [
"header" ,
"id" ,
"question"
] ,
"type" : "object"
}
} ,
"description" : "Request initiated from the server and sent to the client." ,
"oneOf" : [
{
"description" : "NEW APIs Sent when approval is requested for a specific command execution. This request is used for Turns started via turn/start." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"item/commandExecution/requestApproval"
] ,
"title" : "Item/commandExecution/requestApprovalRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/CommandExecutionRequestApprovalParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Item/commandExecution/requestApprovalRequest" ,
"type" : "object"
} ,
{
"description" : "Sent when approval is requested for a specific file change. This request is used for Turns started via turn/start." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"item/fileChange/requestApproval"
] ,
"title" : "Item/fileChange/requestApprovalRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/FileChangeRequestApprovalParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Item/fileChange/requestApprovalRequest" ,
"type" : "object"
} ,
{
"description" : "EXPERIMENTAL - Request input from the user for a tool call." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"item/tool/requestUserInput"
] ,
"title" : "Item/tool/requestUserInputRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/ToolRequestUserInputParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Item/tool/requestUserInputRequest" ,
"type" : "object"
} ,
2026-02-23 22:28:58 -08:00
{
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"skill/requestApproval"
] ,
"title" : "Skill/requestApprovalRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/SkillRequestApprovalParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Skill/requestApprovalRequest" ,
"type" : "object"
} ,
2026-02-01 23:38:43 -08:00
{
"description" : "Execute a dynamic tool call on the client." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"item/tool/call"
] ,
"title" : "Item/tool/callRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/DynamicToolCallParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Item/tool/callRequest" ,
"type" : "object"
} ,
{
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"account/chatgptAuthTokens/refresh"
] ,
"title" : "Account/chatgptAuthTokens/refreshRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/ChatgptAuthTokensRefreshParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "Account/chatgptAuthTokens/refreshRequest" ,
"type" : "object"
} ,
{
"description" : "DEPRECATED APIs below Request to approve a patch. This request is used for Turns started via the legacy APIs (i.e. SendUserTurn, SendUserMessage)." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"applyPatchApproval"
] ,
"title" : "ApplyPatchApprovalRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/ApplyPatchApprovalParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "ApplyPatchApprovalRequest" ,
"type" : "object"
} ,
{
"description" : "Request to exec a command. This request is used for Turns started via the legacy APIs (i.e. SendUserTurn, SendUserMessage)." ,
"properties" : {
"id" : {
"$ref" : "#/definitions/RequestId"
} ,
"method" : {
"enum" : [
"execCommandApproval"
] ,
"title" : "ExecCommandApprovalRequestMethod" ,
"type" : "string"
} ,
"params" : {
"$ref" : "#/definitions/ExecCommandApprovalParams"
}
} ,
"required" : [
"id" ,
"method" ,
"params"
] ,
"title" : "ExecCommandApprovalRequest" ,
"type" : "object"
}
] ,
"title" : "ServerRequest"
}