{ "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "AbsolutePathBuf": { "description": "A path that is guaranteed to be absolute and normalized (though it is not guaranteed to be canonicalized or exist on the filesystem).\n\nIMPORTANT: When deserializing an `AbsolutePathBuf`, a base path must be set using [AbsolutePathBufGuard::new]. If no base path is set, the deserialization will fail unless the path being deserialized is already absolute.", "type": "string" }, "AdditionalFileSystemPermissions": { "properties": { "read": { "items": { "$ref": "#/definitions/AbsolutePathBuf" }, "type": [ "array", "null" ] }, "write": { "items": { "$ref": "#/definitions/AbsolutePathBuf" }, "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" }, "ApplyPatchApprovalParams": { "properties": { "callId": { "description": "Use to correlate this with [codex_protocol::protocol::PatchApplyBeginEvent] and [codex_protocol::protocol::PatchApplyEndEvent].", "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": { "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`).", "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" } ] }, "CommandExecutionApprovalDecision": { "oneOf": [ { "description": "User approved the command.", "enum": [ "accept" ], "type": "string" }, { "description": "User approved the command and future prompts in the same session-scoped approval cache should run without prompting.", "enum": [ "acceptForSession" ], "type": "string" }, { "additionalProperties": false, "description": "User approved the command, and wants to apply the proposed execpolicy amendment so future matching commands can run without prompting.", "properties": { "acceptWithExecpolicyAmendment": { "properties": { "execpolicy_amendment": { "items": { "type": "string" }, "type": "array" } }, "required": [ "execpolicy_amendment" ], "type": "object" } }, "required": [ "acceptWithExecpolicyAmendment" ], "title": "AcceptWithExecpolicyAmendmentCommandExecutionApprovalDecision", "type": "object" }, { "additionalProperties": false, "description": "User chose a persistent network policy rule (allow/deny) for this host.", "properties": { "applyNetworkPolicyAmendment": { "properties": { "network_policy_amendment": { "$ref": "#/definitions/NetworkPolicyAmendment" } }, "required": [ "network_policy_amendment" ], "type": "object" } }, "required": [ "applyNetworkPolicyAmendment" ], "title": "ApplyNetworkPolicyAmendmentCommandExecutionApprovalDecision", "type": "object" }, { "description": "User denied the command. The agent will continue the turn.", "enum": [ "decline" ], "type": "string" }, { "description": "User denied the command. The turn will also be immediately interrupted.", "enum": [ "cancel" ], "type": "string" } ] }, "CommandExecutionRequestApprovalParams": { "properties": { "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" ] }, "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" }, "networkApprovalContext": { "anyOf": [ { "$ref": "#/definitions/NetworkApprovalContext" }, { "type": "null" } ], "description": "Optional context for a managed-network approval prompt." }, "proposedExecpolicyAmendment": { "description": "Optional proposed execpolicy amendment to allow similar commands without prompting.", "items": { "type": "string" }, "type": [ "array", "null" ] }, "proposedNetworkPolicyAmendments": { "description": "Optional proposed network policy amendments (allow/deny host) for future requests.", "items": { "$ref": "#/definitions/NetworkPolicyAmendment" }, "type": [ "array", "null" ] }, "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": { "approvalId": { "description": "Identifier for this specific approval callback.", "type": [ "string", "null" ] }, "callId": { "description": "Use to correlate this with [codex_protocol::protocol::ExecCommandBeginEvent] and [codex_protocol::protocol::ExecCommandEndEvent].", "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" }, "MacOsAutomationValue": { "anyOf": [ { "type": "boolean" }, { "items": { "type": "string" }, "type": "array" } ] }, "MacOsPreferencesValue": { "anyOf": [ { "type": "boolean" }, { "type": "string" } ] }, "NetworkApprovalContext": { "properties": { "host": { "type": "string" }, "protocol": { "$ref": "#/definitions/NetworkApprovalProtocol" } }, "required": [ "host", "protocol" ], "type": "object" }, "NetworkApprovalProtocol": { "enum": [ "http", "https", "socks5Tcp", "socks5Udp" ], "type": "string" }, "NetworkPolicyAmendment": { "properties": { "action": { "$ref": "#/definitions/NetworkPolicyRuleAction" }, "host": { "type": "string" } }, "required": [ "action", "host" ], "type": "object" }, "NetworkPolicyRuleAction": { "enum": [ "allow", "deny" ], "type": "string" }, "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" } ] }, "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" }, { "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" }