Codex Desktop fails to start with `migration 1 was previously applied but has been modified`

Resolved 💬 3 comments Opened May 21, 2026 by miku-lilac Closed May 21, 2026
💡 Likely answer: A maintainer (github-actions[bot], contributor) responded on this thread — see the highlighted reply below.

What version of the Codex App are you using (From “About Codex” dialog)?

26.520.11634

What subscription do you have?

Pro

What platform is your computer?

Microsoft Windows NT 10.0.26200.0 x64

What issue are you seeing?

Codex Desktop fails to launch with the following error:

Codex cannot access its local database.

Database path:
/mnt/c/Users/<user>/.codex/state_5.sqlite

Most recent error:
Error: failed to initialize sqlite state db at
/mnt/c/Users/<user>/.codex/state_5.sqlite:
failed to initialize state runtime at
/mnt/c/Users/<user>/.codex:
migration 1 was previously applied but has been modified

What steps can reproduce the bug?

  1. Install Codex Desktop on Windows
  2. Use WSL integration
  3. Launch Codex

What is the expected behavior?

_No response_

Additional information

_No response_

View original on GitHub ↗

3 Comments

github-actions[bot] contributor · 3 months ago

Potential duplicates detected. Please review them and close your issue if it is a duplicate.

  • #23777
  • #23251
  • #23787
  • #23780

Powered by Codex Action

xdifu · 3 months ago

For anyone landing here from search: this matches the CRLF/LF SQLx checksum issue tracked in #23777 / #23787. The WSL/Linux backend rejects a Windows-created state_5.sqlite because the stored _sqlx_migrations checksum was computed from different line-ending bytes.

I published a non-destructive recovery tool here: https://github.com/xdifu/codex-repair

Windows PowerShell / Windows Terminal:

git clone https://github.com/xdifu/codex-repair.git
cd codex-repair
python codex-repair.py fix --apply

If you run it from WSL bash to repair Windows Codex Desktop data, pass --codex-home "/mnt/c/Users/<WindowsUser>/.codex" so it does not target WSL's own ~/.codex.

It backs up state_5.sqlite / logs_2.sqlite, schema-verifies before any checksum rewrite, and keeps ~/.codex/sessions/*.jsonl read-only.

Nerexis · 3 months ago

@xdifu Your fix has worked fine for me. Thank you.