Codex App archived chats bulk delete shows success but does not remove archived threads
Summary
In Codex App, deleting all archived chats from the archived chats page shows a success toast, but the archived chats are not actually removed. Refreshing/reopening the archived chats page still shows the same archived threads.
Environment
- Codex App:
26.609.41114(CFBundleVersion=3888, bundle idcom.openai.codex) - Codex CLI:
codex-cli 0.140.0-alpha.2 - macOS:
15.7.3(24G419) - Local app/server logs show
app_server.api_version="v2"
Steps to reproduce
- Open Codex App.
- Navigate to Archived Chats.
- Click the bulk delete action for archived chats.
- Observe the success toast, for example:
Deleted 25 archived chats. - Refresh/reopen the archived chats page.
Actual behavior
The archived chats still appear after the success toast.
Local state inspection immediately after the toast showed:
select archived, count(*) from threads group by archived;
Result:
archived count
0 71
1 25
All 25 archived thread rows still existed in the local Codex state database, and their rollout_path values still pointed at redacted paths under:
~/.codex/archived_sessions/*.jsonl
The archived session files also still existed.
The currently exposed thread-management tools in this environment include archive/unarchive operations but no delete-thread operation, which is consistent with the delete UI not changing the underlying state.
Expected behavior
After a successful bulk delete toast:
- archived thread rows should be removed from the local thread state, or otherwise marked so they no longer appear in Archived Chats;
- archived session files should be deleted or detached according to the intended product semantics;
- the success toast should only be shown after the underlying state mutation succeeds and is verified, or it should report a failure/partial failure.
Additional observations
The local log database had codex_rollout::state_db warnings around thread listing/read-repair, for example stale rollout path/read-repair messages. I did not find an explicit delete failure log. This looks like a UI/app-server state consistency issue rather than a user workflow issue.
No private thread titles or screenshots are included here; the evidence above is intentionally aggregated/redacted.
4 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
same here
Windows Codex app version: 26.715.2305.0
In Settings > Archived Tasks, clicking "Delete All" does not remove
the archived tasks. After waiting and reopening the app, all archived
tasks are still present.
I currently have about 59 files in ~/.codex/archived_sessions.
Restarting the app does not resolve the issue.
Additional macOS evidence narrows this failure to the Desktop bulk enumeration step rather than
thread/deleteitself.Environment:
019ff72a-249e-7680-89a0-c7834ee67e45Before
Delete all, local state contained 1,062 archived JSONLs. After the clear action, 135 remained and 927 were deleted. All 135 residual JSONLs pre-dated the action and have matching SQLite rows witharchived = 1andthread_source = 'subagent'; each corresponding JSONL also has a matchingsession_metarecord. The other 927 are absent from all live state checked. SQLiteintegrity_checkisok. The available logs contain no relevant archive/delete/clear entry.I traced the installed Desktop caller: it paginates
listThreads({ archived: true, limit: 200, useStateDbOnly: true })withoutsourceKinds. The public app-server contract defines omitted or emptysourceKindsas interactive-only (cli,vscode), which excludes subagent threads before deletion. This accounts for the subagent-class residual, but one legacy survivor whose JSONLsession_metasource isvscodeis not yet fully explained.The frontend fix belongs in the closed-source Desktop caller: request the subagent/all local source kinds explicitly (or use a server-side all-source bulk enumerator), deduplicate thread IDs across pages, then call
thread/delete. The existing publicthread/deletesubtree behavior is not the failing mechanism here.