GPT Image 2.5 edit drifts after a few turns: repeat the preserve list

OpenAI says to repeat the preserve list on each iteration to reduce drift. How to run a one-change-per-call edit chain on Sume, which keeps no chat memory.

5 min readSume
All posts

If a GPT Image 2.5 edit chain drifts after the third or fourth change, repeat the full list of things that must not change in every prompt, and ask for one change per call. That is OpenAI's own advice for iterative edits. On Sume each POST /v1/images call is independent, so the preserve list has to travel with every request.

What OpenAI documents about iteration

OpenAI's launch coverage says Images 2.5 follows editing instructions across multiple turns better than Images 2.0, and its developer pages still tell you to guard against drift. The Image prompting page says to pass the previous output as the next edit input, request one change, and repeat the details to preserve. The Cookbook guide says to repeat the preserve list on each iteration to reduce drift.

Press coverage of the ChatGPT launch adds a caution: Winbuzzer reports that highlighted areas are approximate and edits can extend beyond them.

Iteration advice from OpenAI's pages (read 2026-10-02)
AdviceWhere it comes from
Pass the previous output as the next edit inputImage prompting page
Request one change at a timeImage prompting page
Repeat the details to preserveImage prompting page
Repeat the preserve list on each iterationCookbook prompting guide
Compare results before adding more instructionsImage prompting page

Why Sume needs the list every time

The ChatGPT app and OpenAI's Responses API can carry context from turn to turn. Sume's Image API does not: its parameter table has a prompt and optional input_references, and no field that points at a prior response. Each call sees only what you send.

So an edit chain on Sume is a loop. Take the image you approved, host it at a public HTTPS URL, send it as the reference, and write the preserve list again. Phrases like "same as before" mean nothing to a call that has no before.

A reusable preserve block

Keep the block in your code and append the one new change. Adapt the nouns to your picture:

  • Preserve: the subject's face, hairstyle, skin tone and expression; the camera angle; the lighting; the background objects; any text and logos exactly as they are.
  • Change only: the jacket colour from grey to red.
  • Do not add text, props or people. Keep everything else the same.

Keep the original in the loop

Every pass starts from a slightly different picture, so small errors compound. A safer pattern is to send the previous output and the untouched original together as references, and number them in the prompt (Image 1 is the original, Image 2 is the latest). Sume accepts up to 16 references on GPT Image 2.5, and numbering them in the prompt is how you say which is which.

Remember the cost: a completed image is billed in full, so a six-step chain is six images. See what an edit chain costs. Pass aspect_ratio: "auto" on each edit so the frame stays the same shape; Sume's docs note that omitting it is not the same.

When to stop editing

If the same detail drifts twice with the preserve list present, stop chaining. Go back to the last good image and make that one change with a mask, or regenerate the image from the original with all changes in a single prompt. OpenAI's image guide says the model may occasionally struggle to maintain visual consistency for recurring characters or brand elements, so some drift is a known limit, not a prompt mistake.

Sources

Related posts

More in Models

All Models posts

Written by Sume