Here is a complete, pasteable baseline for ~/.codex/config.toml. It preserves maximum root-agent reasoning while preventing inherited Ultra behavior and strongly discouraging FullHistory forks.
# ~/.codex/config.toml
# Root-agent defaults.
model = "gpt-5.6-sol"
model_reasoning_effort = "max"
# Keep planning capable without enabling Ultra orchestration.
plan_mode_reasoning_effort = "high"
model_reasoning_summary = "auto"
model_verbosity = "medium"
# Conservative execution defaults. Preserve your existing values if preferred;
# these settings do not affect context hydration.
approval_policy = "on-request"
sandbox_mode = "workspace-write"
# There is currently no hard config option for the default fork_turns value.
# These instructions therefore make explicit, isolated forks the policy.
developer_instructions = """
Multi-agent delegation policy:
- Do not spawn subagents unless the task contains at least two independent workstreams and delegation materially improves the outcome.
- Every spawn_agent call must set fork_turns explicitly; never rely on its default.
- Use fork_turns: "none" by default.
- Use a small positive fork_turns value only when the child needs specific recent decisions.
- Use fork_turns: "all" only when the full retained conversation is essential to completing the delegated task.
- Never select reasoning_effort: "ultra" for a subagent.
- Subagents must not spawn further subagents unless the user explicitly requests recursive delegation.
- Reuse an existing subagent for follow-up work instead of spawning a replacement when practical.
"""
[agents]
enabled = true
# Keeps child quality equivalent to the root without inheriting Ultra's
# proactive delegation behavior.
default_subagent_model = "gpt-5.6-sol"
default_subagent_reasoning_effort = "max"
# At most two spawned-agent threads may be open concurrently.
# This excludes the primary/root thread.
max_concurrent_threads_per_session = 2
# Preserve visible interruption records.
interrupt_message = true
The important hard controls are default_subagent_reasoning_effort = "max" and the concurrency cap; explicit spawn arguments can still override the child default. The fork_turns rules are advisory because Codex currently has no configuration key that changes its FullHistory default. These keys are documented in the official Codex configuration reference and implemented in config_toml.rs.
If you intentionally want an Ultra root while preventing Ultra children, change only:
model_reasoning_effort = "ultra"
Keep:
default_subagent_reasoning_effort = "max"
That produces:
Ultra root → proactive orchestration
Max children → maximum reasoning, no inherited proactive mode
For a cheaper child tier, change these two lines:
default_subagent_model = "gpt-5.6-terra"
default_subagent_reasoning_effort = "high"
GPT-5.6’s official guidance recommends reserving max for the hardest quality-first workloads and comparing it against lower efforts for cost and latency. OpenAI model guidance
For the absolute off switch:
[agents]
enabled = false
[features]
multi_agent_v2 = false
Merge the baseline into your existing file instead of replacing it if you already have MCP servers, plugins, project trust entries, or permission profiles. Restart Codex and begin a new thread afterward; an existing resumed thread may retain its conversation-level Ultra selection.