Desktop-hosted sessions: subagents receive none of the tools of a user MCP server named `memory` (misclassified as account memory server, since 2.1.284)

Status Fixed / completed
Reported on v2.1.284
Maintainer reply None cached
Activity 1 comment · opened Sep 30, 2026 · closed Oct 12, 2026

Summary

In Claude Code sessions hosted by Claude Desktop (Code tab), subagents receive none of the tools of a user-configured MCP server named memory (e.g. @modelcontextprotocol/server-memory). The main agent can list and call them. Regression since 2.1.284; worked through 2.1.281.

Environment

  • Claude Code 2.1.284 and 2.1.286, hosted by Claude Desktop (macOS), Code tab
  • User stdio MCP server named memory (@modelcontextprotocol/server-memory), configured both in claude_desktop_config.json and in the Claude Code user config

Behavior

  • Main agent: ToolSearch select:mcp__memory__search_nodes → found, calls succeed.
  • Subagent (general-purpose, or custom agents that list the tools explicitly in tools:, with matching permissions.allow): ToolSearch select:mcp__memory__search_nodes → "No matching deferred tools found". All other user MCP servers are passed through normally.
  • Same machine, same config, terminal CLI session (not Desktop-hosted): subagent sees and calls the tools fine.

Likely cause (from reading the bundled code)

Desktop passes its locally configured servers into the session as SDK servers. A server with name === "memory", dynamic scope and SDK type is then classified as the account memory server, and the subagent tool filter only keeps memory_read, memory_list and memory_search. A third-party server that happens to be named memory therefore silently loses all its tools in subagents. No warning is shown.

Repro

  1. Configure a stdio MCP server named memory (e.g. npx @modelcontextprotocol/server-memory) in Claude Desktop and in Claude Code.
  2. Open a Claude Code session in the Claude Desktop Code tab.
  3. Spawn a general-purpose subagent and have it run ToolSearch select:mcp__memory__search_nodes → not found.
  4. Do the same in a terminal claude session → found.

Workaround: rename the server in claude_desktop_config.json (e.g. knowledge-graph).

Expected

Identify the account memory server by identity (server info / URL / CLI-owned), not by the bare name memory — or at least log a visible warning when tools are withheld from subagents.

Possibly related

#25081, #30280, #79728 (not verified whether any is the same root cause)

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗