Service eligibility and regional restrictions
PuppyIP serves only compliant overseas businesses and their authorized personnel. Proxy services are not available in mainland China. The service may only be used for lawful business activities outside mainland China. Use of this service within mainland China is prohibited.
Hosting a proxy IP or server overseas does not change these restrictions. The service must not be provided to end users in mainland China through relaying, forwarding, sharing or resale. Before use, read the Terms of Service.
Key Takeaways
- Released October 5, CLI 0.160.1 preserves SYSTEMROOT, TEMP and TMP from the Windows executor for the specific combination of remote stdio and explicit remote environment variables.
- Plain strings in env_vars and source = local read from the Codex control host. Only source = remote reads from the remote executor.
- Current documentation uses experimental_environment = remote to select an existing remote execution environment; the source also requires an explicit cwd. This does not create a Windows executor.
- Confirm process startup, MCP initialization and tool discovery before an authorized minimal operation. Preserving startup variables does not pass every secret through or fix authentication and protocol errors.
First check whether your setup matches this fix
OpenAI released Codex CLI 0.160.1 on October 5, 2026. It fixes missing Windows startup environment variables when a Unix control host launches a Windows remote stdio MCP server with explicit remote variables. PR 51121 was merged and backported to the 0.160 release line. This is an existing released patch, not a feature introduced today.
MCP lets Codex call external tools. With stdio, the client communicates with the server through its standard input and output. Here, remote means the process starts on an executor. Do not confuse this with Streamable HTTP MCP, which accesses a service through a URL.
Consider a hypothetical setup: you control Codex from a Mac or Linux machine, run the MCP process on a Windows executor, and explicitly request a variable from that executor. If the executor connection succeeds but process startup fails, this path is worth checking. The same conclusion does not automatically apply to ordinary local Windows MCP or an HTTP service.
Why can one remote variable affect Windows startup?
The fix shows that explicit remote variables activate an allowlist: only default and specifically requested variables reach the child process. Version 0.160.1 adds SYSTEMROOT, TEMP and TMP to that list, preserving inputs for the Windows system and temporary directories. It retains values from the executor rather than copying Mac or Linux paths to Windows.
The actual Windows environment still determines whether those variables exist and their directories are usable. The source keeps filtering unrequested secrets. Reading inherit: All in isolation does not mean every token reaches MCP. Do not enable unrestricted environment inheritance to troubleshoot this issue.
Step 1: identify the actual CLI and where the process runs
On the control host that starts Codex, check the CLI version and executable location. Record the MCP command, args and startup-stage error. If you still run an affected older release, use a team-approved installation channel to select a version containing the fix. Version 0.160.1 is a verified fix release, not a claim about the current latest version.
Next check that the configuration actually starts the stdio process on the Windows executor. Current official documentation uses experimental_environment = remote to choose this path when a remote execution environment is available. The immutable source requires an explicit cwd. Confirm that the command and working directory exist on Windows, use an authorized directory, and keep control-host paths distinct from executor paths.
Step 2: separate variable names from where their values come from
Inspect the relevant mcp_servers configuration. env sets variable values; env_vars allows and forwards variables. In the current documentation example, the plain string "LOCAL_TOKEN" and source = "local" both read from the Codex control host. A same-named variable on Windows does not make a plain string read from that executor instead.
For an authorized variable on the executor, the documented syntax is env_vars = [{ name = "REMOTE_TOKEN", source = "remote" }]. This requires remote MCP stdio. REMOTE_TOKEN is an example variable name, not a real credential. Choose names the application needs, and keep secret values out of configuration explanations, screenshots and support logs.
Have an authorized maintainer check SYSTEMROOT, TEMP and TMP on the Windows executor and confirm that the corresponding directories exist and are accessible. Do not overwrite them with the temporary directory on the control host. The patch preserves existing inputs; it does not create directories, install missing runtimes or grant file permissions.
Step 3: verify MCP after the process starts
After saving authorized configuration changes, reload MCP using the restart method for your client. Current documentation uses codex mcp list to show configured servers and /mcp in the Codex TUI to show active servers. A name in a list is only one check: use startup logs to confirm that the target process initialized and completed tool discovery.
Then perform one authorized minimal operation in an isolated setting without sensitive data. Record the result and check that existing approvals still work. Process startup, visible tools and a successful operation are separate checkpoints. One success does not establish that other tools or real business workflows will work.
If it still fails, narrow the problem by stage
If the command cannot be found, inspect the program, runtime and cwd on Windows. If the process starts and exits, read the error output from that server. If initialization fails, check the transport and MCP compatibility. If only a tool call fails, inspect permission for that operation. Different operating systems alone do not make these three variables the cause of authentication failures or every timeout.
Keep a redacted record of the version, process location, variable origins, directory and failure stage. Restore the original configuration if a change does not help. The official patch promises no universal error code, fix for every MCP server or specific recovery time. This guide explains the boundary using the release, source and current documentation; no real Windows executor was connected and no MCP installation script was run.
Sources
Frequently Asked Questions
Does setting remote automatically provide a Windows machine?
No. The documentation selects remote stdio only when a remote execution environment is already available. You still need the executor, access authorization, program and working directory. The setting creates no machine and changes no account or organization eligibility.
Is this the same issue as codex mcp-server deprecation?
No. This concerns the environment when Codex starts another MCP tool process. The codex mcp-server deprecation concerns external clients invoking Codex itself as an MCP server. Identify which process fails before choosing configuration troubleshooting or integration migration.
Do URL-based remote MCP connections need these three variables?
Do not treat this stdio patch as a general HTTP connection fix. Streamable HTTP uses a service URL and its authentication and connection requirements. Inspect the environment when the actual server process has a startup problem; a failed URL connection alone does not establish missing Windows startup variables.