Connected-app writes need definitive recovery after transport errors
Summary
A connected-app write can begin dispatch and then return an MCP transport/send
error without an object identifier. The action can remain present in the tool
catalog, but the write outcome is unknown. Later negative search or listing
results are not definitive proof that the write did not commit, so safely
retrying may create a duplicate.
Sanitized reproduction
- Start a fresh Codex task and confirm the connected-app read and write actions
are registered and callable.
- Complete multiple read/write cycles with normal results.
- Invoke another write action.
- Observe an MCP transport/send error after dispatch begins, with no returned
object identifier or operation identifier.
- Confirm the action remains registered. Do not retry the write.
The local MCP call item can report a failed call, but that is not a definitive
status for the external write. Search/list absence may lag and names need not be
unique.
Requested recovery contract
Please support exactly one of these contracts for connected-app writes:
- A connector-persisted caller idempotency key whose replay returns the
original object identifier and result; or
- A stable operation identifier plus a definitive committed/not-committed
lookup that returns the object identifier when committed.
Either contract would let fail-closed workflows recover from a lost response
without risking a duplicate. A catalog refresh or fresh task alone does not
resolve the unknown outcome.
Environment
- Codex CLI: 0.144.4
- Surface: Codex desktop on macOS
- Connected app: official Codex connected-app action
No retry or alternate write path was attempted.