
Local Codex Finally Stops Disabling Reasoning Summaries
We unpack a fix that stops the local Codex TUI from silently overriding reasoning summary defaults, so model and server settings now take effect as intended. Plus: Windows Terminal key handling, provider capability cleanup, macOS code-signing support, and other recent Codex changes.
Chapter 1
Reasoning Summaries Stop Being Forced Off
Ethan Park
Until this week, a fresh local Codex session could quietly switch off reasoning summaries before you typed a single prompt. A pull request merged on October 4th stops that. Thanks to Jellypod for helping make this daily show a reality. This is The Codex Changelog, I'm Ethan.
Maya
And I'm Maya. The change is PR 50811, commit afb436d, merged into openai codex main on October 4th, 2026. It builds on something we mentioned briefly before. In 0.160.0, PR 49144 made the terminal UI preserve reasoning summary settings for server connections. That fixed connections to a server. This one closes the remaining gap, which is the embedded local TUI thread you get when you just run codex.
Ethan Park
Here's the mechanism. When you launched an embedded session without any explicit reasoning summary configuration, the TUI runner injected its own launch override. That override set model reasoning summary to false. So from the model's point of view, somebody had configured summaries off, even though nobody had. The model's own default, and any default coming from a remote or managed server, got overridden by a client that was guessing.
Maya
And the models in question matter here. The brief names GPT 6.1 Sol, GPT 6 Luna, and Astra as models that may emit reasoning summaries. I'd stress the word may. This isn't a promise that every model will now show you a summary. It's that the decision goes back to the model and the server instead of being made by the TUI at startup.
Ethan Park
The fix is that embedded threads and remote or app server threads now share the same launch override resolution. If you haven't set a summary preference, the TUI sends nothing, and the upstream configuration and model defaults decide. If you have set one, it's forwarded faithfully. That applies to model_reasoning_summary, and also to features.concurrent_reasoning_summaries. Explicit false values are preserved, and explicit true values are preserved. The only thing that changed is the unconfigured case.
Maya
Why does that matter in practice? Two reasons. First, if you run on a team where a server defines reasoning visibility defaults, maybe for auditability, your local TUI could have been undercutting that policy without anyone noticing. Second, if you ever wondered why summaries showed up in one surface and not in your terminal, this is a plausible explanation. I'd call that interpretation, not something the PR states, but the behavior it describes would produce exactly that symptom.
Ethan Park
So how do you use it? The zero config path first. Get onto a build that includes the change. It landed on main after the stable 0.160.0 release, and it should be in the 0.162.0 alpha stream, around alpha 12 and alpha 13. Then launch codex with no summary settings anywhere. If your model or server defaults to producing summaries, they should now show up on their own.
Maya
If you'd rather be explicit, you can say so in config. In your home codex config.toml, or in a project level dot codex config.toml, set model_reasoning_summary to true, or to false if you want them off. Then under the features table, set concurrent_reasoning_summaries to true if you want reasoning streamed alongside the response. There's also a command line route. You can pass the model reasoning summary startup flag with true or false, or put the value in a profile, and the runner now honors either boolean instead of treating unconfigured as off.
Ethan Park
Now the caveats, and the first one is the one most likely to bite. Stale workaround configs. Some people hardcoded model_reasoning_summary equals false in config.toml during earlier regressions, the brief mentions the 0.155.1 proxy choking problem. That line is now strictly respected. It was never wrong to have it, but it means you won't see the new default behavior. If you want it, delete the line.
Maya
Second, stream overhead. Concurrent reasoning summaries send additional chunks over your connection. If you're behind a strict enterprise proxy that already struggles with long running HTTP streaming or chunked transfers, turning that on, or inheriting it from a server default, could mean latency or dropped connections. If that's you, test it before you roll it out, and keep the explicit false setting as your escape hatch.
Ethan Park
Third, channel timing. This is alpha stream material. Stable users on 0.160.0 won't see it until it reaches the next stable minor release. So if a teammate on stable says summaries look different from yours, check versions before you check config.
Chapter 2
Smaller Changes Worth Knowing
Maya
A few smaller items from this week's commits. PR 50720, from October 3rd, fixes Shift plus Enter in Windows Terminal. Windows Terminal sends it as an escape sequence, ESC 13;2u. Codex now decodes that with a 50 millisecond deadline, so you get a newline in the composer. Before, keys could be dropped, stray Escape events could fire, or a draft could submit early.
Ethan Park
PR 50447, October 2nd, removes namespace_tools from ProviderCapabilities. Tool namespaces and collaboration tool configs no longer need provider gate checks, and they use Responses Lite serialization directly. If you maintain a custom provider, that's worth a look.
Maya
PR 50384 adds an opt in for 16 KiB ARM64 code pages in macOS code signing. You enable it with the environment variable OAI_RCODESIGN_ARM64_16K_CODE_PAGES set to true. The stated purpose is supporting newer Apple Silicon kernel memory page alignments, so it mostly matters if you build Codex yourself.
Ethan Park
And two more from October 2nd. PR 50128 exposes current_turn_model through the API, so you can audit which model handled a turn in real time. PR 50082 lets V2 subagents inherit parent scoped tool registrations dynamically, so child agents pick up the tools the parent has.
Maya
The action item for today is small. Open your config.toml, search for model_reasoning_summary, and decide whether that line is still a choice or just an old workaround. That's the show for today. We'll be back tomorrow with the next changelog.