{
  "id": "codex",
  "name": "Codex",
  "description": "Codex app-server harness and Codex-managed GPT model catalog.",
  "providers": ["codex"],
  "contracts": {
    "mediaUnderstandingProviders": ["codex"],
    "migrationProviders": ["codex"]
  },
  "mediaUnderstandingProviderMetadata": {
    "codex": {
      "capabilities": ["image"],
      "defaultModels": {
        "image": "gpt-5.5"
      }
    }
  },
  "providerDiscoveryEntry": "./provider-discovery.ts",
  "syntheticAuthRefs": ["codex"],
  "nonSecretAuthMarkers": ["codex-app-server"],
  "activation": {
    "onStartup": false,
    "onAgentHarnesses": ["codex"]
  },
  "commandAliases": [
    {
      "name": "codex",
      "kind": "runtime-slash",
      "cliCommand": "plugins"
    }
  ],
  "configSchema": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "codexDynamicToolsProfile": {
        "type": "string",
        "enum": ["native-first", "openclaw-compat"],
        "default": "native-first"
      },
      "codexDynamicToolsExclude": {
        "type": "array",
        "items": { "type": "string" },
        "default": []
      },
      "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" }
          },
          "clearEnv": {
            "type": "array",
            "items": { "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": {
    "codexDynamicToolsProfile": {
      "label": "Dynamic Tools Profile",
      "help": "Select which OpenClaw dynamic tools are exposed to Codex app-server. native-first omits tools Codex already owns.",
      "advanced": true
    },
    "codexDynamicToolsExclude": {
      "label": "Dynamic Tool Excludes",
      "help": "Additional OpenClaw dynamic tool names to omit from Codex app-server turns.",
      "advanced": true
    },
    "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.clearEnv": {
      "label": "Clear Environment",
      "help": "Environment variable names removed from the spawned stdio app-server process after overrides are applied.",
      "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
    }
  }
}
