[App/Windows/WSL] git-init-watcher retries permanent EISDIR on workspace root every five seconds

Open 💬 2 comments Opened Jul 13, 2026 by loraldx

Summary

Codex Desktop 26.707.8168.0 on Windows 11 repeatedly retries a Windows-side file watcher after receiving EISDIR for a WSL2 workspace root. The retry interval eventually settles at approximately five seconds and continues while the application remains open.

Related to #32183, but this reproduces without using the in-app browser and appears to involve the workspace-level git-init-watcher rather than only the browser-related git-repo-watcher path.

Sanitized observation

Workspace form:

\wsl$<distro>home<user><workspace>

Observed behavior:

  • Windows Node fs.watch against the WSL workspace root returns EISDIR.
  • Watching the nested Git repository root produces the same result.
  • The behavior also reproduces through the equivalent \wsl.localhost path and a mapped drive.
  • The git-init-watcher retries after failure, with exponential delay capped at approximately five seconds.
  • One application run recorded 121 failures in about ten minutes.
  • Historical application logs contained more than 17,000 failures from the same error family.
  • Git and repository operations performed inside WSL itself continue to work normally.

User names, repository names, task identifiers, full paths, and raw logs have been omitted.

Steps to reproduce

  1. On Windows 11 with WSL2, open a Git workspace located under the Linux home directory in Codex Desktop.
  2. Use a workspace path exposed through \wsl$ or \wsl.localhost.
  3. Leave the desktop application open.
  4. Inspect the Codex application logs for git-init-watcher or file-watch failures.

Actual behavior

A permanent EISDIR watcher failure enters an effectively unbounded retry loop, producing repeated work and log churn approximately every five seconds.

Expected behavior

  • Detect unsupported or permanent watcher errors such as EISDIR.
  • Fall back to bounded polling when appropriate, or disable that watcher after a small number of failures.
  • Avoid retrying permanent watcher failures indefinitely.
  • Prefer a WSL-native watcher when the workspace is handled by the WSL execution backend.

Environment

  • Codex Desktop: 26.707.8168.0
  • OS: Windows 11 x64
  • WSL2: Ubuntu
  • Workspace stored in the Linux filesystem under the WSL home directory
  • Reproduces without invoking the in-app browser

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗