What
Before running a shell command, Claude Code reads it to decide whether it can be allowed without asking you. That reading is now stricter. These forms are treated as too complex to check, so you are asked first:
$followed by a non-ASCII character, such as an accented letter$followed by one of#^=~+and then non-ASCII text, and${#é...}forms- the same cases inside
[[ ]]pattern tests - redirects that assign a file descriptor (a numbered input or output channel) to a variable
- a variable set in front of a declaration inside a branch or loop
The reason shown for the first cases is "A $ followed by non-ASCII text in this command can't be checked before it runs".
Why
Some commands that used to run without asking will now prompt you. Those forms could hide what a command really does, so the check no longer passes them.