[BUG] Claude Code 2.1.69 breaks all MCP tool calls with defer_loading + cache_control conflict
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?
After upgrading to Claude Code 2.1.69, all prompts fail with a 400 API error when multiple MCP servers are configured (~50+ tools total). The error indicates that defer_loading=true and cache_control cannot both be set on the same tool definition.
This is a complete blocker — no prompts can be processed at all. The only workaround is downgrading to 2.1.68 or setting ENABLE_TOOL_SEARCH=false.
Related: #30920
What Should Happen?
Claude Code should not set both defer_loading=true and cache_control on the same MCP tool. These flags should be mutually exclusive. MCP-heavy configurations should work out of the box without environment variable workarounds.
Error Messages/Logs
API Error: 400
{"type":"error","error":{"type":"invalid_request_error",
"message":"Tool 'mcp__<server>__<tool_name>' cannot have both
defer_loading=true and cache_control set. Tools with defer_loading
cannot use prompt caching."}}
This error occurs on every single API request — not just MCP tool invocations.
Steps to Reproduce
- Configure 3+ MCP servers (e.g., SSE-based and stdio-based servers) with a combined total of ~50+ tools
- Upgrade to Claude Code 2.1.69
- Launch
claudeand enter any prompt - Every request fails with the
defer_loading+cache_controlconflict error - Switching models (
/model opus,/model sonnet) does not help - The error persists across sessions
Workarounds
- Downgrade to 2.1.68:
npm install -g @anthropic-ai/claude-code@2.1.68 - Disable tool search:
ENABLE_TOOL_SEARCH=false claudeor add"ENABLE_TOOL_SEARCH": "false"tosettings.jsonenv
Additional Context
- The
autoUpdatesProtectedForNativeflag in~/.claude.jsonaggressively re-downloads 2.1.69 even after manual downgrade, making it difficult to stay on 2.1.68 - Disabling
autoUpdatesalone is insufficient —autoUpdatesProtectedForNativemust also be set tofalse - Introducing breaking changes to MCP tool handling without regression testing across multi-server configurations is disruptive for users who rely on MCP integrations
Claude Model
Opus
Is this a regression?
Yes — 2.1.68 works correctly with the same MCP configuration
Last Working Version
2.1.68
Claude Code Version
2.1.69 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app / zsh
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗