Stop hook evaluator API call fails with 400 when transcript references a deferred/dynamically-loaded MCP tool

Status Open
Maintainer reply None cached
Activity 0 comments · opened Jul 22, 2026

Description

When a session uses a deferred MCP tool (one loaded dynamically via ToolSearch, e.g.
mcp__claude-in-chrome__computer), the Stop hook's internal "hook evaluator" API call
fails with a 400 error:

Stop hook error: Hook evaluator API error: API Error: 400 Tool reference
'mcp__claude-in-chrome__computer' not found in available tools

Root cause (as far as I could trace it)

The Stop hook fires an internal API call that includes the session transcript. The
transcript contains a tool_use block referencing the deferred tool (loaded mid-session
via ToolSearch), but the tools array sent with that internal evaluator request doesn't
appear to include schemas for tools that were only loaded dynamically. Since the
Anthropic API requires every tool referenced in tool_use blocks to have a matching
entry in the request's tools array, the call is rejected.

What it's NOT caused by

Confirmed via full audit of local hook configuration:

  • No installed plugin (claude-mem, hookify, or custom project hooks) references this

tool name anywhere in its hook scripts or config.

  • The hookify plugin isn't even enabled in installed_plugins.json.
  • Project-level .claude/settings.json Stop hooks don't reference any chrome/browser tools.

Impact

Cosmetic/non-blocking — doesn't appear to interrupt actual session work, but surfaces a
confusing error message after any session that used Claude in Chrome (or presumably any
other deferred MCP tool).

Environment

  • Claude Code CLI, macOS (Darwin 25.5.0)
  • Plugins: claude-mem@thedotmack 13.11.0, code-simplifier@claude-plugins-official 1.0.0

View original on GitHub ↗