CLAUDE_CODE_ENABLE_FUNCTION_HOOKS
A Claude Code environment variable, read out of the shipped bundle. It was in the build from v2.1.259 and was gone by v2.1.287.
A new environment variable can force plugin function hooks on or off, overriding the remote feature gate.
Not Anthropic's. This is the line from the earliest changelog entry here that named it, v2.1.259.
In the changelogs
11Releases whose published page names CLAUDE_CODE_ENABLE_FUNCTION_HOOKS.
-
v2.1.287
Claude Code stops setting
CLAUDE_CODE_ENABLE_FUNCTION_HOOKSfor processes it startsCLAUDE_CODE_ENABLE_FUNCTION_HOOKSis no longer added to child processes, and the function hooks check no longer reads it directlyfound in this entry's text
-
v2.1.287
Plugin hooks modules 'turned off' message no longer mentions an environment variable
The message shown when plugin hooks modules are off now blames only the rollout switch and no longer mentions
CLAUDE_CODE_ENABLE_FUNCTION_HOOKSfound in this entry's text
-
v2.1.286
Plugin test error now explains how hooks modules were turned off
When hooks modules are off, testing a plugin now says whether a setting, an environment variable or a rollout switch turned them off
found in this entry's text, named in this entry
-
v2.1.286
Plugin hooks modules message now reads as if they are on by default
The notice shown when plugin hooks modules are off no longer calls them early access and instead names the setting or rollout that turned them off
found in this entry's text
-
v2.1.283
Write live mods for Claude Code that reload inside your session
A new bundled skill writes mods (plugins adding panes, status lines, toasts or hooks) that reload live once you agree for the session
found in this entry's text
-
v2.1.283
Hook modules that don't match a tool call are skipped earlier
Claude Code now checks hook modules against key fields of a tool call itself and skips those that don't match, instead of sending every call to every module
found in this entry's text
-
v2.1.280
Hooks modules (plugin tests) early-access gate and messages
Plugin hook tests now give a specific reason when they can't run: rollout off, or disabled locally
found in this entry's text
-
v2.1.280
Hooks-module skip reasons now surface to the plugin author via a notification channel, not just debug logs
Plugins are now notified directly when their hooks module is skipped, not just via a debug log line
found in this entry's text, named in this entry
-
v2.1.275
Installed (non-built-in) plugins' hooks modules gated behind a new rollout flag, off by default
Hooks modules for installed (non-built-in) plugins now require a rollout flag, off by default
found in this entry's text, named in this entry
-
v2.1.259
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS env override
A new environment variable can force plugin function hooks on or off, overriding the remote feature gate.
found in this entry's text, named in this entry
-
v2.1.259
Plugin hooks as JS modules — gated off by default
Plugins can load hooks from real JS modules with per-action permission checks, but the rollout gate defaults off.
found in this entry's text, named in this entry
First cited
6The earliest release whose published evidence quoted CLAUDE_CODE_ENABLE_FUNCTION_HOOKS was v2.1.259, 2 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
2Build by build
55One 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.