You'll noticeTier: how much it should matter to you
1Useful: my rating, 1 to 5
1Signal: worth watching, 1 to 5
Bash SafetyArea: what it touches
ImprovementsKind: in v2.1.315,
ImprovementsSection of the release
What
Before running a shell command, Claude Code parses it, meaning it works out the command's structure, to check permissions. It now refuses to parse two kinds of command:
a heredoc opened inside $( ... ) or <( ... ) whose closing ) comes on the same line, before the heredoc's text
a $( ... ) or <( ... ) that runs on past the end of a line that opened its own heredoc
A heredoc is a block of text fed into a command, and $( ... ) or <( ... ) runs one command inside another. This handling is part of an option that is on by default.
Why
These layouts could be read one way by Claude Code's permission check and another way by the shell. Refusing them stops a command from passing the check under a misreading.