Feature request: allow hooks to suppress MCP tool call display in terminal
Problem
When MCP tools are called, Claude Code always renders a header line in the terminal like:
mcp-server - tool_name(MCP)(param: "...")
For MCP tools that perform frequent background operations (e.g., logging, indexing, telemetry), this creates significant visual noise. The tool call headers dominate the terminal and distract from the assistant's actual response.
Current state
suppressOutput: truein PostToolUse hooks only hides the hook script's own stdout in verbose modeupdatedMCPToolOutputreplaces the tool result content, but the invocation header line still renders- There is no documented way to hide the tool call header line itself
Proposed solution
Allow PostToolUse (or PreToolUse) hooks to return a field like suppressToolDisplay: true that prevents the tool call header AND result from rendering in the terminal. The tool still executes normally and Claude still receives the result — it's purely a display-layer suppression.
Alternatively, an MCP server could declare tools as silent: true in their tool schema, indicating they are background operations that should not render in the terminal.
Use case
MCP servers that provide background services (memory systems, observability, analytics, caching) may call tools dozens of times per session. Each call produces a visible header line that adds no value to the user — the assistant's natural language response already communicates what happened. Being able to mark these tools as silent would significantly improve the signal-to-noise ratio of Claude Code's terminal output.
[Created by 🦾]
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗