{"name":"CLAUDE_CODE_ENABLE_FUNCTION_HOOKS","slug":"claude-code-enable-function-hooks","family":"env","title":"Environment variables","noun":"environment variable","description":"A new environment variable can force plugin function hooks on or off, overriding the remote feature gate.","description_source":"entry","described_by":{"version":"2.1.259","anchor":"claude-code-enable-function-hooks-env-override"},"presence":{"first_seen":"2.1.259","removed_in":"2.1.287","in_current_build":false,"newest_mined":"2.1.319","builds":25,"mined_builds":159,"first_cited":{"version":"2.1.259","released_at":"2026-09-02 21:21:42","spans":6}},"aliases":[],"entries":[{"version":"2.1.287","anchor":"function-hooks-env-var-no-longer-injected-into-the-child-env","heading":"Claude Code stops setting CLAUDE_CODE_ENABLE_FUNCTION_HOOKS for processes it starts","line":"`CLAUDE_CODE_ENABLE_FUNCTION_HOOKS` is no longer added to child processes, and the function hooks check no longer reads it directly","released_at":"2026-10-01 16:59:25","reason":"found in this entry's text"},{"version":"2.1.287","anchor":"hooks-modules-turned-off-message-no-longer-mentions-claude","heading":"Plugin hooks modules 'turned off' message no longer mentions an environment variable","line":"The message shown when plugin hooks modules are off now blames only the rollout switch and no longer mentions `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS`","released_at":"2026-10-01 16:59:25","reason":"found in this entry's text"},{"version":"2.1.286","anchor":"hooks-modules-test-error-now-says-it-is-controlled-by-claude","heading":"Plugin test error now explains how hooks modules were turned off","line":"When hooks modules are off, testing a plugin now says whether a setting, an environment variable or a rollout switch turned them off","released_at":"2026-09-30 17:14:38","reason":"found in this entry's text, named in this entry"},{"version":"2.1.286","anchor":"hooks-module-disabled-message-now-says-it-is-on-by-default-u","heading":"Plugin hooks modules message now reads as if they are on by default","line":"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","released_at":"2026-09-30 17:14:38","reason":"found in this entry's text"},{"version":"2.1.283","anchor":"new-mods-hot-reloading-session-mods-folder-consent-promp","heading":"Write live mods for Claude Code that reload inside your session","line":"A new bundled skill writes mods (plugins adding panes, status lines, toasts or hooks) that reload live once you agree for the session","released_at":"2026-09-25 18:46:11","reason":"found in this entry's text"},{"version":"2.1.283","anchor":"hooks-modules-toolcall-pinned-key-matchers-and-runcommands","heading":"Hook modules that don't match a tool call are skipped earlier","line":"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","released_at":"2026-09-25 18:46:11","reason":"found in this entry's text"},{"version":"2.1.280","anchor":"hooks-modules-plugin-tests-early-access-gate-and-messages","heading":"Hooks modules (plugin tests) early-access gate and messages","line":"Plugin hook tests now give a specific reason when they can't run: rollout off, or disabled locally","released_at":"2026-09-22 15:44:39","reason":"found in this entry's text"},{"version":"2.1.280","anchor":"hooks-module-skip-reasons-now-surface-to-the-plugin-author-v","heading":"Hooks-module skip reasons now surface to the plugin author via a notification channel, not just debug logs","line":"Plugins are now notified directly when their hooks module is skipped, not just via a debug log line","released_at":"2026-09-22 15:44:39","reason":"found in this entry's text, named in this entry"},{"version":"2.1.275","anchor":"installed-non-built-in-plugins-hooks-modules-gated-behind","heading":"Installed (non-built-in) plugins' hooks modules gated behind a new rollout flag, off by default","line":"Hooks modules for installed (non-built-in) plugins now require a rollout flag, off by default","released_at":"2026-09-17 20:20:31","reason":"found in this entry's text, named in this entry"},{"version":"2.1.259","anchor":"claude-code-enable-function-hooks-env-override","heading":"CLAUDE_CODE_ENABLE_FUNCTION_HOOKS env override","line":"A new environment variable can force plugin function hooks on or off, overriding the remote feature gate.","released_at":"2026-09-02 21:21:42","reason":"found in this entry's text, named in this entry"}],"entries_total":11,"docs":[{"source":"claude-code","path":"plugins\/mods\/admin","title":"Manage mods for your organization","documented":false},{"source":"claude-code","path":"plugins\/mods\/overview","title":"Mods overview","documented":false}],"docs_total":2,"gates":[],"related":[{"name":"CLAUDE_CODE_ENABLE_APPEND_SUBAGENT_PROMPT","slug":"claude-code-enable-append-subagent-prompt","description":"Gates the extra subagent system prompt: when this is truthy and a prompt was supplied by the hidden `--append-subagent-system-prompt` option, its file variant, or the SDK's `appendSubagentSystemPrompt` initialize field, the text is appended to a Task-tool subagent's system prompt (skipped for agents with an isolated context and in one other case). Claude Code sets it to `1` itself when either command-line option supplies a prompt."},{"name":"CLAUDE_CODE_ENABLE_AUTO_MODE","slug":"claude-code-enable-auto-mode","description":"Accepted for compatibility with older releases and has no effect. Auto mode is available by default on every provider, including Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, and signed-in [Claude apps gateway](\/docs\/en\/claude-apps-gateway) sessions. In v2.1.158 through v2.1.206, setting this to `1` was required to make [auto mode](\/docs\/en\/permission-modes#eliminate-prompts-with-auto-mode) available on those providers"},{"name":"CLAUDE_CODE_ENABLE_AWAY_SUMMARY","slug":"claude-code-enable-away-summary","description":"Override [session recap](\/docs\/en\/interactive-mode#session-recap) availability. Set to `0` to force recaps off regardless of the `\/config` toggle. Set to `1` to force recaps on when [`awaySummaryEnabled`](\/docs\/en\/settings-reference#awaysummaryenabled) is `false`. Takes precedence over the setting and `\/config` toggle"},{"name":"CLAUDE_CODE_ENABLE_BACKGROUND_PLUGIN_REFRESH","slug":"claude-code-enable-background-plugin-refresh","description":"Set to `1` to refresh plugin state at turn boundaries in [non-interactive mode](\/docs\/en\/headless) after a background install completes. Off by default because the refresh changes the system prompt mid-session, which invalidates [prompt caching](\/docs\/en\/prompt-caching) for that turn"},{"name":"CLAUDE_CODE_ENABLE_CFC","slug":"claude-code-enable-cfc","description":"Restricted sessions skip Claude in Chrome browser wiring, same as safe mode."},{"name":"CLAUDE_CODE_ENABLE_CONFIG_MISSING_READ_GUARD","slug":"claude-code-enable-config-missing-read-guard","description":"When Claude Code cannot find its config file, it now creates it without overwriting one that appears meanwhile, and saves onto it instead"},{"name":"CLAUDE_CODE_ENABLE_DESIGN_MCP","slug":"claude-code-enable-design-mcp","description":"Forces the built-in Claude Design MCP server on (`1`, `true`, `yes`, `on`) or off (`0`, `false`, `no`, `off`); unset or any other value falls back to the `tengu_omelette_whisk` flag, default off. When on and the API provider is first-party, Claude Code adds an HTTP MCP server named `claude_design` at `https:\/\/api.anthropic.com\/v1\/design\/mcp` to its built-in servers, and it also enables the `\/design` command, which another condition can enable as well."},{"name":"CLAUDE_CODE_ENABLE_DESIGN_SYNC","slug":"claude-code-enable-design-sync","description":null},{"name":"CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL","slug":"claude-code-enable-experimental-advisor-tool","description":"The experimental advisor override no longer skips per-model eligibility checks, only the rank requirement."},{"name":"CLAUDE_CODE_ENABLE_FEEDBACK_SURVEY_FOR_OTEL","slug":"claude-code-enable-feedback-survey-for-otel","description":"Set to `1` to route the \"How is Claude doing?\" session quality survey to your own [OpenTelemetry collector](\/docs\/en\/monitoring-usage) when Anthropic-bound nonessential traffic is blocked. Survey ratings are emitted only as OTEL events to your configured collector. No survey data is sent to Anthropic in this mode. Applies when `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`, `DISABLE_TELEMETRY`, or `DO_NOT_TRACK` is set, and has no effect otherwise. `CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY` and the organization product feedback policy take precedence"}],"url":"https:\/\/changelogs.core-directive.com\/reference\/env\/claude-code-enable-function-hooks","family_url":"https:\/\/changelogs.core-directive.com\/reference\/env.json"}