Bug: "Unhandled node type: string" before Bash tool permission prompt (2.1.118)
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?
Bug: "Unhandled node type: string" before Bash tool permission prompt
Claude Code version: 2.1.118
OS: Windows 11 Enterprise 10.0.26200
Shell: Git Bash (Windows), MSYS2
Terminal: Windows Terminal (verifying — also reproduces in standalone mintty)
Description
The literal string Unhandled node type: string is rendered between the Bash tool-call description and the "Do you want to proceed?" permission prompt. It appears to be emitted by the CLI's Markdown/AST renderer when a node type has no handler registered.
The error is cosmetic, not blocking — selecting Yes/Enter still executes the tool call correctly. But it shows up on almost every Bash tool call with even moderately complex commands, making the prompt visually noisy.
Reproduction
Consistently reproduces when the Bash tool is invoked with:
- Multi-line commands (
\n-separated statements in a single Bash invocation) - Command substitution:
$(…)or backticks - Shell redirects:
>,>>,2>&1 for-loops with inline body- Chained
&&/;with quoted arguments containing$WINstyle variables
Example that reproduces reliably
Tool call:
// description: "Redeploy with correct arg passing"
// command: multi-line bash with $(cygpath …), 2>&1, for-loop, printf
The rendered prompt shows:
… (command preview)
Redeploy with correct arg passing
Unhandled node type: string
Do you want to proceed?
> 1. Yes
2. No
Screenshot: (attach if filing via web)
Expected
No spurious Unhandled node type: string line in the confirmation prompt.
Actual
The line appears roughly in the position where a rendered AST node would be formatted. Suggests the renderer's dispatcher hits a default branch for an AST node of type string without a formatter.
Impact
- Cosmetic noise in every tool-call confirmation
- Distracts from the actual command preview
- Appears to have regressed in a recent 2.1.x release (user reports "seit neuestem")
Workaround
None that we've found. Proceeding (Yes/Enter) works; no setting to suppress the renderer output in the prompt is documented.
Environment
claude --version: 2.1.118- Platform: win32
- Invocation: via Claude Code CLI (not agent API)
- Shell: Git Bash / MSYS2
Notes for maintainers
The renderer appears to format the Bash tool's description or command parameter (or a combination). Logging the offending node path would pinpoint the unhandled type quickly.
What Should Happen?
The message "invalid node tpype: string" should not appear.
Error Messages/Logs
Steps to Reproduce
<img width="706" height="509" alt="Image" src="https://github.com/user-attachments/assets/461ebbf0-1330-4652-b829-3cbe2204e17a" />
Claude Model
Opus
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.118
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
PowerShell
Additional Information
_No response_
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗