The Codex Changelog
All Episodes
Codex 0.164.0: Switch Models and Permissions Inline

Codex 0.164.0: Switch Models and Permissions Inline

0:00|0:00

Codex 0.164.0 adds inline arguments to /model and /permissions, letting you switch models, reasoning effort, speed, and permission profiles without navigating pickers. Learn a practical workflow for saving those combinations in /presets, plus caveats around unsupported settings and resumed sessions.

Also covered: credential masking in supported remote shell sessions, image previews for compatible terminals, preserved CLI configuration overrides, and fixes for queued prompts and failed compaction.


Chapter 1

Inline arguments for model and permissions

Ethan Park

So, quick one before we get into it. If you've ever been halfway through a Codex session, wanted to drop the reasoning effort for a boring text edit, and found yourself arrowing through a picker menu, today's change is for you. And thanks to Jellypod for helping make this daily show a reality.

Maya

The release is Codex 0.164.0, tagged rust v0.164.0 on GitHub, published October 23rd, 2026. The headline item for us is that the `/model` and `/permissions` slash commands now take inline arguments. Per the release notes: you can set model, reasoning effort, speed, and permission profiles directly, without going through the interactive pickers.

Ethan Park

Let's be specific about what that replaces. Before this, typing `/model` opened a menu. You hit Enter, scrolled with the arrow keys, picked a model, then went through another step for reasoning effort, and so on. Each selection was a separate screen. Nothing was broken, but it pulled you out of the composer every time you wanted to steer the session.

Maya

The model side is pull request 54378. The shape of the command, from the change description, is `/model`, then the model, then the reasoning effort, then the speed tier, all in one line. So instead of three picker screens, you type one command and press Enter. The permissions side is pull request 54383. There you type `/permissions` followed by the profile name, and the profile switches immediately. Same idea, no menu.

Ethan Park

Why does this matter in practice? Think about how you actually work. Reasoning effort is a real cost and latency dial. If you're renaming a variable across a few files or reformatting some text, you probably want low effort and a fast response. If you're about to ask for a big architectural refactor, you want high, or the top tier some models offer. Those are different settings for different turns of the same session, and if switching costs you a trip through three menus, you tend to just leave it where it was.

Maya

And permissions are the same story in the other direction. Say you're in a tighter permission profile while Codex reads and explains code, and then you decide it's time to let it make edits. Being able to type the profile name and keep going means you change access boundaries deliberately, at the moment you mean to, rather than avoiding the change because it's annoying. I'd call that interpretation rather than something the release notes say, but it follows from the mechanics.

Ethan Park

The other piece of context is that this release also adds `/presets`. That's ten numbered slots where you can save reusable prompts and slash commands, with a keyboard menu for quick access. Now, I'd be careful here. The release notes tell us the presets exist and what they hold. What I can say from the change description is that inline arguments are what make model and permission switches composable with that system, because a switch is now a single line of text that can be saved and replayed.

Maya

There are a few companion pull requests worth knowing about. 54385 adds saving your active permission settings as presets. 54387 adds session only arguments to `/title` and `/statusline`. And 54388 adds quick dial presets for status line and terminal title layouts. They're the same theme: fewer menus, more typed commands you can repeat.

Ethan Park

So here's a workflow you could try today. Update to 0.164.0. Start a session in your normal setup. When you hit a trivial task, type `/model` with your preferred model, a low reasoning effort, and a fast speed tier in one line. When you hit the hard task, type the same command with high effort. Then, once you've landed on two or three combinations you like, save them into `/presets` slots so each one is a single keystroke away from a menu.

Maya

Now the caveats, and there are a few real ones. First, capability matching. The model you pick has to actually support the reasoning effort or speed tier you ask for. According to the change notes, if it doesn't, the command rejects the unsupported parameter rather than quietly substituting something. So if a line fails, check whether that combination exists for that model before assuming a bug.

Ethan Park

Second, resume behavior. This is pull request 55923, listed under bug fixes. Resuming a session now restores the thread's saved settings instead of replacing them with your global defaults. So if you set an inline model or permission override in a thread, that thread keeps those settings when you come back to it later. That's helpful, but it also means a resumed thread can differ from what your config file says. If something behaves unexpectedly after resume, look at what you set in that thread.

Maya

Third, pull request 55682. Queued prompts now wait for pending permission selections to resolve before continuing. If you stack up prompts and a permission choice is still open, they hold until you answer it. Inline arguments make it easier to fire off changes quickly, so it's good that ordering is handled, but don't be surprised if a queued prompt sits there waiting on a permission decision.

Chapter 2

Smaller changes worth a mention

Ethan Park

A few smaller things from the same release. Pull request 54216 lets the fullscreen transcript preview viewed and generated images, as long as your terminal supports the Kitty or Sixel graphics protocols. If your terminal doesn't, you won't get previews, so check support before you go looking for them.

Maya

On the security side, credential masking now applies during supported remote Bash commands and Zsh snapshot sessions, including credentials from custom providers. Those are pull requests 54309, 54432, and 56049. The wording is supported remote commands, so it's not a blanket guarantee for every shell scenario. Still worth knowing it's there.

Ethan Park

Pull request 56022 fixes something that bites scripters. CLI configuration overrides are now preserved when `-c` or `--config` shows up at multiple subcommand levels. Before, an override at one level could get lost. If you wrap Codex in shell scripts, that one's worth a retest.

Maya

Enterprise folks get MCP authentication using eligible Codex account grants or a dedicated sign in, including OAuth clients that require secrets. That's 55334, 55859, and 56001. The Amazon Bedrock setup wizard is now on by default too, with API key entry grouped next to the other AWS sign in methods when credentials are detected.

Ethan Park

Last one, and it's a quiet fix with real value. Pull requests 53932 and 55581 mean a failed compaction no longer leaves partial summaries in your conversation history, and background compaction failures fall back instead of panicking. Both are in the stable 0.164.0 build.

Maya

So the takeaway: update to 0.164.0, try one inline `/model` line and one `/permissions` line today, and save your favorites into presets. That's the whole change, and it's a small habit that pays back every session.