Android Remote fails to verify trusted Windows projects due to case-sensitive path lookup
Open 💬 8 comments Opened Aug 21, 2026 by Clock0ut
What version of the Codex App are you using (From “About Codex” dialog)?
26.818.3698.0
What subscription do you have?
Plus
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
When starting a new Codex Remote chat from the ChatGPT Android app against a trusted project on a Windows host, Remote displays:
Can't verify project trust for C:\Users\<user>\Codex-Orchestrator
The Windows host is connected normally and existing Remote threads can be resumed successfully. The failure occurs only when trying to start a new chat.
The project is already trusted in ~/.codex/config.toml, but the existing trust entry was stored using a lowercase Windows path:
[projects.'c:\users\<user>\codex-orchestrator']
trust_level = "trusted"
### What steps can reproduce the bug?
Android Remote attempts to open the project using the normal mixed-case Windows path:
C:\Users\<user>\Codex-Orchestrator
Adding a second trust entry whose casing exactly matches the path shown by Android immediately fixes the issue:
[projects.'C:\Users\<user>\Codex-Orchestrator']
trust_level = "trusted"
Both entries can coexist, and config/read returns them as separate keys.
I reproduced the same behavior with a second Windows project, so this is not project-specific.
Reproduction
Trust a local Windows project in Codex Desktop.
Confirm config.toml contains a lowercase trusted path such as:
[projects.'c:\users\<user>\example-project']
trust_level = "trusted"
Connect to the Windows PC using Codex Remote from the ChatGPT Android app.
Attempt to start a new Remote chat in that project.
Android displays:
Can't verify project trust for C:\Users\<user>\Example-Project
Add an additional exact-case trust entry:
[projects.'C:\Users\<user>\Example-Project']
trust_level = "trusted"
Retry New Chat from Android.
The chat now starts successfully.
Additional diagnostics
The failure occurs before thread creation.
During a failed attempt:
Android Remote connects successfully.
config/read succeeds.
Existing thread/resume requests succeed.
Android issues another config/read immediately before displaying the trust error.
No thread/start request is sent.
I also tested config/read using mixed-case, lowercase, uppercase, trailing-slash, drive-root, and omitted cwd values. Every request returned an equivalent configuration result containing the lowercase trusted project.
config/read does not return an effective trust result. It returns the config.projects map, so the caller must select the appropriate path entry.
A disposable configuration test confirmed that Windows paths differing only by case are preserved as separate keys by config/read.
This makes the behavior consistent with Android Remote performing a case-sensitive lookup similar to:
result.config.projects[requestedPath]?.trust_level
instead of normalizing/case-folding Windows paths before comparing them.
Workaround
Adding an exact-case duplicate entry to config.toml resolves the Android Remote failure immediately.
The workaround was reproduced successfully on two separate Windows projects.
### What is the expected behavior?
Windows project paths should be compared using Windows-appropriate case-insensitive path semantics when determining project trust.
For example, all of the following should resolve to the same trusted project:
C:\Users\<user>\Example-Project
c:\users\<user>\example-project
C:\USERS\<USER>\EXAMPLE-PROJECT
If a project is already trusted in `config.toml`, Android Remote should recognize that trust regardless of differences in path casing.
Starting a new Remote chat should proceed to `thread/start` without requiring a duplicate trust entry whose capitalization exactly matches the path presented to the mobile client.
### Additional information
Environment:
- Codex desktop app: 26.818.3698.0
- Active Codex CLI/app-server: 0.149.0-alpha.4
- Older fallback CLI also present: 0.130.0-alpha.5
- Host OS: Windows x64
- Remote client: ChatGPT Android app
- ChatGPT subscription: Plus
The Remote connection itself is healthy. Existing threads can be resumed from Android successfully. The failure occurs specifically when starting a new chat in an existing trusted Windows project.
During a failed attempt, Android successfully connects and issues `config/read`. No `thread/start` request follows the failed trust check.
Testing the installed app-server showed that `config/read` returns the same configuration regardless of whether `cwd` is mixed-case, lowercase, uppercase, has a trailing slash, points to the drive root, or is omitted.
The response contains the trusted project under the exact key casing stored in `config.toml`. `config/read` does not return a separate effective trust result, so the client appears responsible for locating the matching entry in `result.config.projects`.
A disposable configuration test confirmed that Codex preserves Windows paths that differ only by case as separate `config.projects` keys.
Verified workaround:
Adding a duplicate trust entry whose path casing exactly matches the path displayed by Android immediately resolves the problem.
For example:
[projects.'c:\users\<user>\example-project']
trust_level = "trusted"
[projects.'C:\Users\<user>\Example-Project']
trust_level = "trusted"
This workaround was reproduced successfully on two separate Windows projects.
Related issue #39855 also involves Windows Remote project-trust failures, but appears distinct: that report concerns projectless chats and a malformed generated path missing a directory separator. This report concerns existing saved/trusted projects and path casing during trust lookup.
<img width="1080" height="2520" alt="Image" src="https://github.com/user-attachments/assets/852f18fa-8d0e-45f1-a0ce-e3cbf8d50250" />
8 Comments
Independent confirmation of the same failure mode on another Windows project.
Observed behavior:
~/.codex/config.tomlusing an all-lowercase Windows path, e.g.:No Git/project changes were needed. This strongly suggests the Remote trust lookup is comparing Windows project-path keys case-sensitively instead of using Windows case-insensitive path semantics.
This is therefore reproducible independently and not specific to the project in the original report.
Confirmed on Windows with ChatGPT Android Remote.
Environment:
26.818.5229.00.149.0codex_chatgpt_android_remoteSymptoms:
The trusted entries created by Codex Desktop were lowercase:
I can confirm this issue on another Windows + Android setup, and I found an additional detail about the workaround.
Environment:
The symptoms were exactly the same:
My
config.tomlcontained trusted project paths in lowercase, for example:The actual Windows path shown/used by Remote is:
I first tried adding a second exact-case entry while keeping the lowercase entry:
In my case, this did NOT fix the issue. Android spent a long time trying to create the new thread and eventually failed again.
I then removed the lowercase entry completely and kept ONLY the correctly-cased entry:
After restarting Codex Desktop, creating new Codex Remote threads from Android started working normally again.
I reproduced the same problem across multiple projects.
So in my case, the reliable workaround is not to keep duplicate case variants, but to make sure there is only one trusted project entry and that its casing exactly matches the Windows path used by Remote.
This strongly suggests that Windows project trust lookup is currently case-sensitive somewhere in the Remote flow, and that duplicate paths differing only by case may also interfere with project selection.
Confirming that only @Turakam83 's solution worked for me as a workaround for creating remote threads from an Android device to a project hosted on Windows. I needed to add a correctly-cased entry AND delete the original lowercase-only entry to get this to work again.
Temporary Windows/Android Remote fix
%USERPROFILE%\.codex\config.tomlconfig.toml, reopen Codex Desktop, and retry creating the Remote thread in Full Access.Important: match the drive letter and every directory name character-for-character. Do not leave both the lowercase and correctly-cased entries—on some builds, duplicate case-equivalent entries still cause the trust check to fail.
The underlying bug appears to be that Android checks the raw
config.projectskeys case-sensitively, even though Windows paths are case-insensitive.Additional reproduction: Read Only → Full Access works, direct Full Access fails
I can consistently reproduce what appears to be a related Remote trust/session initialization issue with ChatGPT Android connected to Codex Desktop on Windows.
Environment
Behavior
Starting a new Remote chat with Full Access enabled from the beginning fails with the project trust verification error.
This happens both with newly created workspaces and with existing projects that are already usable normally in Codex Desktop.
However, I found a reliable workaround:
Hello.So the important distinction seems to be:
Full Access during thread creation → trust failurebut:
Read Only during thread creation → thread starts → switch to Full Access → worksThis suggests the failure may be happening specifically during the initial Remote trust/session initialization before the thread is created, rather than being a real filesystem permission or Remote connectivity problem.
Additional UI symptom
There is another unusual behavior that started at the same time.
A Remote-created chat that would normally appear in Codex Desktop using its chat title is instead displayed in the Recent list using its generated local workspace path, for example:
C:\Users\<user>\Documents\Codex\2026-08-27\<generated-chat-folder>The actual conversation itself works once it has been initialized through the Read Only workaround.
This makes me wonder whether the Remote thread is being incorrectly associated with the generated workspace path instead of its normal thread/project identity.
Control observations
Related issues
This may overlap with:
The Read Only → Full Access workaround may provide an additional clue because it appears to bypass only the initial trust gate while leaving the resulting Full Access session fully functional.
I can provide additional screenshots or test a specific diagnostic sequence if useful.
Superseded by #41197, which contains the complete Windows/Android reproduction, the two-phone retest, the working Mac control, and the diagnostics.
A macOS reproduction corroborates the broader raw exact-key preflight mechanism (separate from Windows case folding). On Android
1.2026.230, the original Git project is exactly trusted and present in hostproject/list, but a newly generated projectless/worktree execution path fails beforethread/start. An exact trust write beginning only 0.326 ms after target birth still landed too late for the client decision. Host-created worktrees succeed.Full redacted timing evidence: https://github.com/openai/codex/issues/39678#issuecomment-5443290360
This suggests the durable fix should use effective/server-side project identity (including linked-worktree source resolution) rather than a client lookup equivalent to
config.projects[requestedPath].