Repository navigation
Projects visibility bug: Projects sidebar shows "No projects" and non-locally started chats disappeared after update #46413
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.915.31029
What subscription do you have?
Plus
What platform is your computer?
Darwin 25.6.0 arm64 arm
What issue are you seeing?
After updating ChatGPT Desktop, both of my existing Codex projects disappeared completely from the user interface, together with a large part of my older Codex chat history.
The Codex sidebar now displays “No projects.” Neither of my two projects appears anywhere in the sidebar, including under Projects or pinned projects:
- PhD thesis
- eBay object descriptions
A large number of older chats have also disappeared from the normal sidebar/history view. The chats that remain visible appear to be chats that I started locally on this computer and that were not assigned to either of the two projects.
In other words, this does not appear to be simply a sidebar rendering problem affecting project names. Project-associated chat history has also become inaccessible through the normal UI.
Some missing conversations can nevertheless still be found through global search (Cmd+K). For example, I can search for and open an individual conversation that previously belonged to the PhD thesis project. This suggests that at least some of the apparently missing conversations have not actually been deleted.
Environment: - ChatGPT Desktop: 26.915.31029
- Codex CLI: 0.155.0-alpha.9
- macOS 26.6.2, Apple Silicon
I investigated the local Codex state without deleting, resetting, or manually modifying any Codex data.
The internal persisted state in .codex-global-state.json still records both projects: - g-p-69f70360e2dc8191ba4fcbfc0f21bef6 → PhD thesis
- g-p-6a0c3e144a5081918841580cffbf94c0 → eBay object descriptions
Both are also still recorded internally as pinned projects. These internal persisted sidebar records are not being rendered in the actual UI.
For “PhD thesis,” the legacy state additionally preserves 8 explicit thread-to-project assignments.
The PhD project itself appears to have been migrated into the newer state_5.sqlite database. The projects table contains:
01a05c6e-cb94-7fc2-a865-9dffc8d402e6 → PhD thesis
Its project_roots entry points to the correct existing local project directory, and project_idempotency_keys maps the legacy PhD project ID to the new project ID.
However, there are 67 threads in the new threads table and all 67 have:
project_id = NULL
Therefore, no thread in the new state database is currently associated with any project.
All 8 thread IDs that the legacy state associates with the PhD thesis project still exist among those 67 threads. Thus the project, the relevant thread records, and the old association metadata all survived, but the thread-to-project relationships were not carried into the new database.
The second missing project, “eBay object descriptions,” is still recorded in the legacy persisted sidebar state, but it does not appear in the new state_5.sqlite projects table and has no corresponding legacy-to-app-server project mapping that I could find.
There also appears to be a wider chat-history migration/inventory problem. codex doctor --all --no-color reports that the SQLite databases themselves pass their integrity checks, but reports two thread inventory issues: - 68 active rollout files
- 67 rollout DB rows
- 1 missing active row
- 1 duplicate rollout thread ID
The duplicate/missing sample involves thread:
01a08f6f-f9ad-7b20-81ed-ce21f7854150
This is also one of the 8 threads that the legacy state associates with the PhD project.
codex migrate-rollouts --verbose reports: - 68 rollouts scanned
- 0 eligible
- 68 already paginated
- 0 skipped
- 0 failed
So rerunning the exposed rollout migration does not appear to offer a repair path.
Signing out of ChatGPT, completely quitting the application, reopening it, and signing back into the same account did not restore the projects or missing chat history.
Current observable behavior is therefore:
- Projects sidebar says “No projects.”
- Neither existing project is visible anywhere in the sidebar.
- Many older/project-associated chats have disappeared from the normal chat history.
- Locally created chats that were not assigned to either project remain visible.
- At least some missing project-associated chats still exist and can be opened through Cmd+K search.
- The underlying PhD project filesystem remains intact.
- Internal legacy state still contains both project records.
- The new database contains the PhD project but has lost all thread-to-project associations.
- The eBay project appears not to have been migrated into the new project database at all.
I have made a complete backup of my ~/.codex directory and have deliberately not reset Codex, deleted application data, reinstalled the application, or manually modified state_5.sqlite.
Could you please advise whether there is an official way to repair or rerun the Desktop/Codex state migration, rebuild the project and chat indexes, and restore the surviving thread-to-project associations?
Because these projects contain important research and professional work, I would prefer not to manually edit the SQLite databases while the surviving legacy metadata is still available for an official migration/repair process.
Investigation results
The migration appears to have left every thread without a project association.
- state_5.sqlite contains the migrated project PhD thesis.
- The legacy state still contains both projects (PhD thesis and eBay object descriptions).
- All 67 threads in the new threads table have project_id = NULL.
- The legacy state still contains 8 thread → project assignments for the PhD project, and all 8 thread IDs still exist in the new database.
- codex migrate-rollouts reports 68/68 rollouts already paginated, so the exposed migration command does not repair the issue.
bash-3.2$ /Applications/ChatGPT.app/Contents/Resources/codex doctor --all --no-color
Codex Doctor v0.155.0-alpha.9 · macos-aarch64
Notes
⚠ threads 2 issues - rollout files are missing from the state DB; duplicate thread inventory entries found
─────────────────────────────────────────────────────────────
Environment
✓ system en-GB
os Mac OS 26.6.2 [64-bit]
OS language en-GB
LC_CTYPE UTF-8
LANG C.UTF-8
VISUAL not set
EDITOR not set
✓ disk sufficient free disk space (125.1 GiB)
warning threshold 5.0 GiB
failure threshold 1.0 GiB
CODEX_HOME available 125.1 GiB
worktree available 125.1 GiB
✓ security no supported endpoint protection detected
endpoint products none detected
✓ runtime other
version 0.155.0-alpha.9
install method other
commit unknown
executable /Applications/ChatGPT.ap…ontents/Resources/codex
✓ install consistent
context other
managed by npm: no · bun: no · pnpm: no · Vite+: no · package root —
✓ search found; execution not verified (system, rg)
search command rg
search provider system
search command path /opt/anaconda3/bin/rg
search command readiness found; execution not verified
✓ git git executable found; execution not verified
selected git /usr/local/bin/git
repo detected false
PATH entries (2) /usr/local/bin/git
/usr/bin/git
git execution not inspected (PATH helpers are not executed)
✓ terminal Apple Terminal 470.2
terminal Apple Terminal
TERM_PROGRAM Apple_Terminal
terminal version 470.2
stdin is terminal true
stdout is terminal true
stderr is terminal true
terminal size 110x63
color output disabled (--no-color)
COLORTERM truecolor
effective locale UTF-8
DISPLAY present
✓ title default · project Satria
title source default
title items activity, project-name
activity item true
project source cwd
project value Satria
✓ state databases healthy
CODEX_HOME ~/.codex (dir)
log dir ~/.codex/log (missing)
sqlite home ~/.codex (dir)
state DB ~/.codex/state_5.sqlite (file) · integrity ok
log DB ~/.codex/logs_2.sqlite (file) · integrity ok
goals DB ~/.codex/goals_1.sqlite (file) · integrity ok
memories DB ~/.codex/memories_1.sqlite (file) · integrity ok
active rollouts 68 files · 874.96 MB (avg 12.87 MB)
archived rollouts 0 files · 0 B (avg 0 B)
memories v2 DB ~/.codex/memories_v2_1.sqlite (missing)
memories v2 DB integrity skipped (missing)
queue DB ~/.codex/queue_1.sqlite (file)
queue DB integrity ok
thread history DB ~/.codex/thread_history_1.sqlite (file)
thread history DB integrity ok
⚠ threads 2 issues - rollout files are missing from the state DB; duplicate thread inventory entries found
default model provider openai
rollout DB active files 68
rollout DB archived files 0
rollout DB scan errors 0
rollout DB malformed file names 0
rollout DB scan cap reached false
rollout DB rows 67
rollout DB active rows 67
rollout DB archived rows 0
rollout DB missing active rows 1
rollout DB missing archived rows 0
rollout DB stale rows 0
rollout DB archive mismatches 0
rollout DB duplicate rollout thread ids 1
rollout DB duplicate DB paths 0
rollout DB model providers openai=67
rollout DB sources subagent:thread_spawn=38, subagent:other=17, vscode=12
rollout DB missing active sample ~/.codex/sessions/2026/0…81ed-ce21f7854150.jsonl
rollout DB duplicate rollout thread id sample 01a08f6f-f9ad-7b20-81ed-ce21f7854150
→ Attach the doctor report to a bug report so support can inspect samples.
Configuration
✓ config loaded
model gpt-5.6-sol · openai
cwd ~
config.toml ~/.codex/config.toml
config.toml parse ok
MCP servers 2
feature flags 48 enabled · 0 overridden
enabled flags shell_tool, view_image, sleep_tool, unified_exec, unified_exec_tty, unified_exec_zsh_fork, shell_snapshot, content_item_kinds, code_mode_host, terminal_resize_reflow, sqlite, hooks, enable_request_compression, unbounded_connection_retries, worktrees, multi_agent, apps, tool_search_always_defer_mcp_tools, tool_suggest, plugins, in_app_browser, in_app_chat, in_app_dictation, in_app_local_automation, in_app_updates, browser_use, browser_use_full_cdp_access, browser_use_external, computer_use, remote_plugin, plugin_sharing, image_generation, resize_all_images, item_ids, skill_mcp_dependency_install, skill_search, mentions_v2, steer, guardian_approval, goals, collaboration_modes, tool_call_mcp_elicitation, auth_elicitation, fast_mode, realtime_conversation, tui_app_server, compaction_image_budget, workspace_dependencies
configuration scope invocation config, including cloud-managed policy
active thread overrides not inspected
configuration load ms 4
✓ auth auth is configured
auth storage mode File
auth file ~/.codex/auth.json
stored auth mode chatgpt
stored API key false
stored ChatGPT tokens true
stored agent identity false
✓ mcp 2 server (2 stdio) · 1 disabled
configured servers 2
disabled servers 1
stdio servers 2
✓ sandbox restricted fs + restricted network · approval OnRequest
approval policy OnRequest
filesystem sandbox restricted
denied-read rules 0
denied-read glob rules 0
glob scan max depth unbounded
managed filesystem source none
network sandbox restricted
linux helper none
execve wrapper helper ~/.codex/tmp/arg0/codex-…62/codex-execve-wrapper
Desktop App
✓ desktop the desktop application is installed
version 26.915.31029
running false
log directory $HOME/Library/Logs/com.openai.codex
✓ desktop the desktop application is not running
✓ desktop the desktop application passed available macos security assessments
gatekeeper accepted
Updates
✓ updates update configuration is locally consistent
startup update check true
update action manual or unknown
version cache ~/.codex/version.json
version cache missing
latest version 0.155.0
latest version status current version is not older
Connectivity
✓ network no proxy env vars
proxy env vars none
system proxy automatic (PAC)
respect system proxy disabled
managed proxy not configured
✓ websocket connected (HTTP 101 Switching Protocols) · 15s timeout
model provider openai
provider name OpenAI
wire API responses
supports websockets true
proxy env vars none
connect timeout 15000 ms
auth mode chatgpt
endpoint wss://chatgpt.com/backend-api/
DNS 2 IPv4, 2 IPv6, first IPv6
handshake result HTTP 101 Switching Protocols
reasoning header false
server model present false
✓ reachability active provider endpoints are reachable over HTTP
reachability mode ChatGPT auth
ChatGPT inference URL https://chatgpt.com/backend-api/ reachable (HTTP 405)
desktop assets CDN https://chatgpt.com/backend-api/ reachable (HTTP 200)
Background Server
○ app-server not running (ephemeral mode)
daemon state dir ~/.codex/app-server-daemon
settings ~/.codex/app-server-daemon/settings.json (missing)
pid file ~/.codex/app-server-daemon/app-server.pid (missing)
update-loop pid file ~/.codex/app-server-daem…/app-server-updater.pid (missing)
dedicated pid file ~/.codex/app-server-daemon/daemon.pid (missing)
dedicated update-loop pid file ~/.codex/app-server-daemon/daemon-updater.pid (missing)
control socket ~/.codex/app-server-cont…app-server-control.sock
status not running
mode ephemeral
─────────────────────────────────────────────────────────────
21 ok · 1 idle · 1 notes · 1 warn · 0 fail degraded
--summary compact output --all expand truncated lists
--json redacted report
What steps can reproduce the bug?
Feedback ID: 01a013f8-0d70-7802-8d08-fc0454460339
What is the expected behavior?
Projects and chats should normally appear in the sidebar, which they currently do not
Additional information
No response
Activity
github-actions commentedon Sep 18, 2026
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
SAQuaijtaal commentedon Sep 18, 2026
seems to be the same issue as this one:
#31845
84dnnvbdvp-debug commentedon Sep 18, 2026
There is a current-source replay boundary that seems to match the partially migrated state in this report.
project/importaccepts boththreadsand anidempotencyKey, but the SQLite implementation checksproject_idempotency_keysfirst. If the key already exists,StateRuntime::create_project()returns the existing project immediately, before validating or applying the supplied thread IDs. The app-server also emits thethread/project/updatednotifications only when that import reportscreated = true. The existing tests deliberately pin the replay behavior: a second import with the same key and a changed payload returns the original project and emits no project/thread change notification.That means the reported PhD state — project row + legacy→new idempotency mapping present, surviving thread rows present, but
threads.project_id IS NULL— is specifically a state that replaying the sameproject/importcannot heal today. I would pin a recovery regression around that exact partial state rather than only rerunningmigrate-rollouts.I would be cautious about making every idempotent import blindly reapply its original thread list, because a user may legitimately move/unassign a thread after a successful import. A safer migration-repair contract would use the preserved legacy assignment metadata to fill only still-null memberships (and surface/skip non-null conflicts), while separately importing any legacy project that never acquired an idempotency mapping at all. That would cover both failure shapes reported here without overwriting later user edits.
SAQuaijtaal commentedon Sep 18, 2026
Resolved: the new desktop application separates ChatGPT and Codex into two modes accessible from the top-left selector. 😐 My existing ChatGPT projects and associated conversations are visible under ChatGPT mode; I had been viewing the new Codex mode, whose Projects sidebar is separate. No data was lost.
wamamediagroup commentedon Sep 24, 2026
I can confirm that this issue still occurs on the latest Windows production build.
Environment:
Codex Desktop: 26.917.71314
Build: 10954
Bundled CLI: codex-cli 0.155.0-alpha.16.4
OS: Windows x64
Installed release channel: prod
The problem originally appeared after an unexpected power outage and an application update. Local Codex projects disappeared from the sidebar, while the tasks remained visible as ordinary ungrouped tasks.
Read-only diagnostics after updating to 26.917.71314:
SQLite integrity check: ok
state_5.sqlite contains 9 local project records
project_roots contains the corresponding project roots
project_idempotency_keys contains mappings for all 9 projects
the database currently contains 286 thread records
55 threads have a non-null project_id in SQLite
the Desktop UI and app task listing still return projectId: null for local Codex tasks
local-projects in .codex-global-state.json is empty
thread-project-assignments is absent
the migration state remains:
projectsMigrated: true
threadAssignmentsMigrated: false
one pendingThreadAssignmentId
The startup log reports:
Local app-server project migration completed projectCount=9
However, the 9 local projects are still not returned by the Desktop project list and the local tasks remain under Tasks instead of their projects.
Restarting the application and installing the following updates did not restore the projects:
26.915.4065.0
26.917.51856
26.917.71314
No project folders or conversation files appear to have been deleted. This looks like a project visibility and incomplete thread-assignment migration problem rather than actual conversation data loss.
I have retained complete local backups. I am not attaching the database, global state, transcripts, project names, user paths, or raw logs because they may contain private data and credentials.
Please provide a supported repair or reindex procedure that can rebuild the Desktop project list and thread memberships.