CLAUDE_CODE_PLUGIN_DIRS
A Claude Code environment variable, read out of the shipped bundle. It has been in the build since v2.1.280, including the newest one read.
New CLAUDE_CODE_PLUGIN_DIRS environment variable lets you register extra plugin directories without --plugin-dir flags
Not Anthropic's. This is the line from the earliest changelog entry here that named it, v2.1.280.
In the changelogs
6Releases whose published page names CLAUDE_CODE_PLUGIN_DIRS.
-
v2.1.321
CLAUDE_AX_SCREEN_READER is now carried along with other Claude Code settings
The screen-reader setting CLAUDE_AX_SCREEN_READER now joins the environment variables Claude Code passes along
found in this entry's text
-
v2.1.314
Startup failures now show a readable error message
If Claude Code fails while starting up, it now exits with a message beginning 'Claude Code could not start:' instead of an unhandled error
found in this entry's text
-
v2.1.310
Remote managed settings setup now reads signature details
When setting up remote managed settings at startup, Claude Code now reads signature details alongside the policy and settings
found in this entry's text
-
v2.1.304
New environment variables can stop plugins from starting local MCP servers
Setting CLAUDE_CODE_SKIP_PLUGIN_LOCAL_MCP_SERVERS keeps only remote MCP servers from plugins, and several other environment variables are new
found in this entry's text
-
v2.1.280
CLAUDE_CODE_PLUGIN_DIRS env var for sideloading plugin directories
New CLAUDE_CODE_PLUGIN_DIRS environment variable lets you register extra plugin directories without --plugin-dir flags
found in this entry's text, named in this entry
-
v2.1.280
New CLAUDE_CODE_PLUGIN_DIRS helper module: Son/OBn/nDe/Zst plus a dedicated refusal message
Claude Code adds internal handling for CLAUDE_CODE_PLUGIN_DIRS, including validation of the paths it lists and a message explaining how to unset it
found in this entry's text, named in this entry
First cited
3The earliest release whose published evidence quoted CLAUDE_CODE_PLUGIN_DIRS was v2.1.280, 22 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
39One 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.