Mechanism: Vibe Drift
One-sentence definition
Vibe drift is the anti-pattern where the original goal silently changes mid-session — through follow-up requests, agent suggestions, or scope creep — so the diff no longer matches what you intended to ship.
The problem
You started fixing health uptime. The agent mentions logging is inconsistent. You say “sure, quick cleanup.” Now the PR touches middleware, logger config, and three unrelated routes. The health bug might be fixed; the session goal mutated without a new goal block, verify, or fence.
Drift feels productive. It is how small tasks become unreviewable merges.
Symptoms:
- “While we’re here” accepted without new session
- Cannot restate original done condition
- PR title does not match half the diff
- Verify from message one no longer applies to full diff
How it works (recognize and fix)
Drift pattern:
Clear goal at start
│
▼
Side quest accepted in same chat
│
▼
Original verify passes but diff includes extras
│
▼
Vibe driftFix mechanisms:
- Detect — Compare diff to original goal block.
- Stop — Revert out-of-scope hunks (diff-as-context).
- Split — Side quest → new session with new scope fence.
- Handoff — Session handoff if continuing later.
Prevention: scope fence + “new task = new chat” rule.
When to watch for it
- Every long agent thread (>10 turns)
- After any “also” or “while you’re at it”
- When agent proposes “improvements” outside constraints
- Before checkpoint on large diffs
When a goal change is legitimate
- You explicitly rewrite goal + verify + constraints at top of chat
- Or open new session with new handoff — not cumulative drift
Failure modes
Drift as feature — “Agile” acceptance of scope creep. Fix: Named goal or split.
Partial revert — Health fixed but drift hunks remain. Fix: Diff review against original fence.
Drift across sessions — Handoff adds new work without closing old goal. Fix: One goal per handoff block.
Minimal example
Context: Health uptime session picks up logging refactor.
Recovery:
- Re-read message-one goal block.
git checkout --on logger and middleware files.- Verify health tests only.
- New chat:
handoff + logging refactor goalif logging still wanted.
Done when: Merged diff matches original goal or a new explicit goal — not both accidentally.
Tool instances (optional deep-dive)
Portable idea above; this section is tool-specific. Date: June 2026.
Cursor
- Pin goal block in notepad; re-paste every 5 turns on long runs.
- Rules: “If request expands scope, ask for new session.”
- Reject hunks outside fence before merge.
Related mechanisms
- Goal — what drift moves away from
- Scope fence — boundary drift violates
- Session handoff — clean break between goals
Try it yourself
Exercise: Open an old long agent chat. Write original goal vs what actually shipped. Note where drift started (one message).
Done when: You can name the message that should have been a new session.

