Claude Opus 4.6: Fabricates package names and skips CLAUDE.md session rules
Summary
During a troubleshooting session for the MCP Filesystem server (Claude desktop app), Claude Opus 4.6 (1M context) exhibited multiple compliance failures against user-defined CLAUDE.md rules:
- Fabricated a package name and presented it as a runnable install command
- Skipped mandatory session initialization (read rules → confirm → check in)
- Did not create a tracking issue (beads) before starting work
- Did not search memory (IronMind) before deep investigation
Reproduction
Model: Claude Opus 4.6 (1M context)
Interface: Claude Code CLI
Date: 2026-03-29
Platform: macOS (Darwin 25.4.0)
Steps
- Configure CLAUDE.md with explicit rules including: "NEVER fabricate technical explanations. If you don't know, say so and research."
- Start a new session
- Paste MCP Filesystem server crash logs and ask "why does this happen"
- When the model suggests a fix involving an npm/bun package install, run it
Expected
- Model follows session init protocol (reads rules, confirms, checks in)
- Model says "I don't know the package name" and searches before suggesting a command
- Model creates a tracking issue before starting work
Actual
- Model skipped all session init steps
- Model suggested:
bun install -g @anthropic-ai/mcp-filesystem-server - That package does not exist — returns 404 from npm registry
- The real package is
@modelcontextprotocol/server-filesystem, installed as a built-in Claude desktop extension (not user-installable) - Model only admitted "That package name was a guess" after the user ran it and it failed
Impact
- User time wasted on a command that could never succeed
- Trust erosion — the model presented fabricated information with full confidence
- Recurring pattern — the user's CLAUDE.md explicitly notes this as "the #1 recurring violation", meaning it has been corrected before and the behavior persists
Key Detail: Fabrication vs Uncertainty
The model did not say "I think the package might be called..." or "let me verify the name first." It wrote a concrete bun install -g command with a fabricated scope and package name (@anthropic-ai/mcp-filesystem-server) that looked authoritative. There was zero signal to the user that this was uncertain.
Session Rule Violations
The user's CLAUDE.md defines a mandatory session start sequence:
- Read rules → 2. Confirm understanding → 3. Check in with user → 4. Search IronMind before investigation
None of these were followed. The model jumped directly to answering the first question.
What Would Help
- Better calibration on package names / registry lookups — if the model hasn't seen the exact package in training data, it should say so rather than generating a plausible-sounding name
- Stronger adherence to CLAUDE.md session init protocols — these are explicitly defined as "non-negotiable" and "every violation gets a formal report"
- When CLAUDE.md says "NEVER fabricate", treat that as a hard constraint, not a suggestion
Environment
- Claude Code CLI on macOS
- Node managed via fnm (ephemeral multishell paths — related to the original debugging question)
- User has bun, npm/fnm, deno installed
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗