Coding agents are great at looking busy. They will rename half your repo, invent a new config format, and leave a cheerful summary like they just remodeled your kitchen while you were at the store.
The problem is not intelligence. The problem is that “helpful” and “boring” fight each other.
When an agent “cleans up” a working Docker Compose file because the YAML felt inconsistent, you learn this fast. It was consistent enough to boot. After the cleanup, nothing started. That is when a definition of boring belongs in every agent brief.
What boring means
Boring means: do the smallest change that matches how this repo already does things.
Not prettier. Not more modern. Not the pattern you saw in a blog post last week. Match the house style, even if the house style is a little ugly.
If the project uses environment variables in .env and a plain compose file, do not invent a secret manager wrapper for a one-line fix. If tests are pytest with fixtures in conftest.py, do not invent a new test harness because it feels cleaner.
Boring is a feature. Novelty is a tax.
The do-not-invent rules to write down
Keep a short block you paste near the top of agent instructions. It looks roughly like this:
- Prefer editing an existing file over creating a new one.
- Prefer the project’s existing patterns over “best practice” from the internet.
- Do not rename symbols unless the task is specifically about renaming.
- Do not change formatting outside the lines you must touch.
- Do not add dependencies without asking.
- Do not rewrite working config because it looks messy.
- If you are unsure, stop and ask instead of improvising architecture.
That last one matters. Agents hate stopping. They would rather invent a solution than leave a question mark. Your job is to make inventing costlier than asking.
Why refactors need an extra leash
Refactors are where agents go feral.
You say “clean this up” and they hear “rebuild civilization.” Suddenly you have a new folder structure, a utility module nobody asked for, and three abstractions that each wrap one function.
So for refactors add:
- Touch only these paths: …
- Keep public APIs stable.
- No new packages.
- Show a diff summary before applying large edits.
- Done means tests still pass and behavior is unchanged.
If you cannot write those constraints, you are not ready to ask an agent for a refactor. You are still thinking out loud.
Config is sacred until it is not
Config files feel low stakes. They are not.
A “tiny” change to nginx, compose, CI, or Terraform can take down a weekend. Agents do not feel weekends.
A solid rule for config:
- Quote the current working snippet in the prompt.
- Say what must keep working after the change.
- Ask for the minimal patch, not a rewrite.
- Require a rollback note: what to revert if it breaks.
A five-line patch and a boring explanation beat a beautiful new stack you do not understand at midnight.
Keep the brief tight on logging and cleanup
If you ask an agent to “standardize logging” without a boring definition, it may introduce a whole logging framework, change every call site, and break the one place that wrote structured JSON for another system.
With a boring definition, the brief becomes: keep the existing logger, add request ids where missing, do not change log destinations, do not add packages. Small diffs. Working systems stay working.
Same model. Different leash.
Checklist before you unleash an agent on “cleanup”
- What files are in scope?
- What must not change?
- What pattern should it copy from an existing file?
- What does done look like in one sentence?
- What should it do if the pattern is unclear?
If you skip the checklist, you are paying for creativity you did not order.
Bottom line
Clever code is fun. Sleeping is also good.
Agents amplify whatever you reward. If you reward elegance speeches, you get elegance speeches. If you reward small diffs that match the repo, you get small diffs.
Give your coding agent a definition of boring. Write it like house rules on the fridge. Then let it work inside those walls. You will still get surprises. You will just get fewer surprise rewrites of things that were already fine.





