openai / openai/codex

[Remote][macOS] Switching chats repeatedly escapes underscores in unsent composer drafts

Open
#39,844 8 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

app bug remote 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)?

26.818.21641 (build 6849)

What subscription do you have?

Unknown; the current plan is not shown in the Codex app UI used for this report.

What platform is your computer?

macOS 26.6.1 (25G76), Darwin 25.6.0 arm64 arm

What issue are you seeing?

In Codex Remote, an unsent composer draft is modified when switching to another chat and then returning. Markdown escape characters accumulate before underscores, and a space can be restored as the literal HTML entity  .

Minimal original text:

sara_storage_config

After switching away from the chat and returning, the composer adds backslashes before the underscores. Repeating the chat switch adds more backslashes, so the draft becomes progressively more corrupted. In the observed case, a space at the end of the draft was also shown as the literal text  .

The corruption happens before the prompt is sent. It appears to occur while persisting or restoring the composer draft, and it is visible directly in the input field.

What steps can reproduce the bug?
  1. Open a Codex task through Remote.
  2. Type sara_storage_config into the composer without sending it.
  3. Switch to a different chat.
  4. Return to the original chat.
  5. Observe that backslashes have been inserted before the underscores.
  6. Repeat steps 3 and 4.
  7. Observe that additional backslashes accumulate on each restore. A trailing space may also appear as the literal text  .
What is the expected behavior?

Switching between chats should preserve an unsent draft byte-for-byte. Restoring the draft repeatedly should be idempotent: sara_storage_config should remain exactly sara_storage_config, with no added backslashes or HTML entities.

Additional information
  • Surface: Codex Remote composer in the ChatGPT/Codex desktop app.
  • Bundle identifier: com.openai.codex.
  • Local CLI version available on the host: codex-cli 0.147.0.
  • The visual pattern is consistent with an already escaped Markdown/HTML draft being escaped again during each persistence/restore round trip. This is a hypothesis based on the observed output.
  • Public issue searches for combinations of composer draft, backslash, escaped underscore, switch chat, and   did not find an exact existing report as of 2026-08-21.

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 reproducing the issue in the Codex Remote composer using the documented chat-switching steps, then trace the composer draft persistence and restore path in the desktop app. Done means switching chats repeatedly preserves the unsent draft byte-for-byte, without added backslashes or literal HTML entities.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.