Recommended skills refresh can create malformed vendor_imports paths in Windows Desktop + WSL mode
What version of Codex is running?
- Codex Desktop app package:
OpenAI.Codex_26.506.3741.0_x64 codex-cli 0.130.0-alpha.5
What subscription do you have?
Pro
Which model were you using?
GPT-5.5
What platform is your computer?
Windows 11 Desktop app with WSL2 Ubuntu enabled.
What issue are you seeing?
The "recommended skills" refresh path can create malformed literal Windows-path directory names under vendor_imports when the desktop app is running in a WSL-backed context.
After that happens, future refreshes fail with:
git clone failed: fatal: destination path 'C:\Users\<user>\.codex/vendor_imports/skills' already exists and is not an empty directory.
The broken state I found on disk was not a normal vendor_imports/skills checkout. Instead it contained literal directory names like:
vendor_imports/C:\Users\<user>\.codex
vendor_imports/C:\Users\<user>\.codex/vendor_imports/skills
vendor_imports/C:\Users\<user>\.codex\vendor_imports\skills
Those stale malformed directories then block later git clone attempts.
Steps to reproduce
- Use Codex Desktop on Windows with a WSL-backed session.
- Trigger the recommended-skills refresh path.
- The app runs a clone command equivalent to:
git clone --depth 1 --filter=blob:none --sparse https://github.com/openai/skills.git 'C:\Users\<user>\.codex/vendor_imports/skills'
- In the WSL-backed environment, inspect the Windows Codex home
vendor_importsdirectory.
Expected behavior
The app should normalize the checkout target to a real filesystem path for the actual execution environment and either:
- create a normal checkout at
vendor_imports/skills, or - detect an existing healthy checkout and refresh/reuse it
Actual behavior
The clone path was interpreted badly in the WSL-backed context and produced malformed literal directories containing backslashes and drive-letter text.
Observed tree before repair:
vendor_imports/
C:\Users\<user>\.codex/
C:\Users\<user>\.codex/vendor_imports/skills/
C:\Users\<user>\.codex\vendor_imports\skills/
Desktop logs repeatedly showed:
git clone --depth 1 --filter=blob:none --sparse https://github.com/openai/skills.git 'C:\Users\<user>\.codex/vendor_imports/skills'
cwd=C:\Users\<user>\.codex/vendor_imports
and then:
Failed to load recommended skills
git clone failed: fatal: destination path 'C:\Users\<user>\.codex/vendor_imports/skills' already exists and is not an empty directory.
Workaround used locally
I repaired the state by:
- Moving the malformed directories aside.
- Creating a normalized checkout at the real path:
.../.codex/vendor_imports/skills
- Cloning
https://github.com/openai/skills.git - Expanding sparse checkout to include the
skillstree.
After repair, the normalized checkout contained 43 SKILL.md files and no stale git locks.
Suggested fix
- Normalize target paths before invoking
git clonein WSL-backed contexts. - Avoid mixing Windows-style cwd/target strings with a WSL execution environment.
- If a previous malformed checkout exists, detect it and cleanly migrate or ignore it instead of repeatedly failing clone.