v0.30.0: Responses “diff/edit previous” flows 400 with Azure v1 — client references rs_* items but nothing is stored

Resolved 💬 0 comments Opened Sep 8, 2025 by bro4all Closed Sep 9, 2025

What version of Codex is running?

.30.0

Which model were you using?

gpt-5

What platform is your computer?

MacOS

What steps can reproduce the bug?

model_provider = "azure"
model = "gpt5-deployment"
wire_api = "responses"
# disable_response_storage = false  # present in config.toml
[model_providers.azure]
base_url = "https://<resource>.openai.azure.com/openai/v1/"
env_key = "AZURE_OPENAI_API_KEY"

codex (from a trusted project dir).

  1. /new, send a simple prompt (“hello”) → works.
  2. Use a UI action that modifies or diffs the previous assistant message (e.g., “Tell the model what to do diff”).
  3. Observe request fails with 400 and this payload/diagnostic:

Bad Request 400
{
  "error": {
    "message": "Item with id 'rs_XXXXXXXX' not found. Items are not persisted when `store` is set to false. Try again with `store` set to true, or remove this item from your input.",
    "type": "invalid_request_error",
    "param": "input",
    "code": null
  }
}

What is the expected behavior?

Expected behavior
• Either:

  1. Codex sets store: true automatically when it intends to reference prior items, or
  2. Codex avoids sending server item references in stateless mode (inline the necessary prior content into the new request), or
  3. Provide a user option/flag to enable server-side persistence for Responses (so “diff/edit” can work).

Actual behavior
• Codex 0.30.0 appears to send requests that reference prior item ids while the server has no stored items, causing a hard 400 and breaking “diff/edit previous” UX.

Workarounds
• Avoid “diff/edit previous”; copy the prior output (or code) into a new message and describe the changes.
• Using Codex ≤0.29.x (where storage behavior differs) also avoids the error, but I want 0.30.0 to work.

What do you see instead?

_No response_

Additional information

_No response_

View original on GitHub ↗