openai / openai/codex

[macOS][Chat] Server-deleted conversations repopulate in Recents and cannot be removed

Open
#40,219 22 comments 17 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug session
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

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

ChatGPT unified desktop app 26.818.41705 (build 6971).

What subscription do you have?

Paid individual ChatGPT plan.

What platform is your computer?

Darwin 25.6.0 arm64 arm

What issue are you seeing?
Product / surface
  • Unified ChatGPT desktop app for macOS
  • Chat tab / ordinary ChatGPT conversations
  • Not Work mode
  • Not Codex mode

Dozens of conversations that have already been deleted server-side remain or repopulate as stale entries in the macOS Recents sidebar. The same account is clean on chatgpt.com and mobile: the deleted conversations are absent there.

The stale macOS entries cannot be opened, deleted, or archived:

  • Open: GET /conversation/<redacted-id> returns HTTP 404.
  • Delete: DELETE /conversation/id/<redacted-id> returns HTTP 404 and the UI shows Failed to delete chat.
  • Archive/unarchive: PATCH /conversation/<redacted-id> returns HTTP 404 and the UI shows Failed to archive conversation.

Every sampled response is terminal and consistent:

{
  "message": "Conversation has been deleted. Start a new chat.",
  "code": "conversation_deleted",
  "can_retry": false
}

Four distinct affected conversation entries were captured in the desktop logs; all four returned conversation_deleted. The sidebar contains dozens of affected entries in total.

Controlled comparison
Client / surface Result
chatgpt.com web, same account Deleted conversations are absent
Mobile app, same account Deleted conversations are absent
macOS unified desktop app → Chat → Recents Dozens of deleted titles remain/repopulate

This does not look like ordinary local cache residue. After Cache, Local Storage, Session Storage, and cookies were removed and the app was fully restarted, the clean client subscribed to the remote conversations and alder-conversations topics. The deleted titles then repopulated in Recents and continued returning the same terminal 404 responses.

The evidence suggests a stale remote Recents/conversation-index entry or a missing tombstone-reconciliation path in the macOS client. This is an inference from the comparison and logs, not a confirmed root cause.

What steps can reproduce the bug?
  1. Delete ordinary ChatGPT conversations so that they are no longer present on the server-facing web and mobile clients.
  2. Confirm that the conversations are absent on chatgpt.com and mobile using the same account.
  3. Open the unified ChatGPT desktop app on macOS and select Chat.
  4. Observe that deleted conversation titles remain or repopulate under Recents.
  5. Select an affected entry. It does not open; the request returns 404 conversation_deleted.
  6. Try Delete. The app shows Failed to delete chat, and the DELETE request returns the same terminal 404.
  7. Try Archive. The app shows Failed to archive conversation, and the PATCH request returns the same terminal 404.
  8. Fully quit the app, remove its Cache, Local Storage, Session Storage, and cookies, then restart it.
  9. Observe that the clean app subscribes to the remote conversation topics and the same deleted titles repopulate.

Reproduction rate for the four sampled entries: 4/4. The issue has persisted through sign-out/sign-in, full app restarts, and local web-storage/cache removal.

What is the expected behavior?

Server-deleted conversations should not remain in or repopulate the macOS Recents list.

If a stale Recents entry resolves to the terminal conversation_deleted response, the client/index reconciliation path should remove that entry. Delete or archive requests that encounter this tombstone could be treated as an idempotent cleanup success for the sidebar instead of leaving an undeletable entry and displaying a retryable-looking failure toast.

The Recents index should converge with the authoritative conversation state used by web and mobile.

Additional information
Sanitized diagnostic excerpt
2026-08-23T07:14:11.162Z
method=DELETE
route=/conversation/id/<conversation-A>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false}

2026-08-23T07:14:23.279Z
method=GET
route=/conversation/<conversation-A>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false,"conversation_id":"<redacted>"}

2026-08-23T07:14:31.367Z
method=GET
route=/conversation/<conversation-B>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false,"conversation_id":"<redacted>"}

2026-08-23T07:14:34.224Z
method=GET
route=/conversation/<conversation-C>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false,"conversation_id":"<redacted>"}

2026-08-23T07:15:40.460Z and 2026-08-23T07:15:43.057Z
method=PATCH (archive/unarchive attempts)
route=/conversation/<conversation-A>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false}

2026-08-23T07:54:37.619Z
method=DELETE
route=/conversation/id/<conversation-D>
status=404
response={"message":"Conversation has been deleted. Start a new chat.","code":"conversation_deleted","can_retry":false}

2026-08-23T07:56:16.479Z
event=chatgpt_pubsub_topic_subscribed
topicId=conversations
catchupCount=0
hadPreviousOffset=false
recovered=false

2026-08-23T07:56:16.479Z
event=chatgpt_pubsub_topic_subscribed
topicId=alder-conversations
catchupCount=0
hadPreviousOffset=false
recovered=false
Troubleshooting already completed
  • Verified the same single account is used on macOS, web, and mobile.
  • Verified web and mobile do not show the affected conversations.
  • Signed out and back in.
  • Fully quit and restarted the desktop app.
  • Removed desktop Cache, Local Storage, Session Storage, and cookies, then performed a clean restart.
  • Retested open, delete, and archive against multiple distinct entries.
  • Did not modify or delete local Codex projects or ~/.codex session data; the affected items are ordinary Chat conversations.
Public-report privacy

Conversation IDs, titles, contents, account identifiers, email addresses, local paths, log filenames, cookies, tokens, and unrelated events are intentionally omitted. Exact affected IDs and a fuller sanitized diagnostic excerpt have been supplied privately to OpenAI Support. A support case is open and its number can be provided privately.

Related but not duplicate
  • #37580 reports ordinary Chat conversations stuck loading on macOS while they remain valid on web. Here the conversations are already deleted server-side, web/mobile are clean, and the macOS Recents index continues surfacing tombstoned entries.
  • #28276 reports a generic archive failure involving unexpected Codex/Desktop threads. Here the affected items are ordinary Chat conversations and all operations fail with the specific server response conversation_deleted.

Useful fixes would include:

  1. reconciling Recents against conversation-deletion tombstones;
  2. removing a stale entry when open/delete/archive receives terminal conversation_deleted with can_retry:false; and
  3. exposing an explicit Recents refresh/rebuild path if automatic reconciliation cannot converge.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the macOS Chat Recents/index handling and the conversations and alder-conversations topic subscriptions described in the report. Reproduce the terminal conversation_deleted 404 behavior, then identify the reconciliation path; done means server-deleted entries no longer repopulate and terminal tombstones are removed from Recents without a retryable failure.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.