Codex 0.160 queued messages resume after reconnect: Sume safety
Codex 0.160 resumes unsent queued messages after a reconnect without duplicate sends. That covers messages, not tool effects, so keep Sume idempotency_key.

Codex CLI 0.160.0 (October 1, 2026) says unsent queued messages now resume after reconnection once uncertain submissions are resolved, avoiding duplicate sends. That is a fix for chat messages. It does not make a paid Sume tool call safe to repeat, because a tool call that already reached Sume is a separate effect. Keep sending an idempotency_key on every write and paid tool.
What is and is not deduplicated
| Layer | Protected by | Not protected |
|---|---|---|
| User message after reconnect | Codex 0.160 resume logic | Anything outside the message |
| Sume write or paid MCP tool | idempotency_key argument | Calls with a new key or changed body |
| Sume REST create | Idempotency-Key header | Same |
How Codex reaches Sume
Codex can attach a remote MCP server with a bearer token read from an environment variable, so https://mcp.sume.com/mcp works with a SUME_API_KEY and Authorization: Bearer. An API key sees the full tool set. OAuth is also supported on the MCP host with PKCE, using the mcp:read scope, with mcp:write as an opt-in. Under read-only, mutating tools return insufficient_scope.
Waiting for a render
A network drop is exactly when a long job is in flight. If the connection returns and the session continues, do not recreate the job. Call jobs_wait again with the same ids. It holds at most 55 seconds, and wait_slice_expired simply means ask again. A 524 or 522 on the way is a transport failure, not a job outcome.
- Reuse the same
idempotency_keywhen the model retries a create. - Prefer
dry_runandmax_spend_usdwhile testing a prompt. - Batch
job_idsaccepts 1 to 20 ids.
Quick test
Start a paid call, disconnect the network, reconnect, and watch the next tool call. If the model re-issues the same create with the same key, the response is the original job. If you see a second job id, the key was regenerated; fix the prompt so the key is derived from the task, not invented each time.
Sources
Related posts
More in Developers
- Compare AI image models on the same prompt: a 20-line API script
MAI-Image-2.6 and Muse Image both claim No. 2 on Arena. Skip the leaderboard: run one prompt through several Sume image models and compare the URLs and cost.
- Run one prompt on five image models via Sume: 200 vs 202 in Python
A Python script fires one prompt at Seedream, FLUX.2, Qwen, Ideogram and Recraft ids on Sume and handles both the 200 image reply and the 202 job envelope.
- Why concurrency_limit differs from the Sume plan table
In Sume generation_limits, concurrency_limit is the effective cap and limit_source says plan or admin_override. Size work from it, not plan_concurrency_limit.
- curl --retry on a POST: retry a Sume submit with one key
curl --retry also retries a POST, and it resends the same headers each time. Put an Idempotency-Key on a Sume submit first, then pick --retry-max-time.
Written by Sume