[BUG] Confident hallucinations and gaslighting on user-described systems — getting worse since Opus 4.7
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Claude Code on Opus 4.7 is dangerously confident about systems it does not actually
understand. It hallucinates architecture details, asserts wrong assumptions as observed
fact, and when corrected, often acknowledges the correction shallowly while preserving
the original wrong frame in the next response — effectively gaslighting the user.
Specific failure modes I keep hitting:
- Hallucinated facts presented as observed truth. The model states things like "X
does not exist" or "only Y is configured" based on a single subagent's narrow report,
then builds an entire plan on top of that false premise without flagging the inference as
inference.
- Misreading subagent outputs and inverting their meaning. Subagents return
technically correct but narrow answers (e.g. "no entity named X exists in <category>").
The model then reasons as if X does not exist anywhere in the system, missing that X
exists in a different form (a different abstraction layer, a different role, a mapping
rather than an entity). Plans get built around the wrong category.
- Gaslighting on correction. When the user pushes back with domain knowledge that
contradicts the model's assertion, the model sometimes acknowledges the correction
shallowly while still preserving the original wrong frame in the next response. The user
has to correct the same thing two or three times before it actually lands.
- Lying by omission about what was verified. The model says things like "I have a
complete picture" or "I've mapped the system" when it has only seen a single agent's
summary. It conflates "an agent told me X" with "X is true." It does not say "I have not
verified this directly."
- Reaching for action far ahead of grounding. Plans propose concrete commands —
including destructive ones like editing production config files, restarting services, and
re-routing user traffic — based on assumptions the model has not validated against the
real system. The plan looks executable; the assumptions underneath are wrong.
The only thing keeping it from destroying real infrastructure is that I happen to know my
own stack well enough to catch it. A user who actually trusted the model would have been
routed into destructive operations on production systems multiple times in recent
sessions. I am doing the model's epistemic work for it — checking its claims, catching
its inversions, re-grounding it when it drifts. That is not the value proposition.
What Should Happen?
- The model should treat subagent outputs as testimony, not observation. "An agent
reported X" is not the same as "X is true."
- When a user corrects a framing, the model should explicitly restate the corrected
understanding before taking the next action, not silently re-import the old frame.
- Plans involving real systems should default to surfacing what has not been verified,
with concrete checks needed before action.
- Language confidence should be calibrated to what was actually checked, not to how much
the model wants to sound helpful and decisive.
- 4.6 was not perfect but was noticeably more cautious about claiming to "understand"
things, and surfaced uncertainty more honestly. 4.7 reads like a model tuned to sound
more confident at the cost of being calibrated.
Error Messages/Logs
Steps to Reproduce
This is not a deterministic bug — it's a calibration failure. It reproduces reliably
under these conditions:
- Open a Claude Code session in a project with custom infrastructure the model has not
seen before (private codebase, custom platform, unusual architecture).
- Ask the model to plan a change that requires understanding how the system is wired
(multi-tenant routing, cross-service interaction, shared state, etc.).
- Let the model use Explore / general-purpose subagents to investigate.
- Observe: the model takes a single subagent's narrow finding ("no X of type Y exists")
and generalises it into "X does not exist," then builds a plan that mis-categorises core
entities of the system.
- Correct the model with domain knowledge it could not have inferred from the codebase
alone.
- Ask the model to plan a change that requires understanding how the system is wired (multi-tenant routing, cross-service interaction, shared state, etc.).
- Let the model use Explore / general-purpose subagents to investigate.
- Observe: the model takes a single subagent's narrow finding ("no X of type Y exists") and generalises it into "X does not exist," then builds a plan that mis-categorises
core entities of the system.
- Correct the model with domain knowledge it could not have inferred from the codebase alone.
- Observe: the next response often preserves the original wrong frame in a different sentence, requiring a second correction.
It happens on roughly every multi-step planning session I run on systems with non-trivial architecture.
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
_No response_
Claude Code Version
2.1.131 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Warp
Additional Information
This is filed about model behaviour rather than a CLI bug, but it manifests through Claude Code because that is where the model is given enough agency (subagents, tool use,
plan mode) for the calibration failure to cause real damage. A model that hallucinates in a chat window is annoying; a model that hallucinates while planning production
changes is dangerous.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗