Repository navigation
Windows: Git probe error windows (0x800700E8) still recur when starting/resuming conversations on 0.159.0-alpha.7 after partial console fixes #48601
Description
What version of Codex CLI is running?
0.159.0-alpha.7
What subscription do you have?
chatgpt pro 20X
Which model were you using?
gpt 6 astra
What platform is your computer?
No response
What terminal emulator and version are you using (if applicable)?
No response
Codex doctor report
What issue are you seeing?
This is not limited to the first conversation after starting Codex. It also happens when opening or resuming subsequent conversations while Codex is already running.
An isolated alpha test confirmed that the ordinary command-execution path improved: PowerShell commands completed without opening visible console windows. However, the Git-probe problem remains in actual conversation startup/resume.
This is very disruptive when using Codex on the same Windows workstation for other work. The recurring windows interrupt normal desktop use, and some remain open displaying an error after the underlying command has disappeared. Please prioritize a complete native Windows fix and include it in a stable release.
The environment where this was observed is:
An initial raw Unicode check failed because PowerShell used its native OEM output encoding. The same behavior was reproduced outside Codex. Re-running with the UTF-8 prefix used by Codex passed with the original expected text unchanged. This was not treated as an alpha regression.
The isolated test did not replace the real installation or restart existing sessions. Protected configuration, launcher and executable hashes remained unchanged, and the seven pre-existing Codex processes retained their identities and start times. The isolated app-server was stopped afterwards.
The scope of this successful test is limited: it exercised command execution through the standalone app-server. It did not validate authenticated conversation startup/resume, every internal Git lookup, or the VS Code extension.
The inspected alpha source supports the improvement: the shared child launcher applies CREATE_NO_WINDOW on Windows, and the pipe execution path uses that launcher. The flag is also present in 0.159.0-alpha.7. Tested alpha launcher, pipe execution path, current alpha launcher
Code inspection identified a separate Git launch path that still lacks equivalent no-console handling.
In 0.159.0-alpha.7:
detect_fsmonitor_override()issues the exactconfig --null --get core.fsmonitorquery shown in the error. SourceLocalFsmonitorProbeRunnerbuilds atokio::process::Command, addssafe.bareRepository=explicit, and routes it through the Git-specific process runner. Sourcespawn_git_command()usesJobObject::spawn_contained(). Its fallback resets creation flags to0. Source- The job preparation applies
CREATE_SUSPENDED, withoutCREATE_NO_WINDOW. Source
This is a concrete code-level candidate for the remaining visible-console behavior. It is not a complete runtime attribution of the reported popup: the parent PID was not captured at the instant that particular Git error window appeared, and the same Git-probe pattern also exists in the installed VS Code extension.
Two additional paths warrant review, although they were not individually reproduced in the isolated suite: PowerShell discovery/availability probes and the persistent PowerShell AST parser still use direct process launches without explicit no-window handling in the inspected 0.159.0-alpha.7 source. PowerShell probes, AST parser
Please complete the fix across internal Windows launch paths, not only ordinary shell-tool execution. In particular:
- Ensure internal non-interactive Git probes and helpers launch without visible consoles.
- Preserve the required no-console flags through job-contained launches and fallback paths.
- Preserve stdout, stderr, exit codes, cancellation, timeouts and process-tree cleanup.
- Add regression coverage for the first conversation, subsequent conversation starts, and resuming existing conversations while Codex remains running.
- Exercise Git metadata probes with
core.fsmonitorunset, disabled and enabled. - Verify absence of visible windows, focus changes and leftover error windows, then ship the correction in a stable release.
The successful ordinary-command test should not be taken as proof that conversation startup/resume is fixed. The remaining Git popup is still occurring in normal use and is genuinely disruptive.
This appears related to #46949, visible daemon child-process consoles, and #48036, console flashes after CLI 0.157.0, which was linked to that issue. The separate PowerShell parser path is tracked in #18984.
This is not limited to the first conversation after starting Codex. It also happens when opening or resuming subsequent conversations while Codex is already running. An isolated alpha test confirmed that the ordinary command-execution path improved: PowerShell commands completed without opening visible console windows. However, the Git-probe problem remains in actual conversation startup/resume. This is very disruptive when using Codex on the same Windows workstation for other work. The recurring windows interrupt normal desktop use, and some remain open displaying an error after the underlying command has disappeared. Please prioritize a complete native Windows fix and include it in a stable release. The environment where this was observed is: Component Version / configuration Windows Windows 11 x64, OS version 10.0.26200 Windows Terminal package 1.24.11911.0 PowerShell 7.6.6 Git for Windows 2.50.1.windows.1 Earlier stable CLI and daemon 0.157.1 Alpha tested in isolation 0.158.0-alpha.15.2 Current external CLI 0.159.0-alpha.7 Current managed daemon 0.159.0-alpha.7 Installation method npm Execution configuration sandbox_mode = "danger-full-access" Additional client present Codex VS Code extension 26.5917.62051The VS Code extension was also running during the observations. Its backend is separate from the managed CLI daemon. A reproduction with the extension completely closed has not been established.
The current CLI/daemon alignment was verified after the update:
codex --version
codex-cli 0.159.0-alpha.7
Sanitized output from codex app-server daemon version:
{
"status": "running",
"managedCodexVersion": "0.159.0-alpha.7",
"cliVersion": "0.159.0-alpha.7",
"appServerVersion": "0.159.0-alpha.7"
}
The remaining problem can be observed during conversation startup/resume:
- Run Codex CLI natively on Windows from a Git working directory.
- Start or resume a conversation.
- Observe an additional Windows Terminal error window for an internal Git command.
- With Codex still running, open or resume another conversation.
- The problem can recur; it is not restricted to the first conversation or initial application startup.
After upgrading both CLI and daemon to 0.159.0-alpha.7, resuming a conversation produced this message:
[erreur 2147942632 (0x800700e8) lors du lancement de `"git" -c safe.bareRepository=explicit config --null --get core.fsmonitor']
Earlier, before that upgrade, another affected command displayed was:
"git" -c safe.bareRepository=explicit -c core.hooksPath=NUL -c core.fsmonitor=false rev-parse HEAD
These are internal Git inspection commands. In particular, config --null --get core.fsmonitor reads a configuration value; it does not change it.
Windows error 0x800700E8 corresponds to Win32 error 232, ERROR_NO_DATA: “The pipe is being closed.” This identifies a pipe/console-launch failure, but does not establish which component closed the pipe first. Microsoft error-code documentation
There is direct evidence that the ordinary command-execution path improved in alpha.
On the earlier 0.157.1 daemon, a harmless command was executed through command/exec:
Write-Output 'CODEX_READ_ONLY_WINDOW_PROBE'
With tty: false:
- The command completed successfully with exit code 0 and the expected output.
- Native Windows window observation captured a new Windows Terminal window.
- The window had a non-zero size, approximately 1186 × 618, and became the foreground window.
- The window was subsequently confirmed to have disappeared.
A comparable tty: true execution completed successfully without a new visible console window being observed.
Next, 0.158.0-alpha.15.2 was tested using the official Windows npm package in an isolated temporary installation. Package integrity was verified against npm metadata. The test used a separate Codex home, configuration, caches, working directory and standalone app-server, with no credentials or real conversations.
Isolated alpha scenario Functional result New visible console windows observed
Plain PowerShell stdout Passed 0
Stderr and intentional exit code 7 Expected output and exit code preserved 0
Unicode output with Codex’s UTF-8 prefix Passed 0
PowerShell launching a cmd.exe child Passed 0
Command with a short wait and multiple outputs Passed 0
PTY/TTY control case Passed 0
An initial raw Unicode check failed because PowerShell used its native OEM output encoding. The same behavior was reproduced outside Codex. Re-running with the UTF-8 prefix used by Codex passed with the original expected text unchanged. This was not treated as an alpha regression.
The isolated test did not replace the real installation or restart existing sessions. Protected configuration, launcher and executable hashes remained unchanged, and the seven pre-existing Codex processes retained their identities and start times. The isolated app-server was stopped afterwards.
The scope of this successful test is limited: it exercised command execution through the standalone app-server. It did not validate authenticated conversation startup/resume, every internal Git lookup, or the VS Code extension.
The inspected alpha source supports the improvement: the shared child launcher applies CREATE_NO_WINDOW on Windows, and the pipe execution path uses that launcher. The flag is also present in 0.159.0-alpha.7. Tested alpha launcher, pipe execution path, current alpha launcher
Code inspection identified a separate Git launch path that still lacks equivalent no-console handling.
In 0.159.0-alpha.7:
- detect_fsmonitor_override() issues the exact config --null --get core.fsmonitor query shown in the error. Source
- LocalFsmonitorProbeRunner builds a tokio::process::Command, adds safe.bareRepository=explicit, and routes it through the Git-specific process runner. Source
- spawn_git_command() uses JobObject::spawn_contained(). Its fallback resets creation flags to 0. Source
- The job preparation applies CREATE_SUSPENDED, without CREATE_NO_WINDOW. Source
This is a concrete code-level candidate for the remaining visible-console behavior. It is not a complete runtime attribution of the reported popup: the parent PID was not captured at the instant that particular Git error window appeared, and the same Git-probe pattern also exists in the installed VS Code extension.
Two additional paths warrant review, although they were not individually reproduced in the isolated suite: PowerShell discovery/availability probes and the persistent PowerShell AST parser still use direct process launches without explicit no-window handling in the inspected 0.159.0-alpha.7 source. PowerShell probes, AST parser
Please complete the fix across internal Windows launch paths, not only ordinary shell-tool execution. In particular:
- Ensure internal non-interactive Git probes and helpers launch without visible consoles.
- Preserve the required no-console flags through job-contained launches and fallback paths.
- Preserve stdout, stderr, exit codes, cancellation, timeouts and process-tree cleanup.
- Add regression coverage for the first conversation, subsequent conversation starts, and resuming existing conversations while Codex remains running.
- Exercise Git metadata probes with core.fsmonitor unset, disabled and enabled.
- Verify absence of visible windows, focus changes and leftover error windows, then ship the correction in a stable release.
The successful ordinary-command test should not be taken as proof that conversation startup/resume is fixed. The remaining Git popup is still occurring in normal use and is genuinely disruptive.
This appears related to #46949, visible daemon child-process consoles, and #48036, console flashes after CLI 0.157.0, which was linked to that issue. The separate PowerShell parser path is tracked in #18984.
What steps can reproduce the bug?
- Use Codex CLI natively on Windows in PowerShell/Windows Terminal, with a project located in a Git working directory.
- Verify that both the CLI and the running managed daemon are on 0.159.0-alpha.7:
codex --version
codex app-server daemon version
In my case, cliVersion, managedCodexVersion, and appServerVersion all report 0.159.0-alpha.7. - Start Codex and open a conversation, or resume an existing conversation.
- Observe that an additional Windows Terminal window appears for an automatically launched internal Git command. The window displays:
[erreur 2147942632 (0x800700e8) lors du lancement de `"git" -c safe.bareRepository=explicit config --null --get core.fsmonitor']
I did not manually execute this Git command. It is triggered during conversation startup/resume. - With the daemon still running, start or resume another conversation. The issue can happen again for subsequent conversations. It is not limited to the first conversation after launching Codex, and restarting the application is not required for it to recur.
Some error windows remain open after the underlying command has disappeared.
Environment note: the Codex VS Code extension 26.5917.62051 was also open during these observations. I have not yet reproduced this with the extension completely closed, and I did not capture the parent PID of the specific Git process that produced the error window.
What is the expected behavior?
No response
Additional information
No response
Activity
github-actions commentedon Sep 27, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
freezed-corpse-143 commentedon Sep 28, 2026
Root cause for the
0x800700E8windows, from the source:0x800700E8isHRESULT_FROM_WIN32(232)=ERROR_NO_DATA. The message you see is produced bycodex-rs/windows-sandbox-rs/src/process.rs#L171-L181:which is why the report quotes the git command line — it is the
cmd=field of that message (git -c safe.bareRepository=explicit config --null --get core.fsmonitor;core.fsmonitor,safe.bareRepositoryonly exist incodex.exe, i.e. it is Codex's own git probe, not a helper of the shell/terminal/hook tooling).Why it is intermittent, and why it appears together with the visible console windows:
CreatePipe+SetHandleInformation(..., HANDLE_FLAG_INHERIT)) and then launches the child with the sandbox account token — on this machinecodex sandbox whoami→desktop-7e8rpqh\codexsandboxofflineas long as[windows] sandbox = "elevated". Handles created by the user process are handed to a process of another account, so this handoff fails intermittently with 232 instead of on every call — matching "recurs when starting/resuming conversations".console_flags = 0wheneverstdioisSome(_)together withConsoleMode::Inherit(process.rs#L109-L114). Because the child belongs to another account it cannot attach to the caller's console, so it gets a new one — visible, since noCREATE_NO_WINDOWwas requested. That is the black box that accompanies the error.With
[windows] sandbox = "unelevated"the child runs under the caller's own restricted token, so both the console inheritance and the pipe handoff behave like an ordinary same-account spawn (measured here: inelevatedmode the sandboxedcmd.exegets its ownconhost.exechild; inunelevatedmode it does not).Same root cause as #48422 (visible console windows for shell children); details of the remaining
console_flagsgap are in that thread.coulditbecoley commentedon Sep 28, 2026
Another data point, from a different spawn path than the sandbox one above. Windows 11 26200, codex-cli 0.158.0,
[windows] sandbox = "elevated", Windows Terminal as the default terminal.Trigger: the app-server daemon auto-updated 0.157.1 → 0.158.0, and the updater restarted it detached, with no console (
app-server daemon pid-update-loopplusapp-server --listen unix:// --managed-daemon, parent exited). From then on, a visible Windows Terminal window kept opening, one per git poll:This is Windows Terminal's default-terminal handoff message, not the sandbox's
CreateProcessAsUserW failed …text. So this is the direct, same-account spawn incodex-rs/git-utils/src/info.rs(run_git_command_with_timeout_from,LocalFsmonitorProbeRunner::run_probe). Those buildCommand::new(git)with no creation flags. When the daemon has no console, each console-subsystemgit.exegets its own new, visible console.Suggested fix: add
CREATE_NO_WINDOWon Windows for these internal git commands, and for the other helpers the daemon spawns:Local workaround that stopped it here: a GUI-subsystem
git.exeshim that starts the real git withCREATE_NO_WINDOWand passes the std handles through, placed next to the daemon'scodex.exein~/.codex/packages/app-server-daemon/releases/<ver>/bin/. Rust'sCommandsearches the exe's own directory beforePATH, so only the daemon picks it up. It has to be copied again after every daemon auto-update.etraut-openai commentedon Sep 29, 2026
As you noted, our earlier fix was partial. We've found additional code paths that need the same fix. We're working on that now and should have a new alpha posted shortly for testing. We're using #48074 for tracking.