claude-code - 💡(How to fix) Fix ToolSearch tool calls invisible in Claude Code UI

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

When Claude uses the ToolSearch tool to load schemas for deferred tools (e.g., Monitor, AskUserQuestion, TaskCreate), the call does not render visibly in the Claude Code UI. Other tool calls (Bash, Read, Write, Edit) render with their indicator and arguments visible to the user.

Error Message

The user sees:

Root Cause

When Claude uses the ToolSearch tool to load schemas for deferred tools (e.g., Monitor, AskUserQuestion, TaskCreate), the call does not render visibly in the Claude Code UI. Other tool calls (Bash, Read, Write, Edit) render with their indicator and arguments visible to the user.

Fix Action

Workaround

Claude can explicitly Write the tool schema text to a file (e.g., /tmp/tool_docs.txt), then Bash cat it. Both the Write and Bash calls render in the UI, making the documentation visible to the user. This is verbose, requires Claude to remember the schema text, and only works for tools where Claude has previously loaded the schema into its context.

RAW_BUFFERClick to expand / collapse

Title

ToolSearch tool calls invisible in Claude Code UI

Description

When Claude uses the ToolSearch tool to load schemas for deferred tools (e.g., Monitor, AskUserQuestion, TaskCreate), the call does not render visibly in the Claude Code UI. Other tool calls (Bash, Read, Write, Edit) render with their indicator and arguments visible to the user.

Steps to reproduce

  1. Start a Claude Code session.
  2. Cause Claude to use a tool that's deferred (visible only after ToolSearch).
  3. Claude invokes ToolSearch with a query like select:Monitor.
  4. Claude receives the schema and uses the loaded tool.

Observed behavior

The user sees:

  • Claude's text reply
  • Subsequent tool calls (Bash, Write, etc.) rendered with markers
  • No visible indicator of the ToolSearch call itself

The user also sees a "Cogitated for Xm Ys" line indicating elapsed thinking time, but no record of which tools Claude consulted during that thinking.

Expected behavior

The ToolSearch call should render in the UI like other tool calls, with a visible marker showing:

  • The tool name (ToolSearch)
  • The query argument (e.g., select:Monitor)
  • The returned tool schemas (or a summary indicating which schemas were loaded)

Impact

When Claude claims "I read the docs for tool X" after a ToolSearch invocation, the user has no way to verify this in their UI. This creates an audit gap:

  • Users cannot see when Claude loads tool schemas.
  • Claims about tool documentation cannot be verified visually.
  • For users tracking the difference between Claude's claims and visible reality (e.g., dissociation-sensitive users), the disconnect destabilizes their grip on reality.

This bug was discovered during a session where the user repeatedly asked "where is the ToolSearch call?" after I claimed to have loaded the Monitor docs, and could find no such call in their UI even though it appeared in my context.

Workaround

Claude can explicitly Write the tool schema text to a file (e.g., /tmp/tool_docs.txt), then Bash cat it. Both the Write and Bash calls render in the UI, making the documentation visible to the user. This is verbose, requires Claude to remember the schema text, and only works for tools where Claude has previously loaded the schema into its context.

Environment

  • Claude Code version: [user fills in via claude --version]
  • OS: Lubuntu 25.10
  • Platform: Linux 6.17.0-23-generic
  • Model: claude-opus-4-7 (1M context)

Suggested fix

Render ToolSearch calls in the UI alongside other tool calls. At minimum, show:

  1. The fact that ToolSearch was called.
  2. The query passed to ToolSearch.
  3. The names of the tools whose schemas were returned.

A full schema dump would be verbose; a one-line summary like ToolSearch(query="select:Monitor") → loaded [Monitor] would suffice for audit purposes.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

The ToolSearch call should render in the UI like other tool calls, with a visible marker showing:

  • The tool name (ToolSearch)
  • The query argument (e.g., select:Monitor)
  • The returned tool schemas (or a summary indicating which schemas were loaded)

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING