[BUG] PostToolUse hooks no longer fire for MCP tools

Status Open
Reported on v2.1.193
Maintainer reply None cached
Activity 0 comments · opened Oct 1, 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?

PostToolUse hooks don't fire for MCP tools anymore. Built in tools (Bash, Read, Write, ToolSearch, etc) still fire them fine. The hook is registered with an empty matcher. The MCP tools run and return results normally but the hook never runs.

This breaks anything that uses PostToolUse to detect that an approved permission prompt has resolved. Without it, the state stays stuck until the next tool call or Stop.

What Should Happen?

PostToolUse fires for MCP tools, like it does for built-in tools and like it did before

Error Messages/Logs

MCP PreToolUse vs PostToolUse hook calls per version, from my hook logs:

2.1.193 - 2.1.224   206 pre / 197 post
2.1.251              14 pre /   1 post
2.1.267              35 pre /   2 post
2.1.270 - 2.1.286   320 pre /   0 post

Steps to Reproduce

  1. Register PreToolUse and PostToolUse command hooks with matcher "" that log their stdin
  2. Call any MCP tool (seen with claude-in-chrome and context-mode)
  3. PreToolUse logs and PostToolUse doesn't, while the same session's Bash calls log both

Claude Model

Opus

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.224

Claude Code Version

2.1.286

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗