[BUG] `claude mcp serve` Bash tool output is invisible in the MCP client's transcript
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?
When one Claude Code instance calls another via claude mcp serve and invokes the Bash tool, the result is completely invisible in the client's transcript — not collapsed, not truncated, just empty. Verbose mode (Ctrl+O) does not change this. The model receives the result correctly, so this is purely a client-side rendering bug.
The tool-call header line renders normally, but the result line below it is blank.
Both ends are first-party Claude Code, so this reproduces without any third-party MCP server.
What Should Happen?
The result of the Bash command should render under the tool-call line, the same way local Bash tool output renders.
Error Messages/Logs
No error is shown. The result line under the tool-call header is simply empty. Verbatim transcript from the failing case (user prompt → tool call → model's reply, with no result rendered between them):
❯ you can try run whoami on claude code bowser
● claude-code-bowser - Bash (MCP)(command: "whoami", description: "Print current username")
02:17 PM claude-opus-4-7
● The result came back to me as {"stdout":"hsass","stderr":"","interrupted":false,
"isImage":false,"noOutputExpected":false} — i.e., the model is receiving it fine.
Note the gap between the tool-call line and the model's next message — that gap is where the Bash result should render but doesn't.
The model does receive the result — visible in the JSON the model itself quoted back in its reply:
{"stdout":"hsass","stderr":"","interrupted":false,"isImage":false,"noOutputExpected":false}
So the payload arrives end-to-end; the renderer just doesn't draw it.
Steps to Reproduce
This reproduces with Claude Code talking to itself locally — no second host needed.
- Register a
claude mcp serveinstance as an MCP server in your client:
````
claude mcp add self -- claude mcp serve
- Start Claude Code:
````
claude
- Verify the
selfserver is connected:
````
/mcp
- Ask Claude to run a shell command via the MCP-exposed Bash tool, e.g.:
``whoami
use the self Bash tool to run ``
- Observe the transcript. Optionally toggle verbose with
Ctrl+O.
Expected: the username prints under the tool-call line.
Actual: the line is empty in both normal and verbose modes.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.131 (Claude Code)
Platform
Anthropic API
Operating System
Ubuntu/Debian Linux
Terminal/Shell
Other
Additional Information
Terminal is bash.
This is important because I cannot properly observe what the AI is doing.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗