EditAgent: Rethinking Agentic Image Editing
Organizations: UC San Diego · Adobe Research
Abstract
Agentic image editors decompose complex requests into steps, but when a step fails, they mostly retry with the same narrow set of tools and a judge that scores each output by eye directly. We argue that such agents are bounded by two spaces: the action space of what the agent can do, and the observation space of what its judge can see. On our expert-annotated benchmark, a general-purpose editor yields no usable result in over 40% of the cases, and no judge is reliable across edit types. We present EditAgent, which expands both spaces. It routes each step to general editors and specialized methods, and attaches to each candidate a verification record. With these records, off-the-shelf VLM judges outperform finetuned reward models. Candidates are generated in parallel and judged in one listwise call: experts prefer this to sequential refinement in 78.5% of decided comparisons, at no more than half the judge calls. EditAgent improves two open-weight editors on three benchmarks and serves as a data engine for training stronger editors.
Figures & tables
| Judge | Pointwise | Listwise (Ours) | |
| EditScore-7B | 65.9 | – | – |
| EditScore-32B | 68.0 | – | – |
| EditScore-72B | 70.3 | – | – |
| EditScore-7B, Ensemble@4 | 72.7 | – | – |
| EditScore-32B, Ensemble@4 | 73.3 | – | – |
| EditScore-72B, Ensemble@4 | 76.3 | – | – |
| Listwise | Evidence | Style | Content | Scene | Photo. | Geom. | Enh. | All |
| 84.4 | 81.7 | 67.5 | 54.2 | 66.4 | 65.0 | 71.6 | ||
| ✓ | 87.1 | 87.1 | 72.0 | 47.2 | 78.6 | 36.8 | 73.6 | |
| ✓ | ✓ | 87.6 | 86.4 | 81.9 | 64.4 | 81.4 | 80.3 | 81.3 |
| Model | EdiVal-IF | EdiVal-CC | EdiVal-O |
| Closed-source | |||
| FLUX.1-Kontext-max † [ 23 ] | 69.49 / 46.89 / 31.83 | 93.93 / 90.90 / 88.40 | 80.79 / 65.29 / 53.04 |
| GPT-Image-1 † [ 41 ] | 73.12 / 54.89 / 38.35 | 81.00 / 77.78 / 75.50 | 76.96 / 65.34 / 53.81 |
| Nano Banana † [ 14 ] | 70.70 / 50.66 / 35.35 | 93.91 / 90.48 / 89.48 | 81.48 / 67.70 / 56.24 |
| FLUX.2-max [ 25 ] | 75.55 / 55.27 / 39.36 | 92.91 / 88.30 / 85.78 | 83.78 / 69.86 / 58.10 |
| Nano Banana 2 † [ 10 ] | 73.89 / 54.17 / 38.61 | 93.54 / 90.52 / 88.61 | 83.14 / 70.02 / 58.49 |
| Model | ComplexBench-Edit | Complex-Edit | ||||||||
| Obj. | Obj.-At. | Obj.-At.-G. | Two-chain | Three-chain | Avg. | IF | IP | PQ | O | |
| Qwen-Image-Edit-2511 | 56.98 | 60.81 | 67.97 | 57.59 | 28.67 | 54.40 | 8.721 | 6.259 | 7.132 | 7.371 |
| + EditAgent | 68.92 | 70.74 | 73.17 | 60.21 | 31.11 | 60.83 | 8.736 | 6.391 | 7.209 | 7.445 |
| FLUX.2-klein-9B | 67.52 | 70.56 | 73.87 | 61.67 | 33.61 | 61.45 | 8.763 | 7.304 | 6.964 | 7.677 |
| + EditAgent | 70.05 | 74.69 | 76.80 | 64.48 | 36.53 | 64.51 | 8.783 | 7.131 | 7.224 | 7.713 |
| Model | Qwen-Image-Edit-2511 [ 63 ] | FLUX.2-klein-9B [ 27 ] | ||||||
| Turn 1 | Turn 2 | Turn 3 | Inference Cost | Turn 1 | Turn 2 | Turn 3 | Inference Cost | |
| Standalone Editor | 75.97 | 58.58 | 47.64 | 1.1 | 81.37 | 66.30 | 53.20 | 0.5 |
| MIRA † [ 75 ] | 75.79 | 57.59 | 45.59 | 11.3 | 82.57 | 67.08 | 53.76 | 5.6 |
| IMAGAgent [ 49 ] | 76.83 | 60.15 | 49.78 | 10.9 | 82.63 | 68.00 | 55.21 | 4.6 |
| EditThinker [ 28 ] | 76.58 | 60.47 | 49.23 | 9.4 | 82.62 | 67.20 | 55.97 | 4.6 |
| GenArtist † [ 61 ] | 79.51 | 62.94 | 50.54 | 9.5 | 82.94 | 67.48 | 54.74 | 5.2 |
| Baseline | Training Data Source | EdiVal-O Turn 3 | Complex-Edit O | ComplexBench-Edit Avg |
| Qwen-Image-Edit-2511 | — | 49.66 | 7.371 | 54.40 |
| FLUX.2-klein-9B | 48.51 | 7.334 | 55.84 | |
| EditAgent | 51.61 | 7.435 | 57.57 | |
| FLUX.2-klein-base-9B | — | 54.53 | 7.517 | 57.84 |
| FLUX.2-klein-9B | 52.83 | 7.351 | 57.47 | |
| EditAgent | 56.53 | 7.615 | 59.98 |
| Vanilla & Agent | Action Space | Observation Space | EdiVal-O (T3) | |
| Parallel Comparison | Verification Record | |||
| 47.64 | ||||
| 49.43 | ||||
| 52.37 | ||||
| 53.18 | ||||
| 47.53 | ||||
| Group | Edit Type | Definition | General | Hit@1 |
| Content | Add Text | add readable text/writing/signage somewhere it fits naturally | 19 | 19 |
| Remove Text | remove existing text/logo/signage (only if some is visible) | 15 | 15 | |
| Replace Text | replace visible text with different text (only if text is visible) | 14 | 15 | |
| Change Text Style | change color/font/size/style of visible text | 9 | 12 | |
| Add Object | add a new object/animal/person that fits the scene | 18 | 18 | |
| Remove Object | remove an existing object/person/animal | 15 | 17 |
| Role | Model | Input | Output | Prompt |
| Planner | VLM | Request of the turn, the version graph and the carried requirements | Goal and ordered steps, each with its operation, target, regions to keep, parameters and new requirements | |
| Analyzer | VLM | One step, source image of the step, carried requirements, feedback on earlier attempts, reports of earlier steps, parameter documentation of the applicable methods | Explicit instruction stating what changes and what stays, operation, target, regions to keep, parameters, acceptance criteria, candidate count | |
| Router | Code | Analyzed step | Methods, each contributing at least one candidate ( Tab. S4 ) | None |
| Grounder | VLM and SAM 2.1 | Image and a referring expression | One box per referred object in coordinates normalized to , refined into a mask by SAM 2.1 and reviewed by the VLM | and |
| Editing Methods | Tab. S5 | Source image of the step, instruction, target, parameters | Candidate image and its execution artifacts, such as a mask | None |
| Judge | VLM | Request of the step with its scope, acceptance criteria and regions to keep, source image, and all candidates with their verification records in a shuffled order | A note, a pass/fail verdict and a score from 1 to 10 for every candidate, then the best candidate and a ranking |
| Setting | Value |
| Candidates per Attempt | at most 3 |
| Attempts per Step | 3 |
| Re-Plans per Turn | 2 |
| Repairs per Turn | 1 |
| Repair Confidence | at least 0.4 |
| Seed of Candidate in Attempt |
| Step | Operation | Methods |
| Remove a target | remove | General Editor Removal Specialist |
| Recolor a target | recolor | General Editor Masked Recolor |
| Restyle a target | restyle | General Editor Masked Local Editor |
| Replace or add an object | replace, add | General Editor |
| Move a target | move | General Editor Move Specialist |
| Resize a subject | scale_subject | General Editor Subject Scaling |
| Method | Backend | Established by Code or Construction | Left to the Judge |
| General Editor | The backbone (FLUX.2-klein-9B or Qwen-Image-Edit-2511) edits the whole frame. | None | Requested change, preservation, realism. |
| Masked Local Editor | Target mask from grounding, SAM 2.1 [ 46 ] and VLM review. The general editor edits the frame, and only its pixels inside the dilated and feathered mask are kept. | Unchanged outside the feathered mask (code). | Requested look in the mask, seam realism. |
| Masked Recolor | As above, with a tighter mask. | Unchanged outside the feathered mask (code). | Requested color, coverage, seam. |
| Removal Specialist | OSOR [ 80 ] with the reviewed target mask, whose output is used directly. | Canvas size unchanged (code). | Target and attached parts removed, background reconstructed, neighbors and supports kept. |
| Move Specialist | A diffusion transformer trained for object movement, conditioned on the source mask and a destination box designed by the VLM. Pixels outside the source and destination regions are restored from the source. | None | Object gone from its origin, same object at the destination, size consistent with depth, blending. |
| Subject Scaling | Reviewed mask, ViTMatte [ 69 ] alpha matte, uniform rescaling anchored at the feet, inpainting of the old footprint, contact shadow and color harmonization. A second candidate refines the composite with the general editor. | Every pixel outside the old and new subject and its shadow equals the source (code). No candidate whose scaled subject would cross a frame edge (construction). | Size change in the requested direction, recognizable subject, no halo. |
| Measurement | Used For | Definition | Shown to the Judge |
| Visible Change | Every step | Share of pixels whose CIE76 color difference to the source exceeds 8, after a Gaussian blur with px of both images (no blur for detail edits). | One value per candidate, e.g . “visible change 4.2% of the frame” for a small local edit. |
| Change Map | Every step | Per-pixel to the source, shown as brightness on one scale shared by all candidates. | An image per candidate, black where a pixel is unchanged and brighter where it differs more. |
| Close-Up | Localized steps | The region that the request names, localized once in the source. The crop pads its box by 30% of its size and covers at least 30% of the frame on each axis. | A BEFORE | AFTER image per candidate, at the same place and scale for all. |
| Photometric Statistics | Tone, color and lighting | Brightness is the mean CIELAB and contrast the standard deviation of . Saturation is the mean chroma . Clipped highlights and crushed shadows are the shares of pixels whose brightest channel is at least 250 or at most 5, and color shift is the change of mean and . | One line for the source and one per candidate, e.g . “brightness 0.62, contrast 0.24, saturation 18.3, clipped 2.1%, color shift ”. |
| Sharpness and Noise | Sharpening, denoising, blur | Variance of the Laplacian and the noise level of the luminance, with both images downsampled to a common size, and for a localized step also the sharpness inside the target relative to the source. | Ratios to the source, e.g . “sharpness 1.84, noise 0.71” for a sharpened candidate. |
| Structure Kept | Global edits that keep the layout | Mean luminance SSIM between the source and the candidate over the frame. | One value per candidate, where 1 means identical structure and lower values mean more change. |
| Agent | How It Is Run |
| GenArtist † | Official prompts. The unreleased editing loop is re-implemented, and its tools become backbone edits, masked for local tools. |
| MIRA † | Trained policy model not released. The planning loop of the paper runs zero-shot, with Qwen3.8-27B serving as its policy model. |
| IMAGAgent | Released code and prompts, with closed models replaced by Qwen3.8-27B and the backbone, and inpainting by masked edits. |
| EditThinker-8B | Released code and 8B thinker. |
| VisionDirector-TF † | Trained planner not released. A training-free loop uses the released verifier prompt and runs local goals as masked edits. |
| RISE-Agent | Released code, with Qwen3.8-27B as planner and verifier and without web search. |
| Model | EdiVal-O | CBE | CE-O |
| Qwen-Image-Edit-2511 | 75.97 / 58.58 / 47.64 | 54.40 | 7.371 |
| + EditAgent (Qwen3.8-27B) | 80.64 / 67.02 / 55.46 | 60.83 | 7.445 |
| + EditAgent (Gemma-4-31B) | 80.34 / 66.28 / 54.17 | 60.53 | 7.457 |
| FLUX.2-klein-9B | 81.37 / 66.30 / 53.20 | 61.45 | 7.677 |
| + EditAgent (Qwen3.8-27B) | 84.46 / 71.10 / 59.45 | 64.51 | 7.713 |
| + EditAgent (Gemma-4-31B) | 85.17 / 71.64 / 60.25 | 63.44 | 7.715 |
| Benchmark | Backbone | Masked Local Editor | Masked Recolor | Removal Specialist | Photometric Operators | Style Filter | Zoom and Other | General Editor | Accepted Steps |
| EdiVal | Qwen-Image-Edit-2511 | 9.2 | 6.7 | 8.1 | 0.0 | 0.0 | 0.6 | 75.4 | 1,253 |
| FLUX.2-klein-9B | 7.8 | 7.7 | 3.3 | 0.0 | 0.0 | 0.0 | 81.2 | 1,628 | |
| ComplexBench-Edit | Qwen-Image-Edit-2511 | 10.1 | 5.2 | 16.0 | 0.0 | 0.1 | 0.0 | 68.6 | 1,891 |
| FLUX.2-klein-9B | 8.3 | 5.3 | 7.2 | 0.0 | 0.0 | 0.0 | 79.2 | 2,246 | |
| Complex-Edit | Qwen-Image-Edit-2511 | 6.0 | 4.6 | 3.7 | 5.4 | 4.4 | 1.2 | 74.8 | 28,712 |
| FLUX.2-klein-9B | 4.8 | 4.7 | 1.8 | 4.5 | 3.6 | 1.1 | 79.5 | 33,224 |
| Group | Turns | Accepted (%) | First (%) | Attempts | Candi- dates |
| Content | 46,675 | 94.1 | 79.6 | 1.58 | 4.06 |
| Style & Effects | 22,864 | 94.6 | 82.0 | 1.58 | 4.03 |
| Scene | 28,595 | 92.2 | 70.4 | 2.23 | 5.15 |
| Photometric | 22,841 | 93.8 | 65.5 | 2.13 | 3.35 |
| Geometry | 31,390 | 83.3 | 69.6 | 2.56 | 5.29 |
| Enhancement | 11,441 | 89.9 | 63.8 | 2.59 | 4.63 |
| Term in the Paper | Name in the Prompts |
| Candidate | TRIAL n |
| Source Image of a Step | BEFORE |
| Change Map | CHANGE-MAP |
| Close-Up | CLOSE-UP , THEN | NOW close-up |
| General Editor | edit_model |
| Masked Methods | masked_composite |
Image Editing
Image editing changes selected visual content while preserving the parts of an image that should remain unchanged.
See all 318 papers