Article

Codex CLI 0.162 Alpha 12: Tool Catalog and MCP Approval Checks

What to test in Codex CLI 0.162.0-alpha.12: tool visibility, MCP approval routing and Windows daemon fixes, with proposed staging criteria.

Editorial illustration for Codex CLI 0.162 Alpha 12: Tool Catalog and MCP Approval Checks: code brackets represent developer tools. Not documentary evidence.

OpenAI released Codex CLI 0.162.0-alpha.12 as a prerelease on October 4, 2026. For teams running MCP servers, subagents or Windows managed daemons, the changes since alpha.11 give three concrete areas to check: tool visibility during environment failures, approval routing between threads, and Windows startup and installation behavior.

Our recommendation is to stage this build if those paths matter to your deployment. These fixes alone do not establish an urgent upgrade case for a local, single-threaded workflow that does not use them. This is a source-based evaluation plan, not a report of successful tests.

Pin the candidate before comparing behavior

At the October 4 registry check, npm’s alpha tag selected 0.162.0-alpha.12, while latest still selected 0.160.0. The npm registry records the alpha package’s publication at 06:01 UTC; GitHub’s release metadata records the prerelease at 05:48 UTC.

Use the exact package @openai/codex@0.162.0-alpha.12 in your isolated installation workflow. Keep your approved binary and configuration available for rollback. Record the actual CLI, app-server and managed-daemon versions, OS and architecture, model, feature flags, selected environments, MCP server versions and non-secret approval settings. Change the candidate version while holding those other inputs constant.

The source comparison here starts at alpha.11, not at your approved stable build. Review the full difference from your actual baseline before promotion; these selected fixes are not a complete stable-to-alpha migration assessment.

Tool catalog: separate visibility from executability

The environment-tool change keeps enabled command, patch, image and permission tools advertised when execution environments are absent, starting or failed. Environment selectors use all selected environments, not only ready ones. The exec_command schema retains shell and login, with login policy still enforced at execution time.

That does not make an unavailable environment usable. The execution handler tells the model to wait when no usable environment is available and retains a separate error for an unknown environment ID. It does not promise automatic recovery or permission to execute elsewhere.

The operational distinction is visibility, readiness and permission. Check each separately. The following are proposed acceptance criteria for an integration harness that can control environment state, with the selected environment set and configuration held fixed:

Case

Inspect

Expected outcome

Starting or no usable environment

The tool catalog and a harmless call.

Enabled affected tools stay visible; unavailable calls return the wait response.

Failed, then recovered

Tool names, selectors, shell/login fields and the execution destination.

Schema stays stable for fixed configuration; an allowed call after recovery reaches the intended environment.

Unknown environment ID

A call specifying an invalid environment ID.

A distinct invalid-ID error, not the wait response or a fallback environment.

Login shells prohibited

The advertised login field under the restrictive policy.

The field remains present, but a prohibited request is rejected. Check allowed calls separately.

These are checks for the affected environment-backed tools, not a guarantee that every third-party MCP catalog is immutable. Capture the model-facing schema through your harness or diagnostics; a normal ready session cannot establish failure-and-recovery behavior. If you cannot create a required state, mark that case unperformed.

For the architectural background, see our earlier Codex CLI guide to remote execution and Code Mode.

MCP approval routing: test both destinations

MCP approval routing should keep unrelated threads out while preserving legitimate subagent prompts. According to OpenAI’s routing change, an unrelated thread’s MCP startup notification could previously create a terminal UI event channel through which a later approval request appeared. The change checks an untracked subagent’s parent and shares ownership checks between notification and approval routing, including side threads.

The important test is therefore the event sequence, not just a single approval prompt. In a disposable app-server setup:

  1. Create a primary terminal session, its owned subagent and side-thread cases, plus an unrelated thread. Use harmless fixture actions that require approval.

  2. Vary the order of MCP startup, thread-start and approval events. Include delayed thread metadata, and record the thread ID and prompt destination.

  3. Require owned requests to remain reviewable and unrelated requests to stay out of the current session. Suppressing every prompt is not a pass. Keep approval restrictions enabled.

The release-pinned ownership helper limits its parent-metadata lookup to one second. That internal budget is not an approval-delivery guarantee or a server startup timeout. Include delayed metadata in the fixture instead of assuming a timeout setting fixes routing.

For a basic inventory, official OpenAI documentation provides codex mcp list for configured servers and /mcp inside the terminal UI for active servers. Those views do not replace model-facing schema capture. The routing change concerns which session displays a request; it does not establish a broader authorization or cross-account isolation guarantee.

Windows: check socket permissions and daemon installation separately

The Windows foreground remote-control change lets the transport create the socket’s parent directory with a protected discretionary access-control list, rather than inheriting the temporary directory’s broader permissions. On a disposable Windows host, check both startup and the resulting directory permissions. Do not broaden permissions to make the test pass.

A separate managed-daemon change retries the rename that moves a staged release into its installed location when Windows reports permission-denied or sharing-violation errors. This addresses brief file contention, such as an executable scanner holding newly staged files; it is not a general repair for installation failures.

The release-pinned implementation allows 100 retries with 50 milliseconds of sleep between attempts. Calculation: 100 × 50 ms = 5,000 ms of scheduled retry sleep, with up to 101 rename attempts including the first. Filesystem work and scheduling add time, so five seconds is not a hard wall-clock limit.

  • Exercise three installation cases: no contention, a short-lived held handle, and persistent contention. Record the outcome, elapsed time and final path or error.

  • For the short-lived lock, require the staged payload to survive installation intact. For persistent failure, require a diagnosable error rather than assuming retries can resolve it.

  • Confirm the daemon actually starts on the intended version. A CLI package update alone does not prove that a running daemon or desktop-bundled engine changed.

Use Windows for these checks; a Linux or macOS run cannot validate Windows file-sharing or access-control behavior. This source review does not establish which desktop release bundles alpha.12.

What would justify promotion?

Compare the candidate and approved baseline using the same fixtures. Require the relevant positive and negative cases above, one normal end-to-end task, and a verified rollback on disposable state. If a relevant check fails, retain the baseline and capture a minimal redacted reproducer. If a required case remains unperformed, do not count it as passed.

The decision should follow the paths your deployment actually uses. The reviewed sources establish implementation changes, not measured reliability gains, better coding quality or production readiness. No stable-release date for 0.162.0 was established.

Methodology: This AI-assisted guide draws on OpenAI’s public release metadata, pull requests, release-pinned code, npm metadata and official documentation, checked on October 4, 2026. No binaries were installed and no workflow, approval or Windows experiments were run for this article. The acceptance criteria are analysis, not observed results.