Codex.Config.Defaults (Codex SDK v0.14.0)

Copy Markdown View Source

Single source of truth for all Codex SDK default configuration values.

Every tunable constant lives here as a zero-arity function. Consumers call these functions instead of defining their own module attributes or inline magic numbers. A handful of values support runtime override via Application.get_env/3 — these are noted in the function docs.

Quick example

# In config/runtime.exs
config :codex_sdk,
  rate_limit_default_delay_ms: 120_000,
  attachment_ttl_ms: 3_600_000

# In your code — always resolved at call time
Codex.Config.Defaults.rate_limit_default_delay_ms()
#=> 120_000

See the Configuration Defaults guide for the full table of tunables.

Summary

Functions

App-server initialization/ready timeout (default: 10,000ms).

App-server JSON-RPC request timeout (default: 30,000ms).

Approval callback timeout (default: 30,000ms).

Interval between attachment cleanup sweeps (default: 60,000ms — 1 minute).

Time-to-live for file attachments (default: 86,400,000ms — 24 hours).

Base delay for exponential backoff (default: 100ms).

Maximum exponent for exponential backoff (default: 20).

Maximum backoff delay for exponential backoff (default: 5,000ms).

Client name sent during MCP initialization.

Client version sent during MCP/app-server initialization.

Default model for API auth contexts.

Default model for ChatGPT auth contexts.

Default transport for thread options.

Overall exec process timeout in milliseconds (default: 3,600,000 — 1 hour).

Default maximum results for file search tool (default: 100).

G.711 bytes per sample (default: 1).

G.711 audio sample rate in Hz (default: 8,000).

JSON-RPC version.

Default maximum agent turns for RunConfig (default: 10).

MCP tools/call timeout (default: 60,000ms).

Default number of retries for MCP tool calls (default: 3).

MCP initialize handshake timeout (default: 10,000ms).

MCP tools/list and resources/list timeout (default: 30,000ms).

Maximum length for qualified MCP tool names.

MCP notification send timeout (default: 10,000ms).

MCP protocol version string.

Timeout for app-server MCP server requests like list/reload (default: 30,000ms).

Delimiter for qualified MCP tool names.

Default localhost callback port for browser OAuth login (default: 1455).

Overall timeout for browser login callback completion (default: 120,000ms).

Maximum device code polling interval (default: 10,000ms).

Overall timeout for device code login completion (default: 900,000ms).

HTTP timeout for OAuth token requests (default: 10,000ms).

OAuth token refresh skew — refresh this many ms before expiry (default: 30,000ms).

WSL grace window before browser flow falls back to device flow (default: 5,000ms).

Default OpenAI API base URL.

Default OpenAI Realtime WebSocket URL.

PCM16 bytes per sample (default: 2).

PCM16 audio sample rate in Hz (default: 24,000).

Environment variable keys preserved when running with a cleared environment.

Markers used to find project root (default: [".git"]).

Default delay when rate-limited without an explicit Retry-After header.

Maximum delay for rate-limit backoff.

Multiplier for exponential rate-limit backoff.

Cache TTL for remote model list in seconds (default: 300 — 5 min).

HTTP timeout for remote model list fetches (default: 10,000ms).

Base delay for Codex.Retry backoff (default: 200ms).

Default maximum retry attempts for Codex.Retry (default: 4).

Maximum delay cap for Codex.Retry backoff (default: 10,000ms).

Session apply patch timeout (default: 60,000ms).

Default sessions storage directory.

Maximum shell command output before truncation (default: 10,000 bytes).

Shell command execution timeout (default: 60,000ms).

Default pop timeout for StreamQueue and RunResultStreaming (default: 5,000ms).

Default STT turn detection configuration.

Default STT model name.

System-level config file path (default: /etc/codex/config.toml).

Default originator tag for telemetry metadata.

OpenTelemetry handler ID.

Default OpenTelemetry processor name.

GenServer call timeout for transport operations (default: 5,000ms).

Grace period for transport close before escalation (default: 2,000ms).

Delay before finalizing exit to drain remaining output (default: 25ms).

Timeout for force-close operations (default: 500ms).

Timeout for headless transport without subscribers (default: 5,000ms).

Grace period for transport kill before demonitor (default: 250ms).

Maximum stdout buffer size in bytes (default: 1,048,576 — 1 MiB).

Maximum stdout lines drained per batch (default: 200).

Maximum stderr buffer size in bytes (default: 262,144 — 256 KiB).

Grace period for transport shutdown before kill (default: 250ms).

Default TTS audio buffer size in bytes (default: 120).

Default TTS instructions for partial-sentence streaming.

Default TTS voice.

Default TTS model name.

TTS stream receive timeout (default: 30,000ms).

Default voice input sample rate in Hz (default: 24,000).

Default maximum results for web search tool (default: 10).

Functions

app_server_init_timeout_ms()

@spec app_server_init_timeout_ms() :: pos_integer()

App-server initialization/ready timeout (default: 10,000ms).

app_server_request_timeout_ms()

@spec app_server_request_timeout_ms() :: pos_integer()

App-server JSON-RPC request timeout (default: 30,000ms).

approval_timeout_ms()

@spec approval_timeout_ms() :: pos_integer()

Approval callback timeout (default: 30,000ms).

attachment_cleanup_interval_ms()

@spec attachment_cleanup_interval_ms() :: pos_integer()

Interval between attachment cleanup sweeps (default: 60,000ms — 1 minute).

Overridable at runtime:

config :codex_sdk, attachment_cleanup_interval_ms: 120_000

attachment_ttl_ms()

@spec attachment_ttl_ms() :: pos_integer()

Time-to-live for file attachments (default: 86,400,000ms — 24 hours).

Overridable at runtime:

config :codex_sdk, attachment_ttl_ms: 3_600_000

backoff_base_delay_ms()

@spec backoff_base_delay_ms() :: pos_integer()

Base delay for exponential backoff (default: 100ms).

backoff_max_exponent()

@spec backoff_max_exponent() :: pos_integer()

Maximum exponent for exponential backoff (default: 20).

backoff_max_ms()

@spec backoff_max_ms() :: pos_integer()

Maximum backoff delay for exponential backoff (default: 5,000ms).

client_name()

@spec client_name() :: String.t()

Client name sent during MCP initialization.

client_version()

@spec client_version() :: String.t()

Client version sent during MCP/app-server initialization.

default_api_model()

@spec default_api_model() :: String.t()

Default model for API auth contexts.

default_chatgpt_model()

@spec default_chatgpt_model() :: String.t()

Default model for ChatGPT auth contexts.

default_transport()

@spec default_transport() :: :exec | {:app_server, pid()}

Default transport for thread options.

Overridable at runtime:

config :codex_sdk, default_transport: :exec

exec_timeout_ms()

@spec exec_timeout_ms() :: pos_integer()

Overall exec process timeout in milliseconds (default: 3,600,000 — 1 hour).

file_search_max_results()

@spec file_search_max_results() :: pos_integer()

Default maximum results for file search tool (default: 100).

g711_bytes_per_sample()

@spec g711_bytes_per_sample() :: pos_integer()

G.711 bytes per sample (default: 1).

g711_sample_rate()

@spec g711_sample_rate() :: pos_integer()

G.711 audio sample rate in Hz (default: 8,000).

jsonrpc_version()

@spec jsonrpc_version() :: String.t()

JSON-RPC version.

max_agent_turns()

@spec max_agent_turns() :: pos_integer()

Default maximum agent turns for RunConfig (default: 10).

mcp_call_timeout_ms()

@spec mcp_call_timeout_ms() :: pos_integer()

MCP tools/call timeout (default: 60,000ms).

mcp_default_retries()

@spec mcp_default_retries() :: non_neg_integer()

Default number of retries for MCP tool calls (default: 3).

mcp_init_timeout_ms()

@spec mcp_init_timeout_ms() :: pos_integer()

MCP initialize handshake timeout (default: 10,000ms).

mcp_list_timeout_ms()

@spec mcp_list_timeout_ms() :: pos_integer()

MCP tools/list and resources/list timeout (default: 30,000ms).

mcp_max_tool_name_length()

@spec mcp_max_tool_name_length() :: pos_integer()

Maximum length for qualified MCP tool names.

mcp_notification_timeout_ms()

@spec mcp_notification_timeout_ms() :: pos_integer()

MCP notification send timeout (default: 10,000ms).

mcp_protocol_version()

@spec mcp_protocol_version() :: String.t()

MCP protocol version string.

mcp_server_request_timeout_ms()

@spec mcp_server_request_timeout_ms() :: pos_integer()

Timeout for app-server MCP server requests like list/reload (default: 30,000ms).

mcp_tool_name_delimiter()

@spec mcp_tool_name_delimiter() :: String.t()

Delimiter for qualified MCP tool names.

oauth_browser_callback_port()

@spec oauth_browser_callback_port() :: non_neg_integer()

Default localhost callback port for browser OAuth login (default: 1455).

Overridable at runtime:

config :codex_sdk, oauth_browser_callback_port: 1455

oauth_browser_callback_timeout_ms()

@spec oauth_browser_callback_timeout_ms() :: pos_integer()

Overall timeout for browser login callback completion (default: 120,000ms).

oauth_device_code_max_poll_interval_ms()

@spec oauth_device_code_max_poll_interval_ms() :: pos_integer()

Maximum device code polling interval (default: 10,000ms).

oauth_device_code_timeout_ms()

@spec oauth_device_code_timeout_ms() :: pos_integer()

Overall timeout for device code login completion (default: 900,000ms).

oauth_http_timeout_ms()

@spec oauth_http_timeout_ms() :: pos_integer()

HTTP timeout for OAuth token requests (default: 10,000ms).

oauth_refresh_skew_ms()

@spec oauth_refresh_skew_ms() :: pos_integer()

OAuth token refresh skew — refresh this many ms before expiry (default: 30,000ms).

oauth_wsl_device_fallback_grace_ms()

@spec oauth_wsl_device_fallback_grace_ms() :: pos_integer()

WSL grace window before browser flow falls back to device flow (default: 5,000ms).

openai_api_base_url()

@spec openai_api_base_url() :: String.t()

Default OpenAI API base URL.

openai_realtime_ws_url()

@spec openai_realtime_ws_url() :: String.t()

Default OpenAI Realtime WebSocket URL.

pcm16_bytes_per_sample()

@spec pcm16_bytes_per_sample() :: pos_integer()

PCM16 bytes per sample (default: 2).

pcm16_sample_rate()

@spec pcm16_sample_rate() :: pos_integer()

PCM16 audio sample rate in Hz (default: 24,000).

preserved_env_keys()

@spec preserved_env_keys() :: [String.t()]

Environment variable keys preserved when running with a cleared environment.

project_root_markers()

@spec project_root_markers() :: [String.t()]

Markers used to find project root (default: [".git"]).

rate_limit_default_delay_ms()

@spec rate_limit_default_delay_ms() :: pos_integer()

Default delay when rate-limited without an explicit Retry-After header.

Overridable at runtime:

config :codex_sdk, rate_limit_default_delay_ms: 120_000

rate_limit_max_delay_ms()

@spec rate_limit_max_delay_ms() :: pos_integer()

Maximum delay for rate-limit backoff.

Overridable at runtime:

config :codex_sdk, rate_limit_max_delay_ms: 600_000

rate_limit_multiplier()

@spec rate_limit_multiplier() :: float()

Multiplier for exponential rate-limit backoff.

Overridable at runtime:

config :codex_sdk, rate_limit_multiplier: 3.0

remote_models_cache_ttl_seconds()

@spec remote_models_cache_ttl_seconds() :: pos_integer()

Cache TTL for remote model list in seconds (default: 300 — 5 min).

remote_models_http_timeout_ms()

@spec remote_models_http_timeout_ms() :: pos_integer()

HTTP timeout for remote model list fetches (default: 10,000ms).

retry_base_delay_ms()

@spec retry_base_delay_ms() :: pos_integer()

Base delay for Codex.Retry backoff (default: 200ms).

retry_max_attempts()

@spec retry_max_attempts() :: pos_integer()

Default maximum retry attempts for Codex.Retry (default: 4).

retry_max_delay_ms()

@spec retry_max_delay_ms() :: pos_integer()

Maximum delay cap for Codex.Retry backoff (default: 10,000ms).

sessions_apply_timeout_ms()

@spec sessions_apply_timeout_ms() :: pos_integer()

Session apply patch timeout (default: 60,000ms).

sessions_dir()

@spec sessions_dir() :: String.t()

Default sessions storage directory.

shell_max_output_bytes()

@spec shell_max_output_bytes() :: pos_integer()

Maximum shell command output before truncation (default: 10,000 bytes).

shell_timeout_ms()

@spec shell_timeout_ms() :: pos_integer()

Shell command execution timeout (default: 60,000ms).

stream_queue_pop_timeout_ms()

@spec stream_queue_pop_timeout_ms() :: pos_integer()

Default pop timeout for StreamQueue and RunResultStreaming (default: 5,000ms).

stt_default_turn_detection()

@spec stt_default_turn_detection() :: map()

Default STT turn detection configuration.

stt_model()

@spec stt_model() :: String.t()

Default STT model name.

system_config_path()

@spec system_config_path() :: String.t()

System-level config file path (default: /etc/codex/config.toml).

telemetry_default_originator()

@spec telemetry_default_originator() :: atom()

Default originator tag for telemetry metadata.

telemetry_otel_handler_id()

@spec telemetry_otel_handler_id() :: String.t()

OpenTelemetry handler ID.

telemetry_processor_name()

@spec telemetry_processor_name() :: atom()

Default OpenTelemetry processor name.

transport_call_timeout_ms()

@spec transport_call_timeout_ms() :: pos_integer()

GenServer call timeout for transport operations (default: 5,000ms).

transport_close_grace_ms()

@spec transport_close_grace_ms() :: pos_integer()

Grace period for transport close before escalation (default: 2,000ms).

transport_finalize_delay_ms()

@spec transport_finalize_delay_ms() :: pos_integer()

Delay before finalizing exit to drain remaining output (default: 25ms).

transport_force_close_timeout_ms()

@spec transport_force_close_timeout_ms() :: pos_integer()

Timeout for force-close operations (default: 500ms).

transport_headless_timeout_ms()

@spec transport_headless_timeout_ms() :: pos_integer()

Timeout for headless transport without subscribers (default: 5,000ms).

transport_kill_grace_ms()

@spec transport_kill_grace_ms() :: pos_integer()

Grace period for transport kill before demonitor (default: 250ms).

transport_max_buffer_size()

@spec transport_max_buffer_size() :: pos_integer()

Maximum stdout buffer size in bytes (default: 1,048,576 — 1 MiB).

transport_max_lines_per_batch()

@spec transport_max_lines_per_batch() :: pos_integer()

Maximum stdout lines drained per batch (default: 200).

transport_max_stderr_buffer_size()

@spec transport_max_stderr_buffer_size() :: pos_integer()

Maximum stderr buffer size in bytes (default: 262,144 — 256 KiB).

transport_shutdown_grace_ms()

@spec transport_shutdown_grace_ms() :: pos_integer()

Grace period for transport shutdown before kill (default: 250ms).

tts_buffer_size()

@spec tts_buffer_size() :: pos_integer()

Default TTS audio buffer size in bytes (default: 120).

tts_default_instructions()

@spec tts_default_instructions() :: String.t()

Default TTS instructions for partial-sentence streaming.

tts_default_voice()

@spec tts_default_voice() :: atom()

Default TTS voice.

tts_model()

@spec tts_model() :: String.t()

Default TTS model name.

tts_stream_timeout_ms()

@spec tts_stream_timeout_ms() :: pos_integer()

TTS stream receive timeout (default: 30,000ms).

voice_default_sample_rate()

@spec voice_default_sample_rate() :: pos_integer()

Default voice input sample rate in Hz (default: 24,000).

web_search_max_results()

@spec web_search_max_results() :: pos_integer()

Default maximum results for web search tool (default: 10).