Switch models with /model, --model, and -c to match the task
The last lesson moved the effort dial without ever touching which model was doing the thinking. That was deliberate — they’re separate knobs. This lesson is the other one: which brain answers at all. A capable model and a lighter one differ in what they can reason through, the same way effort differs in how hard a single model reasons. The CRUD endpoint and the rules-engine design might each want a different model and a different effort, and Codex lets you set the model three ways depending on when you decide.
Mid-session: /model
Section titled “Mid-session: /model”When you’re already in a session and the next task wants a different gear, switch in place with /model:
/modelIt opens a picker for the active model — and, where the model supports it, the reasoning effort alongside, so you choose the brain and how hard it thinks in one place. The change takes effect on your next prompt; nothing about the session resets. This is the move when the afternoon turns: you finished the boilerplate on a light gear, the rules-engine design is next, and you bump the model up without leaving the conversation you’ve built context in.
At launch: --model / -m
Section titled “At launch: --model / -m”When you already know which model you want before the session even starts, set it on the launch command:
codex -m <model> "design the categorisation rules engine"--model (short -m) overrides the model from your configuration for that run. It’s the right form when the whole session is one kind of work — a heavy design session, or a long run of mechanical edits — and you don’t want to switch partway through.
Per-invocation: -c model=…
Section titled “Per-invocation: -c model=…”The third form is the same -c key=value override you met on the effort dial, pointed at the model key. It sets the model for one invocation without changing any config:
codex -c model="<model>" -c model_reasoning_effort="high" "..."This is how you set both knobs for a single run — a specific model and a specific effort — without touching your standing defaults. When a dedicated flag exists, prefer it (-m reads better than -c model=…); -c earns its place when you’re setting several keys at once, which is exactly what the next lesson turns into a reusable bundle.
The current flags and their short forms live in the CLI reference — pin to it rather than to memory, since these shift.
Why I’m not naming a model — and neither should you memorise one
Section titled “Why I’m not naming a model — and neither should you memorise one”You’ll notice none of the commands above name an actual model, and that’s not coyness. Which models you can choose from depends on how you authenticated. Codex offers two sign-in paths — a ChatGPT subscription sign-in, or an OPENAI_API_KEY — and they don’t expose the same catalogue. Certain capabilities and the newest flagship models are reachable only through the subscription sign-in; API-key auth gives you the standard programmatic catalogue and is the one you’d wire into CI. The mechanism that matters is the concept, not the names: your auth tier gates which models exist in your picker, and the names themselves churn faster than any course can track. Read the picker, read the auth doc, and trust what your session actually offers over any remembered model name.
When speed is the thing you’re buying
Section titled “When speed is the thing you’re buying”There’s a lever here that isn’t about reasoning at all — it’s about latency. Some sessions are interactive in a way where waiting hurts: live iteration, firing a prompt every half-minute, where the agent’s response time is the bottleneck rather than its thinking. Codex exposes a priority service tier for exactly this — faster responses at the same intelligence, by prioritising the infrastructure rather than dialing the model down. You’ll have seen it as a /fast-style command in the TUI, surfaced when the active model advertises the tier; it can also be set as service_tier = "fast" in config.
Two things to keep honest about it. First, it changes speed, not capability — it won’t make a light model reason like a heavy one. Second, the priority tier rides on the subscription sign-in, another place your auth tier decides what’s available. The current behaviour is documented under speed; the exact slash command is data-driven from the model catalogue, so let the TUI tell you whether it’s there rather than assuming the literal /fast.
You now have all three timings for setting the model — mid-session, at launch, per-invocation — plus the effort dial from the last lesson. Setting them by hand every time gets old fast when the same combinations keep recurring. The next lesson bundles them into a named profile you select with one flag.