What
Before Claude Code runs a shell command without asking you, a safety checker reads the command to decide whether it can be approved automatically. Several parts of that checker changed:
- Relative-path checks now also catch values that start with a tracked variable. They also catch values that contain a relative path after a leading substitution. A relative path is one that depends on the folder you are in, and a substitution is a
$(...)part whose output is pasted into the command. This affects the checks on rc files,xargs,env,vimand Java class paths. - A new parser option,
relativeNamedValues, controls this variable tracking. Setting it tofalsemakes the checker ignore it. - A new parser option,
substitutionHeredocs, is passed down to the parsers that read nested substitutions. A heredoc is a block of text fed into a command inline. The option is on by default. - Commands that name zsh's
histcharsare now flagged with the reason "it names zsh's histchars, which can make zsh run lines that look like comments".
Why
Fewer commands of these kinds pass the automatic check. Some Bash commands that used to run without asking may now show a permission prompt or be refused, including commands that set zsh histchars.