Field guide / 22 min
Plan Codex work by model, effort, and scope
Preserve session continuity, then choose Sol, Terra, or Luna without changing the permission boundary.
Model-aware planning is more than selecting the largest model. Keep the CLI that already holds the repository and conversation context, map each task to a role, select only an effort advertised by that model, and keep subagent orchestration separate from single-task depth. Codex configuration still resolves by scope, while model access can drift by release, account, authentication method, quota, and rollout.
Verified terminal sequence
- ›
/model - ›
/status - $
codex -p deep-review - $
codex -m gpt-5.6-terra -c 'model_reasoning_effort="medium"' -s workspace-write "<GOAL>" - $
codex exec -m gpt-5.6-sol -c 'model_reasoning_effort="high"' -s read-only --ephemeral "<GOAL>" - $
codex exec -m gpt-5.6-luna -c 'model_reasoning_effort="low"' -s read-only --ephemeral "<GOAL>"
Working principles
Continuity first
Keep the active Codex session for normal repository work. Switch CLI only for a concrete native workflow or independent review benefit that exceeds the cost of rebuilding context.
Roles before rankings
In the Codex CLI 0.147.0 snapshot, GPT-5.6 Sol is the deep frontier role, GPT-5.6 Terra is the balanced everyday role, and GPT-5.6 Luna is the fast repeatable role. These are routing roles, not a timeless benchmark ranking.
Reasoning is not authority
Changing model, native effort, max, or ultra never upgrades sandbox, approval policy, writable roots, network access, or external-action authority. Preserve or narrow the active permission boundary.
Catalogs are account-scoped snapshots
Use /model and /status before launch. Availability, aliases, defaults, quotas, and supported effort can drift by release and account, so a dated catalog is evidence—not entitlement.
Field procedure
- 01
Inspect live state before choosing
Run /model and /status in the active account. The 2026-08-10 Codex CLI 0.147.0 snapshot exposes gpt-5.6-sol, gpt-5.6-terra, and gpt-5.6-luna, but your live catalog is authoritative.
- 02
Match the task to a model role
Use Sol for ambiguous architecture, hard debugging, security reasoning, or final synthesis; Terra for normal edit-test-review work; Luna for clear extraction, formatting, inventory, and other fast repeatable work. Keep the current model when the expected gain is smaller than the context-switch cost.
- 03
Choose only supported native effort
The captured Sol and Terra records support low, medium, high, xhigh, max, and ultra. Luna supports low through max but not ultra. Use max for deeper single-task reasoning; ultra is provider-native subagent orchestration, not a stronger synonym for max. Verify the selected model before using either.
- 04
Launch with explicit safe boundaries
For normal edits use gpt-5.6-terra with model_reasoning_effort="medium" and workspace-write. For read-only deep analysis use Sol/high; for read-only mechanical work use Luna/low. Keep the TOML value quoted. In Codex, -p/--profile selects a profile—it never means print, prompt, or non-interactive execution; use codex exec for headless work.
- 05
Ask the Knowledge MCP for the dated catalog
In an MCP client, call worlds_list_cli_models with {"products":["codex"]}. Read the returned availability, supported_efforts, constraints, capture date, and source, then compare it with /model before executing a selector.
- 06
Generate an advisory work plan
Call worlds_plan_cli_work with {"task":"<GOAL>","current_cli":"codex","available_clis":["codex"],"workstreams":[{"id":"implementation","goal":"<GOAL>","execution_intent":"may-edit"}],"strategy":"continuity-first","risk_tolerance":"low","execution_environment":"local-workspace","orchestration_mode":"none","require_independent_review":false} only when edits are already authorized. Omit that intent for read-only work, which is the default. Treat assignments and commands as reviewable advice: the tool does not launch a CLI or grant permissions.
- 07
Fallback without inventing access
If a named model or effort is unavailable, re-open /model, use a supported live choice or omit the explicit model override, and keep the existing sandbox and approval policy. Record the fallback and rerun the task-specific verification.
- 08
Persist only durable configuration
Personal defaults belong in user config, shared trusted-repository behavior in project config, specialized behavior in a separate profile file, and one-time model experiments on the command line.
PASS / FAIL
Acceptance checklist
- The active session was retained unless a concrete switch benefit was documented.
- The selected model exists in /model for this account.
- The selected native effort is supported by that exact model.
- max and ultra have not been treated as interchangeable.
- Model selection did not widen permissions.
- MCP output was checked against the live catalog before launch.
- The command uses quoted TOML and the intended sandbox.
- Fallback and verification are explicit.
WATCH / REJECT
Failure patterns
- Treating Sol, Terra, or Luna as permanent account entitlements.
- Using ultra on Luna or using orchestration when the task is not independently decomposable.
- Assuming higher effort grants tools, network, or write access.
- Using codex -p as if it were a print or prompt flag.
- Copying an MCP command without checking the local CLI and effective policy.
- Using the removed legacy profiles table.