mirror of
https://github.com/openai/codex.git
synced 2026-03-05 21:45:28 +03:00
Core tool-calling for image-gen, handles requesting and receiving logic for images using response API
2251 lines
67 KiB
JSON
2251 lines
67 KiB
JSON
{
|
||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||
"additionalProperties": false,
|
||
"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"
|
||
},
|
||
"AgentRoleToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"config_file": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Path to a role-specific config layer. Relative paths are resolved relative to the `config.toml` that defines them."
|
||
},
|
||
"description": {
|
||
"description": "Human-facing role documentation used in spawn tool guidance.",
|
||
"type": "string"
|
||
},
|
||
"nickname_candidates": {
|
||
"description": "Candidate nicknames for agents spawned with this role.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AgentsToml": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/AgentRoleToml"
|
||
},
|
||
"properties": {
|
||
"job_max_runtime_seconds": {
|
||
"description": "Default maximum runtime in seconds for agent job workers.",
|
||
"format": "uint64",
|
||
"minimum": 1.0,
|
||
"type": "integer"
|
||
},
|
||
"max_depth": {
|
||
"description": "Maximum nesting depth allowed for spawned agent threads. Root sessions start at depth 0.",
|
||
"format": "int32",
|
||
"minimum": 1.0,
|
||
"type": "integer"
|
||
},
|
||
"max_threads": {
|
||
"description": "Maximum number of agent threads that can be open concurrently. When unset, no limit is enforced.",
|
||
"format": "uint",
|
||
"minimum": 1.0,
|
||
"type": "integer"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AltScreenMode": {
|
||
"description": "Controls whether the TUI uses the terminal's alternate screen buffer.\n\n**Background:** The alternate screen buffer provides a cleaner fullscreen experience without polluting the terminal's scrollback history. However, it conflicts with terminal multiplexers like Zellij that strictly follow the xterm specification, which defines that alternate screen buffers should not have scrollback.\n\n**Zellij's behavior:** Zellij intentionally disables scrollback in alternate screen mode (see https://github.com/zellij-org/zellij/pull/1032) to comply with the xterm spec. This is by design and not configurable in Zellij—there is no option to enable scrollback in alternate screen mode.\n\n**Solution:** This setting provides a pragmatic workaround: - `auto` (default): Automatically detect the terminal multiplexer. If running in Zellij, disable alternate screen to preserve scrollback. Enable it everywhere else. - `always`: Always use alternate screen mode (original behavior before this fix). - `never`: Never use alternate screen mode. Runs in inline mode, preserving scrollback in all multiplexers.\n\nThe CLI flag `--no-alt-screen` can override this setting at runtime.",
|
||
"oneOf": [
|
||
{
|
||
"description": "Auto-detect: disable alternate screen in Zellij, enable elsewhere.",
|
||
"enum": [
|
||
"auto"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Always use alternate screen (original behavior).",
|
||
"enum": [
|
||
"always"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Never use alternate screen (inline mode only).",
|
||
"enum": [
|
||
"never"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"AnalyticsConfigToml": {
|
||
"additionalProperties": false,
|
||
"description": "Analytics settings loaded from config.toml. Fields are optional so we can apply defaults.",
|
||
"properties": {
|
||
"enabled": {
|
||
"description": "When `false`, disables analytics across Codex product surfaces in this profile.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AppConfig": {
|
||
"additionalProperties": false,
|
||
"description": "Config values for a single app/connector.",
|
||
"properties": {
|
||
"default_tools_approval_mode": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AppToolApproval"
|
||
}
|
||
],
|
||
"description": "Approval mode for tools in this app unless a tool override exists."
|
||
},
|
||
"default_tools_enabled": {
|
||
"description": "Whether tools are enabled by default for this app.",
|
||
"type": "boolean"
|
||
},
|
||
"destructive_enabled": {
|
||
"description": "Whether tools with `destructive_hint = true` are allowed for this app.",
|
||
"type": "boolean"
|
||
},
|
||
"enabled": {
|
||
"default": true,
|
||
"description": "When `false`, Codex does not surface this app.",
|
||
"type": "boolean"
|
||
},
|
||
"open_world_enabled": {
|
||
"description": "Whether tools with `open_world_hint = true` are allowed for this app.",
|
||
"type": "boolean"
|
||
},
|
||
"tools": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AppToolsConfig"
|
||
}
|
||
],
|
||
"description": "Per-tool settings for this app."
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AppToolApproval": {
|
||
"enum": [
|
||
"auto",
|
||
"prompt",
|
||
"approve"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"AppToolConfig": {
|
||
"additionalProperties": false,
|
||
"description": "Per-tool settings for a single app tool.",
|
||
"properties": {
|
||
"approval_mode": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AppToolApproval"
|
||
}
|
||
],
|
||
"description": "Approval mode for this tool."
|
||
},
|
||
"enabled": {
|
||
"description": "Whether this tool is enabled. `Some(true)` explicitly allows this tool.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AppToolsConfig": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/AppToolConfig"
|
||
},
|
||
"description": "Tool settings for a single app.",
|
||
"type": "object"
|
||
},
|
||
"AppsConfigToml": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/AppConfig"
|
||
},
|
||
"description": "App/connector settings loaded from `config.toml`.",
|
||
"properties": {
|
||
"_default": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AppsDefaultConfig"
|
||
}
|
||
],
|
||
"description": "Default settings for all apps."
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AppsDefaultConfig": {
|
||
"additionalProperties": false,
|
||
"description": "Default settings that apply to all apps.",
|
||
"properties": {
|
||
"destructive_enabled": {
|
||
"description": "Whether tools with `destructive_hint = true` are allowed by default.",
|
||
"type": "boolean"
|
||
},
|
||
"enabled": {
|
||
"default": true,
|
||
"description": "When `false`, apps are disabled unless overridden by per-app settings.",
|
||
"type": "boolean"
|
||
},
|
||
"open_world_enabled": {
|
||
"description": "Whether tools with `open_world_hint = true` are allowed by default.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"AskForApproval": {
|
||
"description": "Determines the conditions under which the user is consulted to approve running the command proposed by Codex.",
|
||
"oneOf": [
|
||
{
|
||
"description": "Under this policy, only \"known safe\" commands—as determined by `is_safe_command()`—that **only read files** are auto‑approved. Everything else will ask the user to approve.",
|
||
"enum": [
|
||
"untrusted"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "DEPRECATED: *All* commands are auto‑approved, but they are expected to run inside a sandbox where network access is disabled and writes are confined to a specific set of paths. If the command fails, it will be escalated to the user to approve execution without a sandbox. Prefer `OnRequest` for interactive runs or `Never` for non-interactive runs.",
|
||
"enum": [
|
||
"on-failure"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "The model decides when to ask the user for approval.",
|
||
"enum": [
|
||
"on-request"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"additionalProperties": false,
|
||
"description": "Fine-grained rejection controls for approval prompts.\n\nWhen a field is `true`, prompts of that category are automatically rejected instead of shown to the user.",
|
||
"properties": {
|
||
"reject": {
|
||
"$ref": "#/definitions/RejectConfig"
|
||
}
|
||
},
|
||
"required": [
|
||
"reject"
|
||
],
|
||
"type": "object"
|
||
},
|
||
{
|
||
"description": "Never ask the user to approve commands. Failures are immediately returned to the model, and never escalated to the user for approval.",
|
||
"enum": [
|
||
"never"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"AuthCredentialsStoreMode": {
|
||
"description": "Determine where Codex should store CLI auth credentials.",
|
||
"oneOf": [
|
||
{
|
||
"description": "Persist credentials in CODEX_HOME/auth.json.",
|
||
"enum": [
|
||
"file"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Persist credentials in the keyring. Fail if unavailable.",
|
||
"enum": [
|
||
"keyring"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Use keyring when available; otherwise, fall back to a file in CODEX_HOME.",
|
||
"enum": [
|
||
"auto"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Store credentials in memory only for the current process.",
|
||
"enum": [
|
||
"ephemeral"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"ConfigProfile": {
|
||
"additionalProperties": false,
|
||
"description": "Collection of common configuration options that a user can define as a unit in `config.toml`.",
|
||
"properties": {
|
||
"analytics": {
|
||
"$ref": "#/definitions/AnalyticsConfigToml"
|
||
},
|
||
"approval_policy": {
|
||
"$ref": "#/definitions/AskForApproval"
|
||
},
|
||
"chatgpt_base_url": {
|
||
"type": "string"
|
||
},
|
||
"experimental_compact_prompt_file": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"experimental_use_freeform_apply_patch": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_unified_exec_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"features": {
|
||
"additionalProperties": false,
|
||
"default": null,
|
||
"description": "Optional feature toggles scoped to this profile.",
|
||
"properties": {
|
||
"apply_patch_freeform": {
|
||
"type": "boolean"
|
||
},
|
||
"apps": {
|
||
"type": "boolean"
|
||
},
|
||
"apps_mcp_gateway": {
|
||
"type": "boolean"
|
||
},
|
||
"artifact": {
|
||
"type": "boolean"
|
||
},
|
||
"child_agents_md": {
|
||
"type": "boolean"
|
||
},
|
||
"codex_git_commit": {
|
||
"type": "boolean"
|
||
},
|
||
"collab": {
|
||
"type": "boolean"
|
||
},
|
||
"collaboration_modes": {
|
||
"type": "boolean"
|
||
},
|
||
"connectors": {
|
||
"type": "boolean"
|
||
},
|
||
"default_mode_request_user_input": {
|
||
"type": "boolean"
|
||
},
|
||
"elevated_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"enable_experimental_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"enable_request_compression": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_freeform_apply_patch": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_unified_exec_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"fast_mode": {
|
||
"type": "boolean"
|
||
},
|
||
"image_detail_original": {
|
||
"type": "boolean"
|
||
},
|
||
"image_generation": {
|
||
"type": "boolean"
|
||
},
|
||
"include_apply_patch_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"js_repl": {
|
||
"type": "boolean"
|
||
},
|
||
"js_repl_tools_only": {
|
||
"type": "boolean"
|
||
},
|
||
"memories": {
|
||
"type": "boolean"
|
||
},
|
||
"memory_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"multi_agent": {
|
||
"type": "boolean"
|
||
},
|
||
"personality": {
|
||
"type": "boolean"
|
||
},
|
||
"plugins": {
|
||
"type": "boolean"
|
||
},
|
||
"powershell_utf8": {
|
||
"type": "boolean"
|
||
},
|
||
"prevent_idle_sleep": {
|
||
"type": "boolean"
|
||
},
|
||
"realtime_conversation": {
|
||
"type": "boolean"
|
||
},
|
||
"remote_models": {
|
||
"type": "boolean"
|
||
},
|
||
"request_permissions": {
|
||
"type": "boolean"
|
||
},
|
||
"request_rule": {
|
||
"type": "boolean"
|
||
},
|
||
"responses_websockets": {
|
||
"type": "boolean"
|
||
},
|
||
"responses_websockets_v2": {
|
||
"type": "boolean"
|
||
},
|
||
"runtime_metrics": {
|
||
"type": "boolean"
|
||
},
|
||
"search_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_snapshot": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_zsh_fork": {
|
||
"type": "boolean"
|
||
},
|
||
"skill_env_var_dependency_prompt": {
|
||
"type": "boolean"
|
||
},
|
||
"skill_mcp_dependency_install": {
|
||
"type": "boolean"
|
||
},
|
||
"sqlite": {
|
||
"type": "boolean"
|
||
},
|
||
"steer": {
|
||
"type": "boolean"
|
||
},
|
||
"undo": {
|
||
"type": "boolean"
|
||
},
|
||
"unified_exec": {
|
||
"type": "boolean"
|
||
},
|
||
"use_linux_sandbox_bwrap": {
|
||
"type": "boolean"
|
||
},
|
||
"voice_transcription": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search_cached": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search_request": {
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"include_apply_patch_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"js_repl_node_module_dirs": {
|
||
"description": "Ordered list of directories to search for Node modules in `js_repl`.",
|
||
"items": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"js_repl_node_path": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"model": {
|
||
"type": "string"
|
||
},
|
||
"model_catalog_json": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional path to a JSON model catalog (applied on startup only)."
|
||
},
|
||
"model_instructions_file": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional path to a file containing model instructions."
|
||
},
|
||
"model_provider": {
|
||
"description": "The key in the `model_providers` map identifying the [`ModelProviderInfo`] to use.",
|
||
"type": "string"
|
||
},
|
||
"model_reasoning_effort": {
|
||
"$ref": "#/definitions/ReasoningEffort"
|
||
},
|
||
"model_reasoning_summary": {
|
||
"$ref": "#/definitions/ReasoningSummary"
|
||
},
|
||
"model_verbosity": {
|
||
"$ref": "#/definitions/Verbosity"
|
||
},
|
||
"oss_provider": {
|
||
"type": "string"
|
||
},
|
||
"personality": {
|
||
"$ref": "#/definitions/Personality"
|
||
},
|
||
"plan_mode_reasoning_effort": {
|
||
"$ref": "#/definitions/ReasoningEffort"
|
||
},
|
||
"sandbox_mode": {
|
||
"$ref": "#/definitions/SandboxMode"
|
||
},
|
||
"service_tier": {
|
||
"$ref": "#/definitions/ServiceTier"
|
||
},
|
||
"tools_view_image": {
|
||
"type": "boolean"
|
||
},
|
||
"tools_web_search": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search": {
|
||
"$ref": "#/definitions/WebSearchMode"
|
||
},
|
||
"windows": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/WindowsToml"
|
||
}
|
||
],
|
||
"default": null
|
||
},
|
||
"zsh_path": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional absolute path to patched zsh used by zsh-exec-bridge-backed shell execution."
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"FeedbackConfigToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"enabled": {
|
||
"description": "When `false`, disables the feedback flow across Codex product surfaces.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ForcedLoginMethod": {
|
||
"enum": [
|
||
"chatgpt",
|
||
"api"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"GhostSnapshotToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"disable_warnings": {
|
||
"description": "Disable all ghost snapshot warning events.",
|
||
"type": "boolean"
|
||
},
|
||
"ignore_large_untracked_dirs": {
|
||
"description": "Ignore untracked directories that contain this many files or more. (Still emits a warning unless warnings are disabled.)",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"ignore_large_untracked_files": {
|
||
"description": "Exclude untracked files larger than this many bytes from ghost snapshots.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"History": {
|
||
"additionalProperties": false,
|
||
"description": "Settings that govern if and what will be written to `~/.codex/history.jsonl`.",
|
||
"properties": {
|
||
"max_bytes": {
|
||
"description": "If set, the maximum size of the history file in bytes. The oldest entries are dropped once the file exceeds this limit.",
|
||
"format": "uint",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"persistence": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/HistoryPersistence"
|
||
}
|
||
],
|
||
"description": "If true, history entries will not be written to disk."
|
||
}
|
||
},
|
||
"required": [
|
||
"persistence"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"HistoryPersistence": {
|
||
"oneOf": [
|
||
{
|
||
"description": "Save all history entries to disk.",
|
||
"enum": [
|
||
"save-all"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Do not write history to disk.",
|
||
"enum": [
|
||
"none"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"MemoriesToml": {
|
||
"additionalProperties": false,
|
||
"description": "Memories settings loaded from config.toml.",
|
||
"properties": {
|
||
"consolidation_model": {
|
||
"description": "Model used for memory consolidation.",
|
||
"type": "string"
|
||
},
|
||
"extract_model": {
|
||
"description": "Model used for thread summarisation.",
|
||
"type": "string"
|
||
},
|
||
"generate_memories": {
|
||
"description": "When `false`, newly created threads are stored with `memory_mode = \"disabled\"` in the state DB.",
|
||
"type": "boolean"
|
||
},
|
||
"max_raw_memories_for_consolidation": {
|
||
"description": "Maximum number of recent raw memories retained for global consolidation.",
|
||
"format": "uint",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"max_rollout_age_days": {
|
||
"description": "Maximum age of the threads used for memories.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"max_rollouts_per_startup": {
|
||
"description": "Maximum number of rollout candidates processed per pass.",
|
||
"format": "uint",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"max_unused_days": {
|
||
"description": "Maximum number of days since a memory was last used before it becomes ineligible for phase 2 selection.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"min_rollout_idle_hours": {
|
||
"description": "Minimum idle time between last thread activity and memory creation (hours). > 12h recommended.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"no_memories_if_mcp_or_web_search": {
|
||
"description": "When `true`, web searches and MCP tool calls mark the thread `memory_mode` as `\"polluted\"`.",
|
||
"type": "boolean"
|
||
},
|
||
"use_memories": {
|
||
"description": "When `false`, skip injecting memory usage instructions into developer prompts.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ModelAvailabilityNuxConfig": {
|
||
"additionalProperties": {
|
||
"format": "uint32",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ModelProviderInfo": {
|
||
"additionalProperties": false,
|
||
"description": "Serializable representation of a provider definition.",
|
||
"properties": {
|
||
"base_url": {
|
||
"description": "Base URL for the provider's OpenAI-compatible API.",
|
||
"type": "string"
|
||
},
|
||
"env_http_headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"description": "Optional HTTP headers to include in requests to this provider where the (key, value) pairs are the header name and _environment variable_ whose value should be used. If the environment variable is not set, or the value is empty, the header will not be included in the request.",
|
||
"type": "object"
|
||
},
|
||
"env_key": {
|
||
"description": "Environment variable that stores the user's API key for this provider.",
|
||
"type": "string"
|
||
},
|
||
"env_key_instructions": {
|
||
"description": "Optional instructions to help the user get a valid value for the variable and set it.",
|
||
"type": "string"
|
||
},
|
||
"experimental_bearer_token": {
|
||
"description": "Value to use with `Authorization: Bearer <token>` header. Use of this config is discouraged in favor of `env_key` for security reasons, but this may be necessary when using this programmatically.",
|
||
"type": "string"
|
||
},
|
||
"http_headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"description": "Additional HTTP headers to include in requests to this provider where the (key, value) pairs are the header name and value.",
|
||
"type": "object"
|
||
},
|
||
"name": {
|
||
"description": "Friendly display name.",
|
||
"type": "string"
|
||
},
|
||
"query_params": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"description": "Optional query parameters to append to the base URL.",
|
||
"type": "object"
|
||
},
|
||
"request_max_retries": {
|
||
"description": "Maximum number of times to retry a failed HTTP request to this provider.",
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"requires_openai_auth": {
|
||
"default": false,
|
||
"description": "Does this provider require an OpenAI API Key or ChatGPT login token? If true, user is presented with login screen on first run, and login preference and token/key are stored in auth.json. If false (which is the default), login screen is skipped, and API key (if needed) comes from the \"env_key\" environment variable.",
|
||
"type": "boolean"
|
||
},
|
||
"stream_idle_timeout_ms": {
|
||
"description": "Idle timeout (in milliseconds) to wait for activity on a streaming response before treating the connection as lost.",
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"stream_max_retries": {
|
||
"description": "Number of times to retry reconnecting a dropped streaming response before failing.",
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"supports_websockets": {
|
||
"default": false,
|
||
"description": "Whether this provider supports the Responses API WebSocket transport.",
|
||
"type": "boolean"
|
||
},
|
||
"wire_api": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/WireApi"
|
||
}
|
||
],
|
||
"default": "responses",
|
||
"description": "Which wire protocol this provider expects."
|
||
}
|
||
},
|
||
"required": [
|
||
"name"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"NetworkModeSchema": {
|
||
"enum": [
|
||
"limited",
|
||
"full"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"NetworkToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"admin_url": {
|
||
"type": "string"
|
||
},
|
||
"allow_local_binding": {
|
||
"type": "boolean"
|
||
},
|
||
"allow_unix_sockets": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"allow_upstream_proxy": {
|
||
"type": "boolean"
|
||
},
|
||
"allowed_domains": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"dangerously_allow_all_unix_sockets": {
|
||
"type": "boolean"
|
||
},
|
||
"dangerously_allow_non_loopback_admin": {
|
||
"type": "boolean"
|
||
},
|
||
"dangerously_allow_non_loopback_proxy": {
|
||
"type": "boolean"
|
||
},
|
||
"denied_domains": {
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"enable_socks5": {
|
||
"type": "boolean"
|
||
},
|
||
"enable_socks5_udp": {
|
||
"type": "boolean"
|
||
},
|
||
"enabled": {
|
||
"type": "boolean"
|
||
},
|
||
"mode": {
|
||
"$ref": "#/definitions/NetworkModeSchema"
|
||
},
|
||
"proxy_url": {
|
||
"type": "string"
|
||
},
|
||
"socks_url": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"Notice": {
|
||
"description": "Settings for notices we display to users via the tui and app-server clients (primarily the Codex IDE extension). NOTE: these are different from notifications - notices are warnings, NUX screens, acknowledgements, etc.",
|
||
"properties": {
|
||
"hide_full_access_warning": {
|
||
"description": "Tracks whether the user has acknowledged the full access warning prompt.",
|
||
"type": "boolean"
|
||
},
|
||
"hide_gpt-5.1-codex-max_migration_prompt": {
|
||
"description": "Tracks whether the user has seen the gpt-5.1-codex-max migration prompt",
|
||
"type": "boolean"
|
||
},
|
||
"hide_gpt5_1_migration_prompt": {
|
||
"description": "Tracks whether the user has seen the model migration prompt",
|
||
"type": "boolean"
|
||
},
|
||
"hide_rate_limit_model_nudge": {
|
||
"description": "Tracks whether the user opted out of the rate limit model switch reminder.",
|
||
"type": "boolean"
|
||
},
|
||
"hide_world_writable_warning": {
|
||
"description": "Tracks whether the user has acknowledged the Windows world-writable directories warning.",
|
||
"type": "boolean"
|
||
},
|
||
"model_migrations": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"default": {},
|
||
"description": "Tracks acknowledged model migrations as old->new model slug mappings.",
|
||
"type": "object"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"NotificationMethod": {
|
||
"enum": [
|
||
"auto",
|
||
"osc9",
|
||
"bel"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"Notifications": {
|
||
"anyOf": [
|
||
{
|
||
"type": "boolean"
|
||
},
|
||
{
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
}
|
||
]
|
||
},
|
||
"OAuthCredentialsStoreMode": {
|
||
"description": "Determine where Codex should store and read MCP credentials.",
|
||
"oneOf": [
|
||
{
|
||
"description": "`Keyring` when available; otherwise, `File`. Credentials stored in the keyring will only be readable by Codex unless the user explicitly grants access via OS-level keyring access.",
|
||
"enum": [
|
||
"auto"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "CODEX_HOME/.credentials.json This file will be readable to Codex and other applications running as the same user.",
|
||
"enum": [
|
||
"file"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Keyring when available, otherwise fail.",
|
||
"enum": [
|
||
"keyring"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"OtelConfigToml": {
|
||
"additionalProperties": false,
|
||
"description": "OTEL settings loaded from config.toml. Fields are optional so we can apply defaults.",
|
||
"properties": {
|
||
"environment": {
|
||
"description": "Mark traces with environment (dev, staging, prod, test). Defaults to dev.",
|
||
"type": "string"
|
||
},
|
||
"exporter": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelExporterKind"
|
||
}
|
||
],
|
||
"description": "Optional log exporter"
|
||
},
|
||
"log_user_prompt": {
|
||
"description": "Log user prompt in traces",
|
||
"type": "boolean"
|
||
},
|
||
"metrics_exporter": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelExporterKind"
|
||
}
|
||
],
|
||
"description": "Optional metrics exporter"
|
||
},
|
||
"trace_exporter": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelExporterKind"
|
||
}
|
||
],
|
||
"description": "Optional trace exporter"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"OtelExporterKind": {
|
||
"description": "Which OTEL exporter to use.",
|
||
"oneOf": [
|
||
{
|
||
"enum": [
|
||
"none",
|
||
"statsig"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"otlp-http": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"endpoint": {
|
||
"type": "string"
|
||
},
|
||
"headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"default": {},
|
||
"type": "object"
|
||
},
|
||
"protocol": {
|
||
"$ref": "#/definitions/OtelHttpProtocol"
|
||
},
|
||
"tls": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelTlsConfig"
|
||
}
|
||
],
|
||
"default": null
|
||
}
|
||
},
|
||
"required": [
|
||
"endpoint",
|
||
"protocol"
|
||
],
|
||
"type": "object"
|
||
}
|
||
},
|
||
"required": [
|
||
"otlp-http"
|
||
],
|
||
"type": "object"
|
||
},
|
||
{
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"otlp-grpc": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"endpoint": {
|
||
"type": "string"
|
||
},
|
||
"headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"default": {},
|
||
"type": "object"
|
||
},
|
||
"tls": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelTlsConfig"
|
||
}
|
||
],
|
||
"default": null
|
||
}
|
||
},
|
||
"required": [
|
||
"endpoint"
|
||
],
|
||
"type": "object"
|
||
}
|
||
},
|
||
"required": [
|
||
"otlp-grpc"
|
||
],
|
||
"type": "object"
|
||
}
|
||
]
|
||
},
|
||
"OtelHttpProtocol": {
|
||
"oneOf": [
|
||
{
|
||
"description": "Binary payload",
|
||
"enum": [
|
||
"binary"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "JSON payload",
|
||
"enum": [
|
||
"json"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"OtelTlsConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"ca-certificate": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"client-certificate": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"client-private-key": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"PermissionsToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"network": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/NetworkToml"
|
||
}
|
||
],
|
||
"description": "Network proxy settings from `[permissions.network]`. User config can enable the proxy; managed requirements may still constrain values."
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"Personality": {
|
||
"enum": [
|
||
"none",
|
||
"friendly",
|
||
"pragmatic"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"PluginConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"enabled": {
|
||
"default": true,
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ProjectConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"trust_level": {
|
||
"$ref": "#/definitions/TrustLevel"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"RawMcpServerConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"args": {
|
||
"default": null,
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"bearer_token": {
|
||
"type": "string"
|
||
},
|
||
"bearer_token_env_var": {
|
||
"type": "string"
|
||
},
|
||
"command": {
|
||
"type": "string"
|
||
},
|
||
"cwd": {
|
||
"default": null,
|
||
"type": "string"
|
||
},
|
||
"disabled_tools": {
|
||
"default": null,
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"enabled": {
|
||
"default": null,
|
||
"type": "boolean"
|
||
},
|
||
"enabled_tools": {
|
||
"default": null,
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"env": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"default": null,
|
||
"type": "object"
|
||
},
|
||
"env_http_headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"default": null,
|
||
"type": "object"
|
||
},
|
||
"env_vars": {
|
||
"default": null,
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"http_headers": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"type": "object"
|
||
},
|
||
"oauth_resource": {
|
||
"default": null,
|
||
"type": "string"
|
||
},
|
||
"required": {
|
||
"default": null,
|
||
"type": "boolean"
|
||
},
|
||
"scopes": {
|
||
"default": null,
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"startup_timeout_ms": {
|
||
"default": null,
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"startup_timeout_sec": {
|
||
"default": null,
|
||
"format": "double",
|
||
"type": "number"
|
||
},
|
||
"tool_timeout_sec": {
|
||
"default": null,
|
||
"format": "double",
|
||
"type": "number"
|
||
},
|
||
"url": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"RealtimeAudioToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"microphone": {
|
||
"type": "string"
|
||
},
|
||
"speaker": {
|
||
"type": "string"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ReasoningEffort": {
|
||
"description": "See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning",
|
||
"enum": [
|
||
"none",
|
||
"minimal",
|
||
"low",
|
||
"medium",
|
||
"high",
|
||
"xhigh"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"ReasoningSummary": {
|
||
"description": "A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries",
|
||
"oneOf": [
|
||
{
|
||
"enum": [
|
||
"auto",
|
||
"concise",
|
||
"detailed"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Option to disable reasoning summaries.",
|
||
"enum": [
|
||
"none"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"RejectConfig": {
|
||
"properties": {
|
||
"mcp_elicitations": {
|
||
"description": "Reject MCP elicitation prompts.",
|
||
"type": "boolean"
|
||
},
|
||
"rules": {
|
||
"description": "Reject prompts triggered by execpolicy `prompt` rules.",
|
||
"type": "boolean"
|
||
},
|
||
"sandbox_approval": {
|
||
"description": "Reject approval prompts related to sandbox escalation.",
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"required": [
|
||
"mcp_elicitations",
|
||
"rules",
|
||
"sandbox_approval"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"SandboxMode": {
|
||
"enum": [
|
||
"read-only",
|
||
"workspace-write",
|
||
"danger-full-access"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"SandboxWorkspaceWrite": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"exclude_slash_tmp": {
|
||
"default": false,
|
||
"type": "boolean"
|
||
},
|
||
"exclude_tmpdir_env_var": {
|
||
"default": false,
|
||
"type": "boolean"
|
||
},
|
||
"network_access": {
|
||
"default": false,
|
||
"type": "boolean"
|
||
},
|
||
"writable_roots": {
|
||
"default": [],
|
||
"items": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"type": "array"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ServiceTier": {
|
||
"enum": [
|
||
"fast",
|
||
"flex"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"ShellEnvironmentPolicyInherit": {
|
||
"oneOf": [
|
||
{
|
||
"description": "\"Core\" environment variables for the platform. On UNIX, this would include HOME, LOGNAME, PATH, SHELL, and USER, among others.",
|
||
"enum": [
|
||
"core"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Inherits the full environment from the parent process.",
|
||
"enum": [
|
||
"all"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Do not inherit any environment variables from the parent process.",
|
||
"enum": [
|
||
"none"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"ShellEnvironmentPolicyToml": {
|
||
"additionalProperties": false,
|
||
"description": "Policy for building the `env` when spawning a process via either the `shell` or `local_shell` tool.",
|
||
"properties": {
|
||
"exclude": {
|
||
"description": "List of regular expressions.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"experimental_use_profile": {
|
||
"type": "boolean"
|
||
},
|
||
"ignore_default_excludes": {
|
||
"type": "boolean"
|
||
},
|
||
"include_only": {
|
||
"description": "List of regular expressions.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"inherit": {
|
||
"$ref": "#/definitions/ShellEnvironmentPolicyInherit"
|
||
},
|
||
"set": {
|
||
"additionalProperties": {
|
||
"type": "string"
|
||
},
|
||
"type": "object"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"SkillConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"enabled": {
|
||
"type": "boolean"
|
||
},
|
||
"path": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
},
|
||
"required": [
|
||
"enabled",
|
||
"path"
|
||
],
|
||
"type": "object"
|
||
},
|
||
"SkillsConfig": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"config": {
|
||
"items": {
|
||
"$ref": "#/definitions/SkillConfig"
|
||
},
|
||
"type": "array"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"ToolsToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"view_image": {
|
||
"default": null,
|
||
"description": "Enable the `view_image` tool that lets the agent attach local images.",
|
||
"type": "boolean"
|
||
},
|
||
"web_search": {
|
||
"default": null,
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"TrustLevel": {
|
||
"description": "Represents the trust level for a project directory. This determines the approval policy and sandbox mode applied.",
|
||
"enum": [
|
||
"trusted",
|
||
"untrusted"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"Tui": {
|
||
"additionalProperties": false,
|
||
"description": "Collection of settings that are specific to the TUI.",
|
||
"properties": {
|
||
"alternate_screen": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AltScreenMode"
|
||
}
|
||
],
|
||
"default": "auto",
|
||
"description": "Controls whether the TUI uses the terminal's alternate screen buffer.\n\n- `auto` (default): Disable alternate screen in Zellij, enable elsewhere. - `always`: Always use alternate screen (original behavior). - `never`: Never use alternate screen (inline mode only, preserves scrollback).\n\nUsing alternate screen provides a cleaner fullscreen experience but prevents scrollback in terminal multiplexers like Zellij that follow the xterm spec."
|
||
},
|
||
"animations": {
|
||
"default": true,
|
||
"description": "Enable animations (welcome screen, shimmer effects, spinners). Defaults to `true`.",
|
||
"type": "boolean"
|
||
},
|
||
"model_availability_nux": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/ModelAvailabilityNuxConfig"
|
||
}
|
||
],
|
||
"default": {},
|
||
"description": "Startup tooltip availability NUX state persisted by the TUI."
|
||
},
|
||
"notification_method": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/NotificationMethod"
|
||
}
|
||
],
|
||
"default": "auto",
|
||
"description": "Notification method to use for unfocused terminal notifications. Defaults to `auto`."
|
||
},
|
||
"notifications": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/Notifications"
|
||
}
|
||
],
|
||
"default": true,
|
||
"description": "Enable desktop notifications from the TUI when the terminal is unfocused. Defaults to `true`."
|
||
},
|
||
"show_tooltips": {
|
||
"default": true,
|
||
"description": "Show startup tooltips in the TUI welcome screen. Defaults to `true`.",
|
||
"type": "boolean"
|
||
},
|
||
"status_line": {
|
||
"default": null,
|
||
"description": "Ordered list of status line item identifiers.\n\nWhen set, the TUI renders the selected items as the status line. When unset, the TUI defaults to: `model-with-reasoning`, `context-remaining`, and `current-dir`.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"theme": {
|
||
"default": null,
|
||
"description": "Syntax highlighting theme name (kebab-case).\n\nWhen set, overrides automatic light/dark theme detection. Use `/theme` in the TUI or see `$CODEX_HOME/themes` for custom themes.",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"UriBasedFileOpener": {
|
||
"oneOf": [
|
||
{
|
||
"enum": [
|
||
"vscode",
|
||
"vscode-insiders",
|
||
"windsurf",
|
||
"cursor"
|
||
],
|
||
"type": "string"
|
||
},
|
||
{
|
||
"description": "Option to disable the URI-based file opener.",
|
||
"enum": [
|
||
"none"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
},
|
||
"Verbosity": {
|
||
"description": "Controls output length/detail on GPT-5 models via the Responses API. Serialized with lowercase values to match the OpenAI API.",
|
||
"enum": [
|
||
"low",
|
||
"medium",
|
||
"high"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"WebSearchMode": {
|
||
"enum": [
|
||
"disabled",
|
||
"cached",
|
||
"live"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"WindowsSandboxModeToml": {
|
||
"enum": [
|
||
"elevated",
|
||
"unelevated"
|
||
],
|
||
"type": "string"
|
||
},
|
||
"WindowsToml": {
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"sandbox": {
|
||
"$ref": "#/definitions/WindowsSandboxModeToml"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"WireApi": {
|
||
"description": "Wire protocol that the provider speaks.",
|
||
"oneOf": [
|
||
{
|
||
"description": "The Responses API exposed by OpenAI at `/v1/responses`.",
|
||
"enum": [
|
||
"responses"
|
||
],
|
||
"type": "string"
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"description": "Base config deserialized from ~/.codex/config.toml.",
|
||
"properties": {
|
||
"agents": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AgentsToml"
|
||
}
|
||
],
|
||
"description": "Agent-related settings (thread limits, etc.)."
|
||
},
|
||
"allow_login_shell": {
|
||
"description": "Whether the model may request a login shell for shell-based tools. Default to `true`\n\nIf `true`, the model may request a login shell (`login = true`), and omitting `login` defaults to using a login shell. If `false`, the model can never use a login shell: `login = true` requests are rejected, and omitting `login` defaults to a non-login shell.",
|
||
"type": "boolean"
|
||
},
|
||
"analytics": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AnalyticsConfigToml"
|
||
}
|
||
],
|
||
"description": "When `false`, disables analytics across Codex product surfaces in this machine. Defaults to `true`."
|
||
},
|
||
"approval_policy": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AskForApproval"
|
||
}
|
||
],
|
||
"description": "Default approval policy for executing commands."
|
||
},
|
||
"apps": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AppsConfigToml"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Settings for app-specific controls."
|
||
},
|
||
"audio": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/RealtimeAudioToml"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Machine-local realtime audio device preferences used by realtime voice."
|
||
},
|
||
"background_terminal_max_timeout": {
|
||
"description": "Maximum poll window for background terminal output (`write_stdin`), in milliseconds. Default: `300000` (5 minutes).",
|
||
"format": "uint64",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"chatgpt_base_url": {
|
||
"description": "Base URL for requests to ChatGPT (as opposed to the OpenAI API).",
|
||
"type": "string"
|
||
},
|
||
"check_for_update_on_startup": {
|
||
"description": "When `true`, checks for Codex updates on startup and surfaces update prompts. Set to `false` only if your Codex updates are centrally managed. Defaults to `true`.",
|
||
"type": "boolean"
|
||
},
|
||
"cli_auth_credentials_store": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AuthCredentialsStoreMode"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Preferred backend for storing CLI auth credentials. file (default): Use a file in the Codex home directory. keyring: Use an OS-specific keyring service. auto: Use the keyring if available, otherwise use a file."
|
||
},
|
||
"commit_attribution": {
|
||
"description": "Optional commit attribution text for commit message co-author trailers.\n\nSet to an empty string to disable automatic commit attribution.",
|
||
"type": "string"
|
||
},
|
||
"compact_prompt": {
|
||
"description": "Compact prompt used for history compaction.",
|
||
"type": "string"
|
||
},
|
||
"developer_instructions": {
|
||
"default": null,
|
||
"description": "Developer instructions inserted as a `developer` role message.",
|
||
"type": "string"
|
||
},
|
||
"disable_paste_burst": {
|
||
"description": "When true, disables burst-paste detection for typed input entirely. All characters are inserted as they are received, and no buffering or placeholder replacement will occur for fast keypress bursts.",
|
||
"type": "boolean"
|
||
},
|
||
"experimental_compact_prompt_file": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"experimental_realtime_ws_backend_prompt": {
|
||
"description": "Experimental / do not use. Overrides only the realtime conversation websocket transport instructions (the `Op::RealtimeConversation` `/ws` session.update instructions) without changing normal prompts.",
|
||
"type": "string"
|
||
},
|
||
"experimental_realtime_ws_base_url": {
|
||
"description": "Experimental / do not use. Overrides only the realtime conversation websocket transport base URL (the `Op::RealtimeConversation` `/v1/realtime` connection) without changing normal provider HTTP requests.",
|
||
"type": "string"
|
||
},
|
||
"experimental_realtime_ws_model": {
|
||
"description": "Experimental / do not use. Selects the realtime websocket model/snapshot used for the `Op::RealtimeConversation` connection.",
|
||
"type": "string"
|
||
},
|
||
"experimental_use_freeform_apply_patch": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_unified_exec_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"features": {
|
||
"additionalProperties": false,
|
||
"default": null,
|
||
"description": "Centralized feature flags (new). Prefer this over individual toggles.",
|
||
"properties": {
|
||
"apply_patch_freeform": {
|
||
"type": "boolean"
|
||
},
|
||
"apps": {
|
||
"type": "boolean"
|
||
},
|
||
"apps_mcp_gateway": {
|
||
"type": "boolean"
|
||
},
|
||
"artifact": {
|
||
"type": "boolean"
|
||
},
|
||
"child_agents_md": {
|
||
"type": "boolean"
|
||
},
|
||
"codex_git_commit": {
|
||
"type": "boolean"
|
||
},
|
||
"collab": {
|
||
"type": "boolean"
|
||
},
|
||
"collaboration_modes": {
|
||
"type": "boolean"
|
||
},
|
||
"connectors": {
|
||
"type": "boolean"
|
||
},
|
||
"default_mode_request_user_input": {
|
||
"type": "boolean"
|
||
},
|
||
"elevated_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"enable_experimental_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"enable_request_compression": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_freeform_apply_patch": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_use_unified_exec_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"experimental_windows_sandbox": {
|
||
"type": "boolean"
|
||
},
|
||
"fast_mode": {
|
||
"type": "boolean"
|
||
},
|
||
"image_detail_original": {
|
||
"type": "boolean"
|
||
},
|
||
"image_generation": {
|
||
"type": "boolean"
|
||
},
|
||
"include_apply_patch_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"js_repl": {
|
||
"type": "boolean"
|
||
},
|
||
"js_repl_tools_only": {
|
||
"type": "boolean"
|
||
},
|
||
"memories": {
|
||
"type": "boolean"
|
||
},
|
||
"memory_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"multi_agent": {
|
||
"type": "boolean"
|
||
},
|
||
"personality": {
|
||
"type": "boolean"
|
||
},
|
||
"plugins": {
|
||
"type": "boolean"
|
||
},
|
||
"powershell_utf8": {
|
||
"type": "boolean"
|
||
},
|
||
"prevent_idle_sleep": {
|
||
"type": "boolean"
|
||
},
|
||
"realtime_conversation": {
|
||
"type": "boolean"
|
||
},
|
||
"remote_models": {
|
||
"type": "boolean"
|
||
},
|
||
"request_permissions": {
|
||
"type": "boolean"
|
||
},
|
||
"request_rule": {
|
||
"type": "boolean"
|
||
},
|
||
"responses_websockets": {
|
||
"type": "boolean"
|
||
},
|
||
"responses_websockets_v2": {
|
||
"type": "boolean"
|
||
},
|
||
"runtime_metrics": {
|
||
"type": "boolean"
|
||
},
|
||
"search_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_snapshot": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_tool": {
|
||
"type": "boolean"
|
||
},
|
||
"shell_zsh_fork": {
|
||
"type": "boolean"
|
||
},
|
||
"skill_env_var_dependency_prompt": {
|
||
"type": "boolean"
|
||
},
|
||
"skill_mcp_dependency_install": {
|
||
"type": "boolean"
|
||
},
|
||
"sqlite": {
|
||
"type": "boolean"
|
||
},
|
||
"steer": {
|
||
"type": "boolean"
|
||
},
|
||
"undo": {
|
||
"type": "boolean"
|
||
},
|
||
"unified_exec": {
|
||
"type": "boolean"
|
||
},
|
||
"use_linux_sandbox_bwrap": {
|
||
"type": "boolean"
|
||
},
|
||
"voice_transcription": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search_cached": {
|
||
"type": "boolean"
|
||
},
|
||
"web_search_request": {
|
||
"type": "boolean"
|
||
}
|
||
},
|
||
"type": "object"
|
||
},
|
||
"feedback": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/FeedbackConfigToml"
|
||
}
|
||
],
|
||
"description": "When `false`, disables feedback collection across Codex product surfaces. Defaults to `true`."
|
||
},
|
||
"file_opener": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/UriBasedFileOpener"
|
||
}
|
||
],
|
||
"description": "Optional URI-based file opener. If set, citations to files in the model output will be hyperlinked using the specified URI scheme."
|
||
},
|
||
"forced_chatgpt_workspace_id": {
|
||
"default": null,
|
||
"description": "When set, restricts ChatGPT login to a specific workspace identifier.",
|
||
"type": "string"
|
||
},
|
||
"forced_login_method": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/ForcedLoginMethod"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "When set, restricts the login mechanism users may use."
|
||
},
|
||
"ghost_snapshot": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/GhostSnapshotToml"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Settings for ghost snapshots (used for undo)."
|
||
},
|
||
"hide_agent_reasoning": {
|
||
"description": "When set to `true`, `AgentReasoning` events will be hidden from the UI/output. Defaults to `false`.",
|
||
"type": "boolean"
|
||
},
|
||
"history": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/History"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Settings that govern if and what will be written to `~/.codex/history.jsonl`."
|
||
},
|
||
"instructions": {
|
||
"description": "System instructions.",
|
||
"type": "string"
|
||
},
|
||
"js_repl_node_module_dirs": {
|
||
"description": "Ordered list of directories to search for Node modules in `js_repl`.",
|
||
"items": {
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"js_repl_node_path": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional absolute path to the Node runtime used by `js_repl`."
|
||
},
|
||
"log_dir": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Directory where Codex writes log files, for example `codex-tui.log`. Defaults to `$CODEX_HOME/log`."
|
||
},
|
||
"mcp_oauth_callback_port": {
|
||
"description": "Optional fixed port for the local HTTP callback server used during MCP OAuth login. When unset, Codex will bind to an ephemeral port chosen by the OS.",
|
||
"format": "uint16",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"mcp_oauth_callback_url": {
|
||
"description": "Optional redirect URI to use during MCP OAuth login. When set, this URI is used in the OAuth authorization request instead of the local listener address. The local callback listener still binds to 127.0.0.1 (using `mcp_oauth_callback_port` when provided).",
|
||
"type": "string"
|
||
},
|
||
"mcp_oauth_credentials_store": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OAuthCredentialsStoreMode"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Preferred backend for storing MCP OAuth credentials. keyring: Use an OS-specific keyring service. https://github.com/openai/codex/blob/main/codex-rs/rmcp-client/src/oauth.rs#L2 file: Use a file in the Codex home directory. auto (default): Use the OS-specific keyring service if available, otherwise use a file."
|
||
},
|
||
"mcp_servers": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/RawMcpServerConfig"
|
||
},
|
||
"default": {},
|
||
"description": "Definition for MCP servers that Codex can reach out to for tool calls.",
|
||
"type": "object"
|
||
},
|
||
"memories": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/MemoriesToml"
|
||
}
|
||
],
|
||
"description": "Memories subsystem settings."
|
||
},
|
||
"model": {
|
||
"description": "Optional override of model selection.",
|
||
"type": "string"
|
||
},
|
||
"model_auto_compact_token_limit": {
|
||
"description": "Token usage threshold triggering auto-compaction of conversation history.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"model_catalog_json": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional path to a JSON model catalog (applied on startup only). Per-thread `config` overrides are accepted but do not reapply this (no-ops)."
|
||
},
|
||
"model_context_window": {
|
||
"description": "Size of the context window for the model, in tokens.",
|
||
"format": "int64",
|
||
"type": "integer"
|
||
},
|
||
"model_instructions_file": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional path to a file containing model instructions that will override the built-in instructions for the selected model. Users are STRONGLY DISCOURAGED from using this field, as deviating from the instructions sanctioned by Codex will likely degrade model performance."
|
||
},
|
||
"model_provider": {
|
||
"description": "Provider to use from the model_providers map.",
|
||
"type": "string"
|
||
},
|
||
"model_providers": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/ModelProviderInfo"
|
||
},
|
||
"default": {},
|
||
"description": "User-defined provider entries that extend/override the built-in list.",
|
||
"type": "object"
|
||
},
|
||
"model_reasoning_effort": {
|
||
"$ref": "#/definitions/ReasoningEffort"
|
||
},
|
||
"model_reasoning_summary": {
|
||
"$ref": "#/definitions/ReasoningSummary"
|
||
},
|
||
"model_supports_reasoning_summaries": {
|
||
"description": "Override to force-enable reasoning summaries for the configured model.",
|
||
"type": "boolean"
|
||
},
|
||
"model_verbosity": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/Verbosity"
|
||
}
|
||
],
|
||
"description": "Optional verbosity control for GPT-5 models (Responses API `text.verbosity`)."
|
||
},
|
||
"notice": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/Notice"
|
||
}
|
||
],
|
||
"description": "Collection of in-product notices (different from notifications) See [`crate::config::types::Notices`] for more details"
|
||
},
|
||
"notify": {
|
||
"default": null,
|
||
"description": "Optional external command to spawn for end-user notifications.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"oss_provider": {
|
||
"description": "Preferred OSS provider for local models, e.g. \"lmstudio\" or \"ollama\".",
|
||
"type": "string"
|
||
},
|
||
"otel": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/OtelConfigToml"
|
||
}
|
||
],
|
||
"description": "OTEL configuration."
|
||
},
|
||
"permissions": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/PermissionsToml"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Nested permissions settings."
|
||
},
|
||
"personality": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/Personality"
|
||
}
|
||
],
|
||
"description": "Optionally specify a personality for the model"
|
||
},
|
||
"plan_mode_reasoning_effort": {
|
||
"$ref": "#/definitions/ReasoningEffort"
|
||
},
|
||
"plugins": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/PluginConfig"
|
||
},
|
||
"default": {},
|
||
"description": "User-level plugin config entries keyed by plugin name.",
|
||
"type": "object"
|
||
},
|
||
"profile": {
|
||
"description": "Profile to use from the `profiles` map.",
|
||
"type": "string"
|
||
},
|
||
"profiles": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/ConfigProfile"
|
||
},
|
||
"default": {},
|
||
"description": "Named profiles to facilitate switching between different configurations.",
|
||
"type": "object"
|
||
},
|
||
"project_doc_fallback_filenames": {
|
||
"description": "Ordered list of fallback filenames to look for when AGENTS.md is missing.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"project_doc_max_bytes": {
|
||
"description": "Maximum number of bytes to include from an AGENTS.md project doc file.",
|
||
"format": "uint",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"project_root_markers": {
|
||
"default": null,
|
||
"description": "Markers used to detect the project root when searching parent directories for `.codex` folders. Defaults to [\".git\"] when unset.",
|
||
"items": {
|
||
"type": "string"
|
||
},
|
||
"type": "array"
|
||
},
|
||
"projects": {
|
||
"additionalProperties": {
|
||
"$ref": "#/definitions/ProjectConfig"
|
||
},
|
||
"type": "object"
|
||
},
|
||
"review_model": {
|
||
"description": "Review model override used by the `/review` feature.",
|
||
"type": "string"
|
||
},
|
||
"sandbox_mode": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/SandboxMode"
|
||
}
|
||
],
|
||
"description": "Sandbox mode to use."
|
||
},
|
||
"sandbox_workspace_write": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/SandboxWorkspaceWrite"
|
||
}
|
||
],
|
||
"description": "Sandbox configuration to apply if `sandbox` is `WorkspaceWrite`."
|
||
},
|
||
"service_tier": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/ServiceTier"
|
||
}
|
||
],
|
||
"description": "Optional explicit service tier preference for new turns (`fast` or `flex`)."
|
||
},
|
||
"shell_environment_policy": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/ShellEnvironmentPolicyToml"
|
||
}
|
||
],
|
||
"default": {
|
||
"exclude": null,
|
||
"experimental_use_profile": null,
|
||
"ignore_default_excludes": null,
|
||
"include_only": null,
|
||
"inherit": null,
|
||
"set": null
|
||
}
|
||
},
|
||
"show_raw_agent_reasoning": {
|
||
"description": "When set to `true`, `AgentReasoningRawContentEvent` events will be shown in the UI/output. Defaults to `false`.",
|
||
"type": "boolean"
|
||
},
|
||
"skills": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/SkillsConfig"
|
||
}
|
||
],
|
||
"description": "User-level skill config entries keyed by SKILL.md path."
|
||
},
|
||
"sqlite_home": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Directory where Codex stores the SQLite state DB. Defaults to `$CODEX_SQLITE_HOME` when set. Otherwise uses `$CODEX_HOME`."
|
||
},
|
||
"suppress_unstable_features_warning": {
|
||
"description": "Suppress warnings about unstable (under development) features.",
|
||
"type": "boolean"
|
||
},
|
||
"tool_output_token_limit": {
|
||
"description": "Token budget applied when storing tool/function outputs in the context manager.",
|
||
"format": "uint",
|
||
"minimum": 0.0,
|
||
"type": "integer"
|
||
},
|
||
"tools": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/ToolsToml"
|
||
}
|
||
],
|
||
"description": "Nested tools section for feature toggles"
|
||
},
|
||
"tui": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/Tui"
|
||
}
|
||
],
|
||
"description": "Collection of settings that are specific to the TUI."
|
||
},
|
||
"web_search": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/WebSearchMode"
|
||
}
|
||
],
|
||
"description": "Controls the web search tool mode: disabled, cached, or live."
|
||
},
|
||
"windows": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/WindowsToml"
|
||
}
|
||
],
|
||
"default": null,
|
||
"description": "Windows-specific configuration."
|
||
},
|
||
"windows_wsl_setup_acknowledged": {
|
||
"description": "Tracks whether the Windows onboarding screen has been acknowledged.",
|
||
"type": "boolean"
|
||
},
|
||
"zsh_path": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/AbsolutePathBuf"
|
||
}
|
||
],
|
||
"description": "Optional absolute path to patched zsh used by zsh-exec-bridge-backed shell execution."
|
||
}
|
||
},
|
||
"title": "ConfigToml",
|
||
"type": "object"
|
||
} |