Every Codex off-switch
Published Jul 15, 2026 · Verified against the official config docs
Codex has an opt-out for almost every background behavior, but the keys are scattered across a dozen config.toml sections. This is the whole map in one place: one key per thing you want off. Telemetry, transcript storage, auto-compact, web search, websocket transport, memories, fast mode, skills, update checks, and the TUI polish. Every row below is the exact key and the exact value that turns it off.
Codex ships an opt-out for nearly every background behavior, but the keys live in a dozen different sections of config.toml. If you’ve ever typed codex disable into autocomplete and gotten a shopping list back, this is that list mapped to real keys.
Values
| What you want off | Key | Value |
|---|---|---|
| Analytics | analytics.enabled |
false |
| OpenTelemetry export | otel.exporter / otel.metrics_exporter / otel.trace_exporter |
"none" |
| Prompt text in OTel logs | otel.log_user_prompt |
false |
| Transcript saved to disk | history.persistence |
"none" |
| Auto-compaction | model_auto_compact_token_limit |
set a token number |
| Web search tool | web_search |
"disabled" |
| WebSocket transport | model_providers.<id>.supports_websockets |
false |
| Memories | features.memories |
false |
| Reusing existing memories | memories.use_memories |
false |
| Writing new memories | memories.generate_memories |
false |
| Fast-mode tier picker | features.fast_mode |
false |
| A single skill | [[skills.config]] → enabled |
false |
| Update check on startup | check_for_update_on_startup |
false |
| TUI animations | tui.animations |
false |
| TUI notifications | tui.notifications |
false |
| Onboarding tooltips | tui.show_tooltips |
false |
/feedback command |
feedback.enabled |
false |
| Paste-burst detection | disable_paste_burst |
true |
| Unstable-features warning | suppress_unstable_features_warning |
true |
# root-level switches
analytics.enabled = false
web_search = "disabled"
check_for_update_on_startup = false
disable_paste_burst = true
[otel]
exporter = "none"
metrics_exporter = "none"
trace_exporter = "none"
[history]
persistence = "none"
[features]
memories = false
fast_mode = false
[[skills.config]]
path = "~/.codex/skills/example"
enabled = false
When to change it
Corp or regulated machine where security wants zero telemetry leaving the box: analytics.enabled = false plus all three otel.* exporters set to "none".
Sensitive codebase and you don’t want the session written to history.jsonl: history.persistence = "none".
Offline or air-gapped: web_search = "disabled" and check_for_update_on_startup = false so Codex stops reaching out.
Stuck in the websocket reconnect loop from #13041: set supports_websockets = false on your provider to force the HTTPS transport.
Gotchas
analytics.enabled = false doesn’t zero out metrics on its own. The metrics exporter defaults to statsig (config reference), so set otel.metrics_exporter = "none" too if you want nothing shipping.
web_search defaults to "cached", not off. "disabled" is the only value that removes the tool; the old features.web_search* and tools.web_search boolean forms still parse but are renamed (config reference).
The websocket switch is not a documented fix for #13041. That issue (open, 74 comments) is the server closing the socket with a 1008 Policy frame, not a config bug. Flipping supports_websockets = false just forces the HTTPS fallback people already land on, which stops the reconnect churn. No maintainer has blessed it as the fix.
features.memories is off by default, so that row is belt-and-suspenders unless you turned memories on. The two granular knobs only matter once it’s enabled.
A few keys got renamed and the old spellings may still parse: background_terminal_timeout is now background_terminal_max_timeout, experimental_use_unified_exec_tool is now features.unified_exec, and memories.no_memories_if_mcp_or_web_search is now memories.disable_on_external_context (config reference).
Related settings
- /config/model_reasoning_effort/ — the other big lever on cost and speed. Turning things off trims noise; effort is where you trade thinking time for quality.