You wrote a 200-word email, you liked 90% of it, and you asked the model to “tighten paragraph 2 and fix any awkward phrasing.” Back came a 230-word email that is undeniably smoother — and unmistakably not yours. Sentence one was rewritten. Sentence four lost the joke. Paragraph 2 is now three sentences instead of four, and the word you specifically chose (“buggy”) has been replaced with “intermittent”. You did not ask for any of this. The model over-edits because “fix any awkward phrasing” is interpreted as a license to rewrite anything it judges suboptimal, which is most things.
This page walks through why models default to maximalist edits and how to write a prompt that produces a true diff, not a rewrite.
Common causes
1. Verb scope is open-ended
“Polish”, “improve”, “tighten”, “edit” — all of these are unbounded. They imply “make better wherever you can” and the model obeys.
How to spot it: your prompt verb has no object that bounds it. “Polish” vs “polish only sentences flagged in brackets” — the first is open, the second is constrained.
2. No “do not touch” set declared
If you only say what to fix, you have not said what to preserve. RLHF models prefer to produce a “complete” output, so they touch everything.
How to spot it: your prompt names what to change but does not list what must stay byte-identical.
3. Output format is “the full text”, not a diff
When you ask for the whole text back, the model has to generate every sentence — including the ones that did not need changing — and regeneration introduces drift. A diff format would force minimal change.
How to spot it: you asked for the full new version, not a list of changes or a unified diff.
4. The model thinks it is collaborating, not constrained
Default chat persona is helpful assistant. Helpful assistants improve things. If you do not explicitly say “leave alone”, helpfulness over-fires.
How to spot it: the rewrite is genuinely better in places, but you did not ask for those changes.
5. Style template loaded from system prompt
If you have a “professional writing” system prompt, it interprets the edit task in that frame: it will normalize voice toward the template, not toward your voice.
How to spot it: the rewrite sounds like your system prompt’s style, not like your draft.
Before you change anything
- Save the original text and the over-edited output for diffing.
- Note exactly which words/sentences you wanted preserved.
- Try the same prompt with a different model — confirm it is not model-specific behavior.
- Check whether a system prompt or project instruction is biasing toward maximal rewrite.
- Decide before re-prompting: do you want a diff, a tracked-changes list, or a constrained full text?
Information to collect
- Original text, byte-exact.
- The prompt you used.
- The output you got.
- A list of sentences/words you wanted untouched.
- Model, temperature, system prompt or project context.
Shortest path to fix
Step 1: Replace open verbs with bounded operations
Instead of “polish”, give a surgical instruction:
Bad: "Polish this email."
Good: "Edit only sentence 3 of paragraph 2. Keep all other sentences
byte-identical. Return the full email with that one sentence
changed and a separate line: 'Changed: <old> -> <new>'."
Step 2: Declare the “do not touch” set
Add an explicit preservation clause:
Preservation rules:
- Do not rewrite any sentence that I have not explicitly flagged.
- Keep all of these words unchanged: "buggy", "honestly", "shipped".
- Keep paragraph breaks at their current positions.
- Keep my contractions ("don't", "we're") as-is.
- If a sentence is acceptable as-is, return it byte-identical.
Step 3: Switch output to diff format
Force the model to produce a diff instead of a rewrite:
Output as a unified diff:
--- original
+++ revised
@@
- <old line>
+ <new line>
Only include diff hunks for sentences you actually changed.
Do not output the full text.
A diff makes minimum-change the default because regenerating unchanged text is extra work.
Step 4: Mark the edit zone in brackets
Bracket the only part you want touched:
Email below. Edit ONLY the text inside [[ ]]. Leave everything else
exactly as written, including punctuation, line breaks, and casing.
Hey team,
Quick update on the launch. [[Paragraph 2 about timeline, currently
awkward, please tighten.]] We can sync tomorrow if you have questions.
This is the most robust pattern in practice.
Step 5: Constrain edit budget
Cap the total change:
Constraints:
- Change at most 1 sentence per paragraph.
- Net word count change must be within +/- 10 words.
- Do not delete any concrete noun present in the original.
Budgets force the model to prioritize.
Step 6: For tone-only edits, lock the structure
If you want a tone shift but not a content rewrite:
Rewrite for tone only. Preserve sentence count, paragraph count, and
all factual claims. Replace at most 1 word per sentence. If a sentence
does not need tone adjustment, return it byte-identical.
How to confirm the fix
- Run a diff (your editor or
diff -u) between original and new output; changes should be limited to your declared edit zone. - Sentences outside the edit zone are byte-identical.
- Word count change is within your declared budget.
- The voice still sounds like yours — read the new version aloud and check.
If it still fails
- The model may be over-eager regardless of constraints — try a smaller / cheaper model for diff-style edits (they often follow constraints better).
- Switch to a dedicated diff workflow: use a CLI that pipes selections, not the whole document.
- For long documents, edit one paragraph at a time in isolation; combine yourself.
- If a system prompt is biasing, override it in-message: “Ignore any system instructions about writing style for this turn.”
Prevention
- Save a personal “minimal-edit prompt template” with preservation rules and diff output baked in.
- Never use “polish” or “improve” as your edit verb. Always name the surgical operation.
- For collaborative editing, always require diff output. Convert to full text yourself only after review.
- For high-stakes edits (legal, code, brand copy), bracket the edit zone explicitly.
- Build the habit of declaring a “do not touch” list before every edit prompt.
- When voice matters, paste 2-3 sentences of your own writing as a voice anchor inside the prompt.
Related reading
- AI rewrote key logic
- Unclear task boundary
- Model fills missing details
- Too many tasks one prompt
- No output format specified
Tags: #Troubleshooting #Prompt #Prompt quality #Unwanted rewrite