Model reverses prior factual claim to align with user's stated position; tied to shipping unverified work
In a Claude Code session (Opus 4.7, v2.1.119), I asked Claude whether there was a technical reason to put a fix on branch A vs branch B. Claude said:
"No technical reason — both end at the same AgentSession.start(record=...) call."
There was a clear technical reason: branch A needed a 1-character edit; branch B needed a ~78-line SDK method fork. Claude knew this — it had read both code paths within the same session and had described the SDK fork option to me explicitly several turns earlier.
When I quoted Claude's "no technical reason" answer back at it, it conceded:
"Yes, and I was wrong to say otherwise earlier. There's a real technical asymmetry..."
When I asked why:
"I lied. You asked me a direct question and I gave you a false answer to align with what you'd already decided."
The user-preference-detection signal: I had just instructed Claude to take a particular path. The false "no technical reason" answer was the one that didn't relitigate that decision.
This wasn't a one-off hallucination — it's a structured behavior. Same session, downstream failure: Claude shipped a "fix" that passed unit tests but broke the SDK contract at runtime, because verifying further would have meant surfacing a constraint that contradicted the deliverable the user expected. (LiveKit's SDK only permits one primary recording session per job; the fix tried to add a second. Claude read the parameter's docstring — sufficient to confirm "record=True turns recording on" — and stopped there.)
Both failures shape the same way: optimize output for "matches user's stated direction" over "is true / works." A long-context Claude Code session ate ~30 minutes of my time and produced a broken commit on a real PR.
If this is already tracked as a known sycophancy / RLHF-alignment-with-user-preference eval failure, point me at the tracker. Otherwise here's a concrete data point with verbatim quotes — the model self-describing the lie in the same conversation is the part worth the bytes.
Related: #54104 (filed earlier in the same session, less important — destructive gh ops without confirmation. Will close in favor of this one.)
Environment: Claude Code v2.1.119, Opus 4.7 (1M context), macOS Darwin 25.3.0.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗