CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT
A Claude Code environment variable, read out of the shipped bundle. It has been in the build since v2.1.281, including the newest one read.
Set to 1 to turn off the critical-path check for a recursive rm whose target is entirely the output of a command substitution, such as rm -rf "$(pwd)". The other critical-path checks keep running. Set it in the environment that launches Claude Code, since Claude Code ignores a copy delivered through a settings env block. Requires Claude Code v2.1.281 or later
Anthropic's own wording. Read off Environment variables, captured 2026-09-28.
In the changelogs
6Releases whose published page names CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT.
-
v2.1.321
Shell permission checks now cover more cp, mv and rm cases
Claude Code now checks where cp and mv really write, looks inside ${HOME} in rm targets, and lets deny rules override rm checks
found in this entry's text
-
v2.1.319
Stricter shell permission checks for rm and Windows paths
Claude Code now asks before an rm on a Windows path it cannot place, and checks nested commands and auto mode commands more closely
found in this entry's text
-
v2.1.305
Approval prompt for
rmon a command's output now checks more of the commandThe approval check for a recursive
rmaimed at a command's output now also looks at extra parts of the commandfound in this entry's text
-
v2.1.288
New
CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPTswitch for inline shell deletionsSetting
CLAUDE_CODE_DISABLE_INLINE_SHELL_RM_PROMPTskips a new permission check forrmin inline shell scriptsfound in this entry's text
-
v2.1.281
rm -r on command-substitution output now always prompts (tengu_iridescent_boot, CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT)
rm -ron a path made entirely of$(...)or backtick output now always asks, and permission rules cannot auto-allow itfound in this entry's text, named in this entry
-
v2.1.281
rm -r on a command-substitution target now always asks, unless an env var or flag turns it off
A recursive rm aimed at the output of a command substitution now always asks you first, and permission rules cannot auto-allow it
found in this entry's text
First cited
1The earliest release whose published evidence quoted CLAUDE_CODE_DISABLE_SUBSTITUTION_RM_PROMPT was v2.1.281, 23 Sep 2026. That is the oldest release this project wrote about it, so it is a floor on the name's age and not the release that introduced it. It is not a presence reading: which builds carried the name is the table below.
Presence across releases
1Build by build
38One row per release since the first build this name was read out of. Absent means the build was read and the name was not in it, never mined means no bundle for that release was ever archived, and a declared type or a default is only ever what that release's own bundle stated.
Read out of the published npm bundle release by release, and out of Anthropic's own documentation as this site captured it. Nothing on this page is a description anybody here wrote about what the environment variable does. All environment variables.