`Unhandled node type: pipeline` when piping a heredoc into a command

Resolved 💬 3 comments Opened May 4, 2026 by howie Closed May 8, 2026

Summary

Piping a heredoc directly into a command (cat <<'EOF' | cmd) triggers
Unhandled node type: pipeline on the confirmation prompt. The semantically equivalent
redirect form (cmd < file) does not trigger.

Reproduction

# Triggers "Unhandled node type: pipeline":
cat <<'EOF' | cat
hello world
EOF
# Workaround -- write to a file first, then redirect (no pipeline node):
printf 'hello world\n' > /tmp/repro_input.txt
cat < /tmp/repro_input.txt

Expected: the heredoc-pipe pattern is a common shell idiom; it should parse consistently
with the redirect form, or at least produce a specific prompt that describes the unsupported
construct.

Observed: cat <<'EOF' | cmd triggers Unhandled node type: pipeline. The redirect form
(cmd < file) passes without error.

Notes

Related: #47701 (closed, framed around file_redirect). That report mentions several missing
node type handlers. The pipeline failure from heredoc-pipe appears to be a distinct case: the
parser fails at the pipeline node rather than at a redirect node, and the < file workaround
works, suggesting the two code paths are separate.

Environment

  • claude-code version: 2.1.118
  • OS: macOS 26.4.1
  • Shell: /bin/zsh
  • Notes: heavy use of git worktrees and multiple language toolchains

View original on GitHub ↗

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