Codex CLI ignores model setting from config.toml
What version of Codex CLI is running?
codex-cli 0.144.5
What subscription do you have?
enterprise
Which model were you using?
_No response_
What platform is your computer?
Linux 6.6.144-1-MANJARO x86_64 unknow
What terminal emulator and version are you using (if applicable)?
alacritty 0.17.0 (94e7c887)
Codex doctor report
{
"schemaVersion": 1,
"generatedAt": "1784220136s since unix epoch",
"overallStatus": "ok",
"codexVersion": "0.144.5",
"checks": {
"app_server.status": {
"id": "app_server.status",
"category": "app-server",
"status": "ok",
"summary": "background server is not running",
"details": {
"control socket": "/home/lyndon/.codex/app-server-control/app-server-control.sock",
"daemon state dir": "/home/lyndon/.codex/app-server-daemon",
"mode": "ephemeral",
"pid file": "/home/lyndon/.codex/app-server-daemon/app-server.pid (missing)",
"settings": "/home/lyndon/.codex/app-server-daemon/settings.json (missing)",
"status": "not running",
"update-loop pid file": "/home/lyndon/.codex/app-server-daemon/app-server-updater.pid (missing)"
},
"remediation": null,
"durationMs": 0
},
"auth.credentials": {
"id": "auth.credentials",
"category": "auth",
"status": "ok",
"summary": "auth is configured",
"details": {
"auth file": "/home/lyndon/.codex/auth.json",
"auth storage mode": "File",
"stored API key": "false",
"stored ChatGPT tokens": "true",
"stored agent identity": "false",
"stored auth mode": "chatgpt"
},
"remediation": null,
"durationMs": 0
},
"config.load": {
"id": "config.load",
"category": "config",
"status": "ok",
"summary": "config loaded",
"details": {
"CODEX_HOME": "/home/lyndon/.codex",
"config.toml": "/home/lyndon/.codex/config.toml",
"config.toml parse": "ok",
"cwd": "/home/lyndon/holland-and-barrett/repos/dns-de-rte-orchestrator",
"enabled feature flags": "shell_tool, unified_exec, shell_snapshot, code_mode_host, terminal_resize_reflow, sqlite, hooks, enable_request_compression, multi_agent, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, skill_mcp_dependency_install, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, personality, fast_mode, tui_app_server, remote_compaction_v2, workspace_dependencies",
"feature flag overrides": "none",
"feature flags enabled": "35",
"log dir": "/home/lyndon/.codex/log",
"mcp servers": "6",
"model": "gpt-5.4-mini",
"model provider": "openai",
"sqlite home": "/home/lyndon/.codex"
},
"remediation": null,
"durationMs": 0
},
"git.environment": {
"id": "git.environment",
"category": "git",
"status": "ok",
"summary": "git version 2.55.0",
"details": {
".git entry": "directory",
"PATH git #1": "/usr/bin/git",
"PATH git #2": "/bin/git",
"PATH git entries": "2",
"git branch": "add-testing-client",
"git build options": "git version 2.55.0; cpu: x86_64; built from commit: e9019fcafe0040228b8631c30f97ae1adb61bcdc; sizeof-long: 8; sizeof-size_t: 8; shell-path: /bin/sh; rust: enabled; feature: fsmonitor--daemon; gettext: enabled; libcurl: 8.21.0; OpenSSL: OpenSSL 3.6.3 9 Jun 2026; zlib-ng: 2.3.3; SHA-1: SHA1_DC; SHA-256: SHA256_BLK; default-ref-format: files; default-hash: sha1",
"git exec path": "/usr/lib/git-core",
"git version": "git version 2.55.0",
"repo detected": "true",
"repo root": "/home/lyndon/holland-and-barrett/repos/dns-de-rte-orchestrator",
"selected git": "/usr/bin/git"
},
"remediation": null,
"durationMs": 29
},
"installation": {
"id": "installation",
"category": "install",
"status": "ok",
"summary": "installation looks consistent",
"details": {
"PATH codex #1": "/usr/bin/codex",
"PATH codex #2": "/bin/codex",
"PATH codex entries": "2",
"current executable": "/usr/bin/codex",
"install context": "other",
"managed by bun": "false",
"managed by npm": "false",
"managed by pnpm": "false",
"managed package root": "not set"
},
"remediation": null,
"durationMs": 0
},
"mcp.config": {
"id": "mcp.config",
"category": "mcp",
"status": "ok",
"summary": "MCP configuration is locally consistent",
"details": {
"configured servers": "6",
"disabled servers": "0",
"stdio servers": "4",
"streamable_http servers": "2"
},
"remediation": null,
"durationMs": 3969
},
"network.env": {
"id": "network.env",
"category": "network",
"status": "ok",
"summary": "network-related environment looks readable",
"details": {
"proxy env vars": "none"
},
"remediation": null,
"durationMs": 0
},
"network.provider_reachability": {
"id": "network.provider_reachability",
"category": "reachability",
"status": "ok",
"summary": "active provider endpoints are reachable over HTTP",
"details": {
"ChatGPT base URL": "https://chatgpt.com/backend-api/ reachable (HTTP 403)",
"reachability mode": "ChatGPT auth"
},
"remediation": null,
"durationMs": 352
},
"network.websocket_reachability": {
"id": "network.websocket_reachability",
"category": "websocket",
"status": "ok",
"summary": "Responses WebSocket handshake succeeded",
"details": {
"DNS": "2 IPv4, 0 IPv6, first IPv4",
"auth mode": "chatgpt",
"connect timeout": "15000 ms",
"endpoint": "wss://chatgpt.com/backend-api/<redacted>",
"handshake result": "HTTP 101 Switching Protocols",
"model provider": "openai",
"models etag present": "true",
"provider name": "OpenAI",
"proxy env vars": "none",
"reasoning header": "false",
"server model present": "false",
"supports websockets": "true",
"wire API": "responses"
},
"remediation": null,
"durationMs": 1073
},
"runtime.provenance": {
"id": "runtime.provenance",
"category": "runtime",
"status": "ok",
"summary": "running local build on linux-x86_64",
"details": {
"commit": "unknown",
"current executable": "/usr/bin/codex",
"install method": "other",
"platform": "linux-x86_64",
"version": "0.144.5"
},
"remediation": null,
"durationMs": 0
},
"runtime.search": {
"id": "runtime.search",
"category": "search",
"status": "ok",
"summary": "search is OK (system)",
"details": {
"search command": "rg",
"search command readiness": "ripgrep 15.1.0",
"search provider": "system"
},
"remediation": null,
"durationMs": 1
},
"sandbox.helpers": {
"id": "sandbox.helpers",
"category": "sandbox",
"status": "ok",
"summary": "sandbox configuration is readable",
"details": {
"approval policy": "OnRequest",
"codex-linux-sandbox helper": "/home/lyndon/.codex/tmp/arg0/codex-arg0MSam0P/codex-linux-sandbox",
"execve wrapper helper": "/home/lyndon/.codex/tmp/arg0/codex-arg0MSam0P/codex-execve-wrapper",
"filesystem sandbox": "restricted",
"network sandbox": "enabled"
},
"remediation": null,
"durationMs": 0
},
"state.paths": {
"id": "state.paths",
"category": "state",
"status": "ok",
"summary": "state paths and databases are inspectable",
"details": {
"CODEX_HOME": "/home/lyndon/.codex (dir)",
"active rollout files": "74 files, 17277247 total bytes, 233476 average bytes",
"archived rollout files": "0 files, 0 total bytes, 0 average bytes",
"goals DB": "/home/lyndon/.codex/goals_1.sqlite (file)",
"goals DB integrity": "ok",
"log DB": "/home/lyndon/.codex/logs_2.sqlite (file)",
"log DB integrity": "ok",
"log dir": "/home/lyndon/.codex/log (dir)",
"memories DB": "/home/lyndon/.codex/memories_1.sqlite (file)",
"memories DB integrity": "ok",
"sqlite home": "/home/lyndon/.codex (dir)",
"state DB": "/home/lyndon/.codex/state_5.sqlite (file)",
"state DB integrity": "ok"
},
"remediation": null,
"durationMs": 124
},
"state.rollout_db_parity": {
"id": "state.rollout_db_parity",
"category": "threads",
"status": "ok",
"summary": "rollout files and state DB thread inventory agree",
"details": {
"default model provider": "openai",
"rollout DB active files": "74",
"rollout DB active rows": "74",
"rollout DB archive mismatches": "0",
"rollout DB archived files": "0",
"rollout DB archived rows": "0",
"rollout DB duplicate DB paths": "0",
"rollout DB duplicate rollout thread ids": "0",
"rollout DB malformed file names": "0",
"rollout DB missing active rows": "0",
"rollout DB missing archived rows": "0",
"rollout DB model providers": "openai=74",
"rollout DB rows": "74",
"rollout DB scan cap reached": "false",
"rollout DB scan errors": "0",
"rollout DB sources": "cli=64, subagent:review=10",
"rollout DB stale rows": "0"
},
"remediation": null,
"durationMs": 290
},
"system.environment": {
"id": "system.environment",
"category": "system",
"status": "ok",
"summary": "OS language en-GB",
"details": {
"EDITOR": "set",
"LANG": "en_GB.UTF-8",
"LESS": "set",
"PAGER": "set",
"VISUAL": "set",
"os": "Manjaro 26.1.0 (Bian-May) [64-bit]",
"os language": "en-GB",
"os type": "Manjaro",
"os version": "26.1.0"
},
"remediation": null,
"durationMs": 11
},
"terminal.env": {
"id": "terminal.env",
"category": "terminal",
"status": "ok",
"summary": "terminal metadata was detected",
"details": {
"COLORTERM": "truecolor",
"DISPLAY": "present",
"TERM": "alacritty",
"color output": "disabled (stdout is not a terminal)",
"effective locale": "en_GB.UTF-8",
"multiplexer": "tmux 3.7b",
"stderr is terminal": "true",
"stdin is terminal": "true",
"stdout is terminal": "false",
"terminal": "unknown",
"terminal size": "192x27",
"tmux allow-passthrough": "off",
"tmux client termname": "alacritty",
"tmux extended-keys": "off",
"tmux focus-events": "on",
"tmux set-clipboard": "external",
"tmux xterm-keys": "on"
},
"remediation": null,
"durationMs": 18
},
"terminal.title": {
"id": "terminal.title",
"category": "title",
"status": "ok",
"summary": "terminal title default",
"details": {
"terminal title activity": "true",
"terminal title items": "activity, project-name",
"terminal title project source": "git repo root",
"terminal title project value": "dns-de-rte-orchestrator",
"terminal title source": "default"
},
"remediation": null,
"durationMs": 0
},
"updates.status": {
"id": "updates.status",
"category": "updates",
"status": "ok",
"summary": "update configuration is locally consistent",
"details": {
"cached latest version": "0.144.5",
"check for update on startup": "true",
"last checked at": "2026-07-16T13:14:58.455162208Z",
"latest version": "0.144.5",
"latest version status": "current version is not older",
"update action": "manual or unknown",
"version cache": "/home/lyndon/.codex/version.json"
},
"remediation": null,
"durationMs": 674
}
}
}
What issue are you seeing?
After recent updates the codex CLI no longer respects my model setting in both my home directory config.toml and local repository directories. I had these set to the following in ~/.codex/config.toml:
model = "gpt-5.4-mini"
model_reasoning_effort = "medium"
And in the local config.toml for a project I also had the model set:
model = "gpt-5.4-mini"
But whenever I start up codex it defaults the model to gpt-5.6-terra with medium reasoning effort. This is surprising and has already led to me using more expensive models than I normally use.
This also happens in newly created directories without a local configuration file.
What steps can reproduce the bug?
Starting up the codex CLI with the codex command in a repository directory or even a blank new directory, with the settings in ~/.codex/config.toml set to
model = "gpt-5.4-mini"
model_reasoning_effort = "medium"
What is the expected behavior?
I expect codex CLI to correctly parse and observe the settings that it previously used and which are documented in the Codex configuration documentation.
Additional information
My MCP and other settings like fast_default_opt_out appear to still be parsed correctly.
I also realise the codex doctor --json output mentions the model I have configured but codex cli itself ignores this when running. As an example, here is what I am presented when starting up a fresh instance of Codex in a project directory:
╭────────────────────────────────────────────────────╮
│ >_ OpenAI Codex (v0.144.5) │
│ │
│ model: gpt-5.6-terra medium /model to change │
│ directory: ~/…/repos/dns-de-rte-orchestrator │
╰────────────────────────────────────────────────────╯
Tip: New Use /fast to enable our fastest inference with increased plan usage.
› Summarize recent commits
gpt-5.6-terra medium · ~/holland-and-barrett/repos/dns-de-rte-orchestrator · Context 100% left · 0 in · 0 out · Fast offThis issue has 3 comments on GitHub. Read the full discussion on GitHub ↗