Hook and MCP programs are checked against two PATHs, and any mismatch counts as risky.
What's wrong with this entry?
The check deciding whether a hook command or MCP stdio program is unreadable or in reach now resolves the program against both the base environment PATH and a separate MCP-specific path, and treats any disagreement between the two as in reach. Interpreted programs are probed as well.
- The shell prefix used to expand a hook command now comes from the calling context instead of being read from
CLAUDE_CODE_SHELL_PREFIXin the environment. - The old launch-directory reach builder and its
HostPathRefusederror were removed, replaced by a routine that decides which settings scopes are in reach and treats a file with more than one hard link as reachable.
program_in_reach
Strings lifted out of the shipped bundle, so the claim above can be checked against them.
Related
Other releases about the same thing. Found by shared names or similar wording; neither means one caused the other.
-
v2.1.234
SessionEnd hooks lose the
bypass_permissions_disabledreasonBoth mention hook
-
v2.1.236
Hooks and Ctrl-C go quiet once shutdown has started
Both mention hook
-
v2.1.236
Shutdown seals transcript writes and gives SessionEnd hooks more time
Both mention hook