--plugin-dir
A Claude Code CLI flag, read out of the shipped bundle. It has been in the build since v2.1.138, including the newest one read.
Load a plugin from a directory or .zip archive, or several from a folder of plugins, for this session only. Each flag takes one path. Repeat the flag for more paths: --plugin-dir A --plugin-dir B.zip. Passing a folder of plugins requires Claude Code v2.1.265 or later
Anthropic's own wording. Read off CLI reference, captured 2026-09-26.
In the changelogs
34Releases whose published page names --plugin-dir.
-
v2.1.305
allowManagedPermissionRulesOnlyhelp narrows when--plugin-dirplugins keep their toolsThe setting's description now says plugins loaded with
--plugin-dirkeep their allowed tools only in Claude Desktop, and only if your organization didn't set itfound in this entry's text, named in this entry
-
v2.1.301
Programs driving Claude Code can add plugins during a session
Programs built on the SDK can now load more plugins into a running session through the plugin reload request, without a restart
found in this entry's text, named in this entry
-
v2.1.287
Plugin names that imitate Anthropic's are now flagged when validated
Plugin checks now give an error for names that start with claude-, anthropic- or similar, and a warning for looser look-alikes
found in this entry's text
-
v2.1.284
Managed-rules lockdown keeps plugin tool permissions only from admin-backed sources
Under
allowManagedPermissionRulesOnly, only plugins from admin-backed sources keep their allowed-tools grants; other plugins' grants are ignoredfound in this entry's text
-
v2.1.283
Validator reports plugin and marketplace names Claude Code cannot install
Marketplace validation now gives an error for plugin or marketplace names Claude Code cannot install, instead of saying they are accepted
found in this entry's text
-
v2.1.283
SDK startup info now says which plugin directory failed to load
Plugin load errors that Claude Code reports to SDK programs are now documented and can give the path of the directory that failed
found in this entry's text, named in this entry
-
v2.1.281
--tmux worktree relaunch absolutizes path arguments
When --tmux relaunches Claude Code for a worktree, relative file paths in flags are now turned into full paths
found in this entry's text
-
v2.1.281
--plugin-dir log explains plugin vs folder-of-plugins
The
--plugin-dirdebug log now explains whether a folder was read as one plugin or a folder of pluginsfound in this entry's text, named in this entry
-
v2.1.281
--managed-settingsis carried through to spawned sessions;--setting-sourcesis accepted and discarded by one argument parser--managed-settings is now passed on to sessions Claude Code starts itself, while one parser reads --setting-sources and throws the value away
found in this entry's text
-
v2.1.281
bg dispatch carries reattachEnv and retries while the daemon starts
Background dispatch now retries while the daemon starts, carries a reattach environment, and forwards flags like
--settingswhen attachingfound 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.277
New disableSideloadFlags settings key hardened against malformed values
A malformed disableSideloadFlags setting now blocks sideload flags by default instead of being ignored
found in this entry's text
-
v2.1.265
--plugin-dir now accepts a folder containing multiple plugins
--plugin-dir can now point at a folder holding several plugins at once
found in this entry's text, named in this entry
-
v2.1.265
--plugin-dir help text now documents loading a folder of plugins
--plugin-dir help text now documents that a folder of plugins can be passed
found in this entry's text, named in this entry
-
v2.1.261
New SDK launch flag: --await-initialize
A new SDK CLI flag makes the process wait for an initialize request over stdin before starting.
found in this entry's text, named in this entry
-
v2.1.261
SDK plugin delivery via
initializerequestSDK plugins can now be sent via an initialize request instead of the command line, with a fallback warning if not applied.
found in this entry's text
-
v2.1.261
Poll tool's "evals" toolState scaffolding is unreachable in this build
Some poll-tool eval-tracking scaffolding exists but can't be reached in this build.
found in this entry's text
-
v2.1.261
SDK session init accepts a
pluginsfield over stdinThe SDK's initialize request can now carry plugin paths over stdin instead of one flag per plugin.
found in this entry's text
-
v2.1.261
initialize control request can now report whether requested plugins loaded
The initialize request now reports whether plugins you asked for actually loaded.
found in this entry's text
-
v2.1.261
Plugin loading gains 'sync-attributed' directories and managed-hooks-only enforcement
Plugin resolution now distinguishes sync-attributed plugins and enforces managed hooks-only rules.
found in this entry's text
-
v2.1.248
claude agentsrespects restricted modeThe agents view now inherits restricted mode from the session, not just an explicit flag.
found in this entry's text
-
v2.1.239
Command-line flag parsing rewritten around an explicit table of value-taking flags
Flags that take values no longer swallow or drop their arguments, and
--is handled.named in this entry, found in this entry's text
-
v2.1.239
Plugin errors now say what to do based on where the plugin came from
Plugin load errors now give advice matched to how the plugin was installed, including synced copies being shadowed.
named in this entry, found in this entry's text
-
v2.1.239
Plugin sync warns on blocked directories, and load-log wording changed
Plugin sync now warns when a directory blocks the install path, and footer text comes from the marketplace.
found in this entry's text
-
v2.1.239
Plugin commands explain why a plugin cannot be toggled
Plugin commands now explain refusals for built-ins and org-locked plugins instead of acting oddly.
found in this entry's text
-
v2.1.193
disableSideloadFlagsEnterprise Settingfound in this entry's text
-
v2.1.172
--plugin-dir-no-mcp Flag
found in this entry's text
- v2.1.139
-
v2.1.129
Session Plugins from URLs
found in this entry's text
-
v2.1.128
Session-Only Plugin Zip Loading
found in this entry's text
-
v2.1.84
Plugin Source Tracking
found in this entry's text
-
v2.1.76
--plugin-dirFlag Now Repeatablefound in this entry's text
-
v2.1.76
Plugin Dependency Resolution Enhanced
found in this entry's text
-
v2.0.25
Session-Only Plugin Loading
found in this entry's text
First cited
7The earliest release whose published evidence quoted --plugin-dir was v2.1.76, 14 Mar 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.
1 further span in the ledger name it. The list above is the earliest first and stops at 6.
Presence across releases
1Build by build
149One 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 CLI flag does. All CLI flags.