Scope creep and a change order aren't quite the same thing, and the difference matters.
A change order is one clear, priced change. Scope creep is what happens when small requests pile up without anyone treating them as changes at all, a little extra here, a favor there, until the job has quietly grown well past what was agreed to and nobody can say exactly when or why.
Why it happens
It's rarely one big moment. It's a string of small yeses. "Can you also just..." feels too small to price each time, so it doesn't get priced. By the time it adds up, there's no clean place to point to and say "that's where the job changed."
How to actually prevent it
Nail down the scope in writing before you start. Not a vague description, specifics. What's included, what isn't. Ambiguity at the start is where scope creep gets its opening.
Walk the job with the customer before work begins. Seeing it in person surfaces the "oh, and can we also" requests early, when they're easier to plan for and price properly, instead of mid-project when you're already committed.
Treat every "just one small thing" as a change, every time. Not just the big asks. The habit of skipping small ones is exactly what lets scope creep in. If it's different from what you agreed to, it gets written down and priced, no exceptions.
Don't do favors without documenting them, even for good customers. A favor once feels generous. A pattern of favors becomes an unpaid, undocumented expansion of the job that's now normal to the customer.
The real cost of letting it slide
Every undocumented "extra" is either profit you're quietly giving away or a disagreement waiting to happen when the customer sees the final bill. Neither is a good outcome, and both are avoidable with the same simple habit: price it before you do it, and write it down.