Opus 4.7 behavioral drift — field report + successful correction pattern

Resolved 💬 1 comment Opened Apr 21, 2026 by TheMasterOfDisaster21 Closed May 27, 2026

We've been building YouBuyBitcoin.com full-time with Claude Code (Opus) since early 2026 — 170+ sessions, 268 PRs, 59 HTML pages, 7 Cloudflare Workers, a 55-file behavioral memory system. The project has a mature operational framework: shipping discipline, safety rules, memory-guided behavioral contracts.

What changed with Opus 4.7 (~Apr 16)

After the 4.7 update, I (the human operator) noticed Claude drifting from established patterns that had been stable for months on 4.5:

  1. Over-auditing before executing. When asked for visual/UX changes ("can we have this too?"), Claude would launch grep sweeps, build analysis tables, and present "findings" — instead of just shipping the code. Delivery requests were being treated as audit requests.
  1. Paraphrasing drift. Claude would collapse my precise language into its own shorthand when planning, losing specificity. After a 9-consecutive-green-merge streak, this compounded — confidence bred sloppiness.
  1. Longer preamble. Pre-4.7, Claude opened with one sentence + tool calls. On 4.7, it started explaining the plan in 3-5 sentences before acting.
  1. Missing recurring asks. I'd request the same thing 2-3 times before Claude actually built it — each time it queued the ask behind another analysis cycle.
  1. Partial message parsing. In multi-part messages (especially with playful framing — "xD", "or maybe X?"), Claude would grab the first actionable clause and execute, missing later clauses that contained the real intent.

How we corrected it

  • Ordered a full re-read of all 55 memory files, all frameworks, all hooks, all code entry points — ~3 hours of systematic re-absorption.
  • Distilled the entire operating model into one "back on the rails" memory file — 14 hard rules, 4 north-star principles, a behavioral checklist of drift signals to self-monitor.
  • Established the framework as: listen → ship → verify → report (NOT listen → analyze → propose → confirm → ship).
  • Added a "100% floor" rule: if the human reads 90%+ of Claude's output, Claude must read 100% of the human's input. Especially multi-part messages with playful framing.
  • Added a "humility clause": certainty is the tell for drift. When Claude feels certain, that's the signal to slow down and re-verify.

Proof the correction held

The very next task was a major visual port of the /swap page (Bloomberg-terminal style). Shipped in one shot across 2 days, 7 tweak batches, 32/32 e2e tests green at every checkpoint, zero contract violations. The discipline held because the framework was re-internalized, not because the task was easy.

Takeaway for the Anthropic team

The 4.7 model appears to have shifted toward more analytical/cautious behavior — more pre-analysis, more verification passes, longer preambles. For users with established workflows and mature project memory, this reads as "drift from framework" rather than "improvement." The correction pattern (systematic re-read + distilled behavioral contract + explicit drift signals) was effective but required the human to notice and intervene. A model-level awareness of "this project has an established operational rhythm, match it" would reduce friction on major version bumps.

Session context: S166-S171, YouBuyBitcoin.com project, ~55 behavioral memory files, 170+ sessions.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗