Add --eager-tools flag to disable deferred tool loading

Resolved 💬 5 comments Opened Mar 25, 2026 by provencher Closed May 6, 2026

Feature Request

Add a CLI flag (e.g., --eager-tools) to preload all tool schemas upfront instead of using deferred/lazy loading via ToolSearch.

Problem

Since deferred tool loading became the default, every conversation requires at least one extra round-trip through ToolSearch before any real work can happen. This affects all tools — built-in ones like Bash, Read, Edit, etc., not just MCP tools. Flags like --strict-mcp-config don't help since built-in tools are also deferred.

MCP reliability is the biggest concern

When using --strict-mcp-config, users are deliberately curating a specific set of MCP servers and tools for their workflow. In many cases, MCP tools are intended to replace built-in tools (e.g., a custom apply_edits replacing Edit, or a file_search replacing Grep/Glob). These tools need to be reliably available from the start of every session — not hidden behind a lazy-loading mechanism that may fail, add latency, or cause the model to fall back to built-in tools it shouldn't be using.

If a user has gone through the effort of configuring --strict-mcp-config to control exactly which tools are available, those tools should be treated as first-class and loaded eagerly. The current behavior undermines the purpose of strict mode by making even explicitly configured MCP tools subject to deferred loading and its associated failure modes.

Other issues

  • Added latency: Extra round-trip on first tool use in every session
  • Reliability concerns: When ToolSearch fails or blocks, the entire session is degraded (see #30516)
  • Hook conflicts: Deferred loading interacts poorly with PreToolUse hooks (#33073)
  • Print mode hangs: Deferred tools cause intermittent deadlocks in -p mode (#35262)
  • Noise: "Tool loaded" messages clutter the output (#31596)

Proposed Solution

Add --eager-tools (or --no-deferred-tools) flag that preloads all tool schemas into the system prompt at session start, restoring the previous behavior. The tradeoff — slightly larger initial prompt vs. eliminating the extra round-trip and associated failure modes — should be a user choice.

At minimum, when --strict-mcp-config is used, all tools from those configured servers should be loaded eagerly by default — the user has already declared these are the tools they need.

Could also be exposed as a setting (e.g., "eagerToolLoading": true) for users who always want this behavior.

Who This Helps

  • Users relying on MCP tools as replacements for built-in tools (strict MCP workflows)
  • Power users who use standard tools every session anyway
  • CI/automation pipelines using --print mode where reliability matters
  • Users with custom hooks that conflict with deferred loading
  • Anyone who finds the extra latency and "Tool loaded" messages disruptive

View original on GitHub ↗

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