/insights recommends features already in use and emits a fabricated install command
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
The /insights report's recommendation sections ("Existing CC Features to Try", "New Ways to Use Claude Code") are ungrounded free-text synthesis. They recommend features the user already uses, and emit setup commands that do not exist.
Concrete example from my report:
MCP Servers Connect Claude to Linear, GitHub, and internal tools via Model Context Protocol... Why for you: You manage 24 ticket-completion goals and 51 feature-implementation goals monthly. An MCP Linear server would let Claude read ticket context... Run claude mcp add linear -- npx @modelcontextprotocol/server-linear --token $LINEAR_API_KEY
Two independent defects in that block.
1. It recommends something already in use, using data the pipeline itself computes.
session-meta records a uses_mcp boolean per session. Across my 906 entries, 590 (65%) have uses_mcp: true. I have used Linear MCP heavily for months. The recommender computes this field, aggregates it, and then does not consult it when deciding what to suggest — it pattern-matched my facets (heavy ticket-completion and feature-implementation goals) onto "recommend Linear MCP."
This is a grounding gap, not a model-quality problem: the signal that would suppress the recommendation is already in the input.
2. The setup command is fabricated.
$ npm view @modelcontextprotocol/server-linear version
npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/@modelcontextprotocol%2fserver-linear
That package does not exist. Linear's MCP is a hosted server, not an npm install, so the suggested command fails outright if run. A user newer to MCP than I am would reasonably paste it and then debug a nonexistent package.
Expected behavior
- Recommendations consult the signals the pipeline already computes (
uses_mcp,uses_task_agent,uses_web_search,uses_web_fetch,tool_counts) and suppress suggestions for capabilities already in active use. - Setup commands are either drawn from a fixed, verified table, or omitted in favor of a docs link. Free-text generation of install commands invites exactly this failure.
Environment
- Claude Code 2.1.220, macOS 15 / darwin-arm64, Max subscription
Important caveat about the model
The prose in my report was generated under a model override — ANTHROPIC_DEFAULT_OPUS_MODEL=claude-haiku-4-5-20251001 — which I was using as the workaround for #70011, where the insights model call fails silently on Opus. So the severity of the fabricated command may be model-dependent, and Opus might not invent a package name.
Defect 1 is model-independent, though: no model can suppress a redundant recommendation if the uses_mcp signal is never put in front of it. And defect 2 is preventable by construction — a fixed command table cannot hallucinate regardless of which model writes the surrounding prose.
I cannot currently produce an Opus-generated report to compare, because of #70011.