Codex App review session inserts invalid message id review_rollout_user

Open 💬 1 comment Opened Jul 20, 2026 by willkan

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

Codex App 26.715.31925 (build 5551)

What subscription do you have?

pro

What platform is your computer?

Darwin 25.5.0 arm64 arm

What issue are you seeing?

After starting a code review in the Codex App, the app inserted a synthetic user message into the session with this ID:

"review_rollout_user"

All subsequent requests in that thread fail with HTTP 400:

[ApiIdParam] [input[2].id] [invalid_id_prefix]
Invalid 'input[2].id': 'review_rollout_user'.
Expected an ID that begins with 'msg'.

The affected thread becomes permanently unusable. Sending another message, clicking Retry, and running remote Compact all fail with the same error. Restarting does not repair the session.

The local session JSONL confirms that the review result was stored as a response_item/message with "id":"review_rollout_user" instead of a valid msg... ID.

Expected behavior:
Review-generated messages should use a valid API message ID, or the invalid internal placeholder ID should be removed before replaying the conversation.

Feedback ID: 019f7d79-67a7-76e1-866d-564082402e15

What steps can reproduce the bug?

  1. Open an existing Codex App thread associated with a Git worktree.
  2. Start a code review using the Codex App’s Review action.
  3. Wait for the reviewer model to finish and insert the review results into the thread.
  4. Send any follow-up message in the same thread.
  5. Observe that the request fails with HTTP 400:

Invalid 'input[2].id': 'review_rollout_user'. Expected an ID that begins with 'msg'.

  1. Click Retry or trigger remote Compact.
  2. Observe that both operations fail with the same error.

The bug occurs because the review result is persisted as a user message with the synthetic ID "review_rollout_user", which is replayed in subsequent API requests.

What is the expected behavior?

The review result should be stored with a valid message ID beginning with msg, or its internal placeholder ID should be removed before the conversation is sent to the API.

After a review completes, the user should be able to continue the same thread, retry a turn, and compact the conversation without receiving an invalid_id_prefix error. An invalid review-generated message should not permanently make the thread unusable.

Additional information

_No response_

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗