[BUG] Claude Code 2.1.69 breaks all MCP tool calls with defer_loading + cache_control conflict

Resolved 💬 2 comments Opened Mar 5, 2026 by mehulparmariitr Closed Mar 13, 2026

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

  1. Configure 3+ MCP servers (e.g., SSE-based and stdio-based servers) with a combined total of ~50+ tools
  2. Upgrade to Claude Code 2.1.69
  3. Launch claude and enter any prompt
  4. Every request fails with the defer_loading + cache_control conflict error
  5. Switching models (/model opus, /model sonnet) does not help
  6. 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 claude or add "ENABLE_TOOL_SEARCH": "false" to settings.json env

Additional Context

  • The autoUpdatesProtectedForNative flag in ~/.claude.json aggressively re-downloads 2.1.69 even after manual downgrade, making it difficult to stay on 2.1.68
  • Disabling autoUpdates alone is insufficient — autoUpdatesProtectedForNative must also be set to false
  • 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

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗