{
  "id": "codex",
  "name": "Codex",
  "description": "Codex app-server harness and Codex-managed GPT model catalog.",
  "providers": [
    "codex"
  ],
  "contracts": {
    "mediaUnderstandingProviders": [
      "codex"
    ]
  },
  "mediaUnderstandingProviderMetadata": {
    "codex": {
      "capabilities": [
        "image"
      ],
      "defaultModels": {
        "image": "gpt-5.5"
      }
    }
  },
  "providerDiscoveryEntry": "./provider-discovery.ts",
  "syntheticAuthRefs": [
    "codex"
  ],
  "nonSecretAuthMarkers": [
    "codex-app-server"
  ],
  "activation": {
    "onAgentHarnesses": [
      "codex"
    ]
  },
  "commandAliases": [
    {
      "name": "codex",
      "kind": "runtime-slash",
      "cliCommand": "plugins"
    }
  ],
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "discovery": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean"
          },
          "timeoutMs": {
            "type": "number",
            "minimum": 1,
            "default": 2500
          }
        }
      },
      "computerUse": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "type": "boolean",
            "default": false
          },
          "autoInstall": {
            "type": "boolean",
            "default": false
          },
          "marketplaceDiscoveryTimeoutMs": {
            "type": "number",
            "minimum": 1,
            "default": 60000
          },
          "marketplaceSource": {
            "type": "string"
          },
          "marketplacePath": {
            "type": "string"
          },
          "marketplaceName": {
            "type": "string"
          },
          "pluginName": {
            "type": "string",
            "default": "computer-use"
          },
          "mcpServerName": {
            "type": "string",
            "default": "computer-use"
          }
        }
      },
      "appServer": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "mode": {
            "type": "string",
            "enum": [
              "yolo",
              "guardian"
            ],
            "default": "yolo"
          },
          "transport": {
            "type": "string",
            "enum": [
              "stdio",
              "websocket"
            ],
            "default": "stdio"
          },
          "command": {
            "type": "string"
          },
          "args": {
            "oneOf": [
              {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              {
                "type": "string"
              }
            ]
          },
          "url": {
            "type": "string"
          },
          "authToken": {
            "type": "string"
          },
          "headers": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "requestTimeoutMs": {
            "type": "number",
            "minimum": 1,
            "default": 60000
          },
          "approvalPolicy": {
            "type": "string",
            "enum": [
              "never",
              "on-request",
              "on-failure",
              "untrusted"
            ]
          },
          "sandbox": {
            "type": "string",
            "enum": [
              "read-only",
              "workspace-write",
              "danger-full-access"
            ]
          },
          "approvalsReviewer": {
            "type": "string",
            "enum": [
              "user",
              "auto_review",
              "guardian_subagent"
            ]
          },
          "serviceTier": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "fast",
              "flex",
              null
            ]
          },
          "defaultWorkspaceDir": {
            "type": "string"
          }
        }
      }
    }
  },
  "uiHints": {
    "discovery": {
      "label": "Model Discovery",
      "help": "Plugin-owned controls for discovering Codex app-server models."
    },
    "discovery.enabled": {
      "label": "Enable Discovery",
      "help": "When false, OpenClaw keeps the Codex harness available but uses the bundled fallback model list."
    },
    "discovery.timeoutMs": {
      "label": "Discovery Timeout",
      "help": "Maximum time to wait for Codex app-server model discovery before falling back to the bundled model list.",
      "advanced": true
    },
    "computerUse": {
      "label": "Computer Use",
      "help": "Controls Codex app-server setup for the Computer Use plugin.",
      "advanced": true
    },
    "computerUse.enabled": {
      "label": "Enable Computer Use",
      "help": "When true, Codex-mode turns require the configured Computer Use MCP server to be available.",
      "advanced": true
    },
    "computerUse.autoInstall": {
      "label": "Auto Install",
      "help": "Install the configured Computer Use plugin when Codex-mode turns start.",
      "advanced": true
    },
    "computerUse.marketplaceDiscoveryTimeoutMs": {
      "label": "Marketplace Discovery Timeout",
      "help": "Maximum time to wait for Codex app-server to finish loading marketplaces during Computer Use install.",
      "advanced": true
    },
    "computerUse.marketplaceSource": {
      "label": "Marketplace Source",
      "help": "Optional Codex marketplace source to add before installing Computer Use.",
      "advanced": true
    },
    "computerUse.marketplacePath": {
      "label": "Marketplace Path",
      "help": "Optional local Codex marketplace file path containing the Computer Use plugin.",
      "advanced": true
    },
    "computerUse.marketplaceName": {
      "label": "Marketplace Name",
      "help": "Optional registered Codex marketplace name containing the Computer Use plugin.",
      "advanced": true
    },
    "computerUse.pluginName": {
      "label": "Plugin Name",
      "help": "Codex marketplace plugin name for Computer Use.",
      "advanced": true
    },
    "computerUse.mcpServerName": {
      "label": "MCP Server Name",
      "help": "MCP server name exposed by the Computer Use plugin.",
      "advanced": true
    },
    "appServer": {
      "label": "App Server",
      "help": "Runtime controls for connecting to Codex app-server.",
      "advanced": true
    },
    "appServer.mode": {
      "label": "Execution Mode",
      "help": "Use yolo for unchained local execution or guardian for Codex guardian-reviewed approvals.",
      "advanced": true
    },
    "appServer.transport": {
      "label": "Transport",
      "help": "Use stdio to spawn Codex locally, or websocket to connect to an already-running app-server.",
      "advanced": true
    },
    "appServer.command": {
      "label": "Command",
      "help": "Executable used for stdio transport. Leave unset to use OpenClaw's managed Codex binary.",
      "advanced": true
    },
    "appServer.args": {
      "label": "Arguments",
      "help": "Arguments used for stdio transport. Defaults to app-server --listen stdio://.",
      "advanced": true
    },
    "appServer.url": {
      "label": "WebSocket URL",
      "help": "Codex app-server WebSocket URL when transport is websocket.",
      "advanced": true
    },
    "appServer.authToken": {
      "label": "Auth Token",
      "help": "Bearer token sent to the WebSocket app-server.",
      "sensitive": true,
      "advanced": true
    },
    "appServer.headers": {
      "label": "Headers",
      "help": "Additional headers sent to the WebSocket app-server.",
      "advanced": true
    },
    "appServer.requestTimeoutMs": {
      "label": "Request Timeout",
      "help": "Maximum time to wait for Codex app-server control-plane requests.",
      "advanced": true
    },
    "appServer.approvalPolicy": {
      "label": "Approval Policy",
      "help": "Codex native approval policy sent to thread start, resume, and turns.",
      "advanced": true
    },
    "appServer.sandbox": {
      "label": "Sandbox",
      "help": "Codex native sandbox mode sent to thread start and resume.",
      "advanced": true
    },
    "appServer.approvalsReviewer": {
      "label": "Approvals Reviewer",
      "help": "Use user approvals or Codex auto_review for native app-server approvals. guardian_subagent remains accepted for compatibility.",
      "advanced": true
    },
    "appServer.serviceTier": {
      "label": "Service Tier",
      "help": "Optional Codex app-server service tier. Use fast, flex, or null.",
      "advanced": true
    },
    "appServer.defaultWorkspaceDir": {
      "label": "Default Workspace",
      "help": "Workspace used by /codex bind when --cwd is omitted.",
      "advanced": true
    }
  }
}
