[BUG] "Tool access" setting has no effect — MCP tools always load eagerly in Claude Code Desktop
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?
The "Tool access" setting (Settings → Features → Tool access) has no effect on how MCP tools are loaded in Claude Desktop.
Two problems:
- Toggling the setting changes nothing. Switching between "Load tools when needed" and "Tools already loaded", then starting a new conversation, produces identical
/contextoutput. MCP
tool schemas are always loaded eagerly regardless of the selected option.
- Desktop differs from CLI. Claude Code CLI correctly defers MCP tool schemas (loaded on-demand via ToolSearch, 0 tokens at session start). Desktop always loads them eagerly — ~75k tokens
for 155 tools in my setup.
This causes Desktop sessions to have 4× higher baselines than CLI (~92k vs ~22k). For agentic tasks with many tool iterations, the overhead compounds across every turn via the prompt cache.
What Should Happen?
- Toggling between "Load tools when needed" and "Tools already loaded" should produce different
/contextoutput in new conversations.
- When "Load tools when needed" is selected, Desktop should defer MCP tool schemas the same way CLI does — the
/contextoutput should show "MCP tools · /mcp (loaded on-demand)" with ~0
tokens, matching CLI behavior.
Error Messages/Logs
Steps to Reproduce
Setup: macOS, Claude Desktop, multiple MCP connectors enabled (e.g. Linear, Datadog, Slack).
Test 1 — Setting toggle has no effect:
- Go to Settings → Capabilities → Tool access → select "Load tools when needed"
- Start a new conversation, type "say hi", wait for response
- Run /context — note the "MCP tools" line
- Go to Settings → Capabilities → Tool access → switch to "Tools already loaded"
- Restart Claude Desktop
- Start a NEW conversation, type "say hi", wait for response
- Run /context — "MCP tools" line is identical to step 3
<img width="678" height="994" alt="Load tools when needed" src="https://github.com/user-attachments/assets/b4b90a66-a973-4085-b0b0-572be691277f" />
<img width="662" height="988" alt="Tools already loaded" src="https://github.com/user-attachments/assets/f4defca0-ee8f-48d7-8619-70db6089b380" />
Test 2 — Desktop vs CLI comparison:
- Open Claude Code CLI in the same directory:
claude - Type "say hi", wait for response
- Run /context — observe "MCP tools · /mcp (loaded on-demand)" with 0 tokens
<img width="717" height="474" alt="CLI mcp tools" src="https://github.com/user-attachments/assets/0a9b23d3-275f-4a88-a9be-0d8f459a564b" />
Results:
- Setting A ("Load tools when needed"): MCP tools = 33.6k
- Setting B ("Tools already loaded"): MCP tools = 33.6k — identical
- CLI (same machine, same connectors): MCP tools = 0 (on-demand)
Claude Model
Not sure / Multiple models
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.109 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Other
Additional Information
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗