Rename a function, tweak what it returns, change one default — it feels like a one-line edit. The agent makes it, the file looks clean, the test it runs passes. What it never saw is the eleven other places that called that function expecting the old shape. Those don't fail loudly; they fail later, somewhere you weren't looking, one at a time.
A shared symbol has no local edits. Every change to it is a change to everything that depends on it — and the agent, working inside one file, sees only the file in front of it. The rule forces it to look outward before it touches anything load-bearing:
✕ Without the rule
✓ With the rule
Drop it into your CLAUDE.md. On an isolated, private function it costs nothing — there are no callers to list, so the rule gets out of the way. Where it earns its keep is exactly where damage hides: the shared helper, the config key, the public signature that fifty things quietly assume. Find-and-replace is the most dangerous tool in that situation, because it rewrites text without understanding the call graph — so the rule makes the agent trace before it touches.