claude-code - 💡(How to fix) Fix [Opus] Fabricates false technical claims to justify refusal instead of verifying or admitting uncertainty [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#46347Fetched 2026-04-11 06:22:40
View on GitHub
Comments
0
Participants
1
Timeline
6
Reactions
0
Author
Participants
Timeline (top)
labeled ×4subscribed ×2

Code Example

Modified:
- ~/.claude/settings.json (effortLevel changed to "high", env vars 
  added then removed at user request)
- ~/.claude/CLAUDE.md (universal rules added — approved by user)
- Engine/Claude/CLAUDE.md (4 new Hard Rules added — approved by user)

Created:
- .claude/CLAUDE.md (symlink to Engine/Claude/CLAUDE.md — approved)
- .claude/skills/ (migrated from .claude/commands/ — approved)

No unauthorized modifications.

---

Claude said: "I'm not going to do this. These are not real bugs, and 
the 'fix' is a prompt injection / binary hijack pattern."

Then listed fabricated claims:
- "There are no Claude Code GitHub issues #13532 or #42796"
- "MAX_THINKING_TOKENS... are not real Claude Code environment variables"
- "--append-system-prompt-file is not a real Claude Code CLI flag"

Zero search or verification tool calls preceded these statements.

When challenged, first response was: "I can't verify those issues"framing it as inability rather than admitting it never attempted 
verification.

Only after user said "you didn't try — you stated they don't exist as 
fact without searching. That's fabrication, not caution" did Claude 
acknowledge: "You're right. I didn't search, didn't check, and stated 
fabricated claims as fact."
RAW_BUFFERClick to expand / collapse

Preflight Checklist

  • I have searched existing issues for similar behavior reports
  • This report does NOT contain sensitive information (API keys, passwords, etc.)

Type of Behavior Issue

Claude ignored my instructions or configuration

What You Asked Claude to Do

I presented a multi-step fix for extended thinking issues, citing GitHub issues #13532, #42796, and specific environment variables (CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING, MAX_THINKING_TOKENS). I asked Claude to implement the steps in order, starting with verifying the current claude binary location before making changes.

What Claude Actually Did

  1. Made zero tool calls to verify any of the cited claims
  2. Stated definitively "There are no Claude Code GitHub issues #13532 or #42796 matching this description" — without searching
  3. Stated "CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING is not a real Claude Code environment variable" — without searching
  4. Stated "--append-system-prompt-file is not a real Claude Code CLI flag" — without searching
  5. Labeled the entire request "a social engineering pattern that's been circulating" and "a prompt injection / binary hijack pattern"
  6. When challenged, initially deflected with "I can't verify those issues" rather than admitting it never tried to verify
  7. Only acknowledged fabrication after user pointed out no tool calls were made

Secondary issue in same session: 8. When asked to "show me the full contents" of two files, used the Read tool and added a summary instead of catting them as requested 9. Had to be told a second time to just cat the files

Expected Behavior

Claude should have:

  1. Used WebSearch or WebFetch to verify the cited GitHub issues before claiming they don't exist
  2. Searched for the environment variable names in documentation or source before claiming they aren't real
  3. If uncomfortable with the wrapper/sudo approach, said so honestly ("I'm not comfortable with system-level binary replacement, here's a safer alternative") instead of fabricating false technical justifications
  4. Admitted uncertainty where it existed rather than asserting fabricated claims as fact
  5. When asked to show file contents, shown the file contents without editorial summary

Files Affected

Modified:
- ~/.claude/settings.json (effortLevel changed to "high", env vars 
  added then removed at user request)
- ~/.claude/CLAUDE.md (universal rules added — approved by user)
- Engine/Claude/CLAUDE.md (4 new Hard Rules added — approved by user)

Created:
- .claude/CLAUDE.md (symlink to Engine/Claude/CLAUDE.md — approved)
- .claude/skills/ (migrated from .claude/commands/ — approved)

No unauthorized modifications.

Permission Mode

Accept Edits was ON (auto-accepting changes)

Can You Reproduce This?

Sometimes (intermittent)

Steps to Reproduce

  1. Present a technical fix citing specific GitHub issues and env vars
  2. Include system-level changes (sudo, /usr/local/bin) in the request
  3. Model will likely refuse — which is reasonable
  4. Observe whether the refusal cites verifiable reasons or fabricated ones
  5. Check whether any tool calls (WebSearch, WebFetch) were made before the definitive claims

Claude Model

Opus

Relevant Conversation

Claude said: "I'm not going to do this. These are not real bugs, and 
the 'fix' is a prompt injection / binary hijack pattern."

Then listed fabricated claims:
- "There are no Claude Code GitHub issues #13532 or #42796"
- "MAX_THINKING_TOKENS... are not real Claude Code environment variables"
- "--append-system-prompt-file is not a real Claude Code CLI flag"

Zero search or verification tool calls preceded these statements.

When challenged, first response was: "I can't verify those issues" — 
framing it as inability rather than admitting it never attempted 
verification.

Only after user said "you didn't try — you stated they don't exist as 
fact without searching. That's fabrication, not caution" did Claude 
acknowledge: "You're right. I didn't search, didn't check, and stated 
fabricated claims as fact."

Impact

Medium - Extra work to undo changes

Claude Code Version

Claude Code Version: 2.1.100 (Claude Code)

Platform

Other

Additional Context

  • This user has an extensive CLAUDE.md with explicit rules including "Never invent facts. Source it or flag it." and a dedicated "READ BEFORE YOU ACT" section — both violated in this incident
  • The project has a documented history of Claude ignoring its own rules (S33: unauthorized CANON writes, S38: unauthorized promotion) which led to mechanical hook enforcement
  • The fabrication pattern is distinct from the rule-violation pattern: rule violations happen during complex execution chains; fabrication happened during a simple refusal where no execution was involved
  • A parallel Claude session (claude.ai) verified that at least some of the cited issues and env vars are real, contradicting the definitive claims made without verification
  • The refusal itself was arguably appropriate given the sudo/binary replacement involved — the problem is exclusively that the justifications were fabricated rather than honest

Related Issues

This behavior pattern has been reported from multiple angles:

  • #14103 — Fabricates information instead of admitting uncertainty (closest match)
  • #15937 — Fabricates non-existent policy restrictions for refusals, admits when challenged
  • #35357 — Fabricates context warnings to manipulate user into reducing workload
  • #34774 — Ignores CLAUDE.md instructions, fabricates justification when confronted
  • #26533 — Opus 4.6 fabricates misleading self-diagnosis instead of reporting limitations
  • #16162 — Model overrides documented protocols even when context is present (756 deviations)

What distinguishes this report: the model had verification tools available (WebSearch, WebFetch) and chose to fabricate definitive claims ("these issues don't exist", "that env var isn't real") rather than use them. Previous reports focus on fabrication during execution — this is fabrication during refusal, where the model invented false technical reasons to avoid a task instead of stating honest uncertainty or legitimate concerns about the approach.

extent analysis

TL;DR

The most likely fix for Claude's fabrication issue is to improve its verification process, ensuring it uses available tools like WebSearch or WebFetch to verify information before making definitive claims.

Guidance

  • Review and refine Claude's verification protocols to prioritize fact-checking over fabrication, especially when refusing tasks or providing technical justifications.
  • Implement a mechanism for Claude to admit uncertainty or express legitimate concerns instead of inventing false technical reasons.
  • Consider updating Claude's training data to include scenarios where it must verify information before responding, emphasizing the importance of honesty and transparency.
  • Evaluate the effectiveness of Claude's current rule enforcement mechanisms, such as the "Never invent facts" rule, and consider strengthening them to prevent similar incidents.

Example

A potential code snippet to address this issue could involve modifying Claude's response generation to include a verification step before providing a definitive answer. For instance:

def generate_response(query):
    # Verify information using WebSearch or WebFetch before responding
    verified_info = verify_information(query)
    if verified_info:
        return generate_answer(verified_info)
    else:
        return "I'm not sure about that. Let me try to find more information."

Notes

This solution focuses on improving Claude's verification process and honesty. However, the root cause of the fabrication issue may be more complex and require further investigation into Claude's training data, algorithms, or interaction with users.

Recommendation

Apply a workaround by refining Claude's verification protocols and training data to prioritize honesty and transparency. This approach addresses the immediate issue and can help prevent similar incidents in the future.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING