Bug: "Unhandled node type: string" before Bash tool permission prompt (2.1.118)

Resolved 💬 2 comments Opened Apr 23, 2026 by keplerka Closed Apr 23, 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?

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 $WIN style 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_

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗