🩹 Restore archived chats access from the main Codex UI
Open đź’¬ 8 comments Opened Jun 9, 2026 by richa65-personal
đź’ˇ Likely answer: A maintainer (github-actions[bot], contributor)
responded on this thread — see the highlighted reply below.
Summary
Archived chats need to be accessible from the main Codex UI, not hidden under Settings → Archived chats.
This appears to be a regression/removal: a user reports this was available from the main UI roughly two weeks ago, and now there is no obvious way to browse all archived chats from the main sidebar. If the user does not remember the chat name/title, search is not enough.
Current behavior
- Archived chats are effectively hidden in Settings → Archived chats.
- The main sidebar does not provide an obvious Archived view/section.
- Accidental archive feels like the chat disappeared.
- Recovery is not discoverable unless the user already knows the settings location.
Expected behavior
Please restore/add archived chat access to the main UI:
- Add an Archived section/view in the main sidebar.
- Add a command-palette action such as Show archived chats.
- Make search clearly include archived chats or provide an obvious archived filter/badge.
- Show an Undo archive toast immediately after archiving.
- Keep Unarchive available from the thread menu inside the archived-chat list.
Why this matters
Archive is a normal chat-management action, but recovery is currently too hidden. Users who accidentally archive a chat and do not know its title need a direct way to browse archived chats from the primary navigation.
Environment: Codex Desktop on macOS.
8 Comments
Potential duplicates detected. Please review them and close your issue if it is a duplicate.
Powered by Codex Action
+1. A concrete related use case: from
Settings > Archived chats, it should be possible to open an archived chat in a read-only view to inspect its contents before deciding whether to restore/delete it. Opening it for inspection should not unarchive it as a side effect.Another +1 for moving this out of Settings.
Settings > Archived chatsis a strange place for a normal visibility/navigation mode, and it makes archived chats feel lost unless you already know where to look.The affordance I would expect in the desktop app is a normal menu/view control, for example
View > Show Archived Chats/View > Hide Archived Chats, with the setting reflected in the sidebar/search state. A project-level context menu item could also work well, e.g.Show Archived Chats in This Project, for users who only want archived history visible while inspecting one project.The important part for me is discoverability: archive should behave like "hide completed work from the default view", not like "move this to a recovery screen under Settings".
@richa65 which settings? vscodes or codex extension?
See also:
---
Summary
Adding a concrete data point from a local investigation of archived-thread discovery.
The short version:
thread/listandthread/searchrequests usingarchived: true.So the practical gap appears to be:
Environment Inspected
26.609.41114CFBundleVersion:3888com.openai.codexcodex-cli 0.139.0/Applications/Codex.appapp.asarfile SHA-256 from:Result:
ElectronAsarIntegrityentry fromInfo.plist:Useful validation commands:
Repro Context
I had an archived chat that was findable in Settings > Archived chats, but not findable through the normal/model-facing thread search/list surface.
That led me to compare:
App Bundle Evidence
To inspect the app bundle:
Version-specific files where I found the relevant logic after extracting
app.asar:The filenames are hashed and may vary by release, so these searches are more portable than relying on exact filenames:
Bundle Observations
In
app-server-manager-signals-Coif6OOI.js:thread/listwitharchived: falseandthread/searchwitharchived: false;listArchivedThreads, which callsthread/listwitharchived: true.In
data-controls-D-xOtvPq.js:list-archived-threadscommand;In
app-main-fcIxOLz5.jsand sidebar-related bundles:App-server Schema Evidence
The installed CLI can generate the protocol schema:
Relevant generated files:
Both schemas include an
archivedparameter. In the generated schema I inspected, the description was effectively:ThreadListParamsalso includessearchTerm, described as a substring filter for the extracted thread title.ThreadSearchParamsincludessearchTermas a required full-text/substr query.Schema validation command:
Direct App-server Calls
I also tested calling the local app-server directly from a shell.
Protocol shape:
"jsonrpc": "2.0"field omitted on the wire;initializednotification;thread/searchorthread/listwitharchived: true.The direct stdio server may need normal writable access to
$CODEX_HOMEfor runtime bookkeeping, even for read-only queries. In a heavily sandboxed environment this can fail with SQLite/runtime permission errors, but from a normal terminal it should work.Example Archived Search Command
This tries
thread/searchfirst, then falls back to title filtering viathread/list. It also prints explicit messages for app-server errors, no response, and no matches.Daemon Proxy Variant
If a managed app-server daemon is already running, the same JSONL can be sent through the proxy instead:
Then replace:
with:
Local Metadata Evidence
Without dumping private transcript contents, these locations are relevant:
Metadata-only inspection:
Title search via the session index:
Archived transcript filename search by thread ID:
One caveat: in my local repro, the metadata sources were not perfectly equivalent. The session index and archived transcript location reflected the archived thread I was looking for, while one SQLite row for the same thread appeared stale. So local workarounds should avoid treating a single metadata source as authoritative.
Practical Workarounds
1. Built-in UI: Settings > Archived chats
Manual, safest, and currently supported.
Tradeoff: reliable and privacy-preserving, but disconnected from the main sidebar/project history and not usable by automation/model-facing tools.
2. Use app-server API with
archived: trueBest technical direction because it uses the intended protocol shape.
Conceptual
thread/searchrequest:Conceptual
thread/listrequest:Tradeoff: robust and metadata-friendly, but it depends on tooling exposing the full app-server parameter surface. Some model-facing wrappers currently expose only
query/limit, so they cannot passarchived: true.3. Search
$CODEX_HOME/session_index.jsonlplus$CODEX_HOME/archived_sessions/Useful for local users and read-only automation.
If that gives a thread ID, check whether it has an archived transcript:
Tradeoff: fast and low-risk if limited to titles/IDs/paths. It may miss content-only matches and may need reconciliation across metadata files.
4. Query
$CODEX_HOME/state_5.sqliteread-onlyGood for structured metadata when it is up to date:
A safer parameterized version is preferable in a real script, but the above shows the shape.
Tradeoff: structured and convenient, but in my repro one row appeared stale, so this should not be the only source of truth.
5. Full-text search archived transcripts
Useful only when metadata/title search is insufficient:
Tradeoff: most reliable for content discovery, but it searches private transcript contents. This should be explicit/opt-in and results should be summarized carefully rather than dumped wholesale.
6. Temporarily unarchive, search normally, then rearchive
This is a workaround but not a good one.
Tradeoff: it mutates user state, pollutes the active sidebar/project list, and makes archive less useful as a “done but preserved” state.
Suggested Product Behavior
Active / Archived / All.Allor enables an archived filter.Unarchiveaction, rather than requiring unarchive first.Implementation Note
This does not appear to require inventing a new storage model. The installed app-server schema already exposes archived filtering, and direct
thread/search/thread/listcalls can express archived-aware queries today.The missing piece is making archived-aware search/listing available consistently in the main UI and tool surfaces.
This issue also affects the Codex extension for VS Code on Windows.
The extension provides an option to archive a conversation, but there is no visible option to browse or restore archived conversations afterward. The “Archived chats” section mentioned in the documentation is not available in the extension settings.
I was only able to recover my conversations by installing the Codex CLI, locating the session IDs under .codex/archived_sessions, and running codex unarchive manually for each one.
It would be very helpful to add an “Archived chats” view to the VS Code extension, with options to search, unarchive individual conversations, and unarchive all. Currently, users can easily archive a conversation without having any discoverable way to restore it through the extension.
@lorivalmatias i made a cli tool that finds,moves archived chats, works well with vscode codex extension, i can share if you want
I would never be able to figure out where to find archived chats if not for this ticket. What a horrible UX!