From 61040d0eb803c2ef83e9920824fcfc872a60fe80 Mon Sep 17 00:00:00 2001 From: Abhi <43648792+abhipatel12@users.noreply.github.com> Date: Wed, 21 Jan 2026 17:40:31 -0500 Subject: [PATCH] feat(hooks): enable hooks system by default (#17247) --- docs/get-started/configuration.md | 2 +- packages/cli/src/commands/hooks/migrate.test.ts | 3 --- packages/cli/src/commands/hooks/migrate.ts | 3 --- packages/cli/src/config/config.ts | 2 +- packages/cli/src/config/extension.test.ts | 1 + packages/cli/src/config/settingsSchema.ts | 2 +- packages/core/src/config/config.ts | 2 +- schemas/settings.schema.json | 4 ++-- 8 files changed, 7 insertions(+), 12 deletions(-) diff --git a/docs/get-started/configuration.md b/docs/get-started/configuration.md index 1e7f4207e0..2f4ab2c132 100644 --- a/docs/get-started/configuration.md +++ b/docs/get-started/configuration.md @@ -909,7 +909,7 @@ their corresponding top-level category object in your `settings.json` file. - **`hooksConfig.enabled`** (boolean): - **Description:** Canonical toggle for the hooks system. When disabled, no hooks will be executed. - - **Default:** `false` + - **Default:** `true` - **`hooksConfig.disabled`** (array): - **Description:** List of hook names (commands) that should be disabled. diff --git a/packages/cli/src/commands/hooks/migrate.test.ts b/packages/cli/src/commands/hooks/migrate.test.ts index 3f6f5317b4..847d7bc467 100644 --- a/packages/cli/src/commands/hooks/migrate.test.ts +++ b/packages/cli/src/commands/hooks/migrate.test.ts @@ -511,8 +511,5 @@ describe('migrate command', () => { expect(debugLoggerLogSpy).toHaveBeenCalledWith( '\nMigration complete! Please review the migrated hooks in .gemini/settings.json', ); - expect(debugLoggerLogSpy).toHaveBeenCalledWith( - 'Note: Set hooksConfig.enabled to true in your settings to enable the hook system.', - ); }); }); diff --git a/packages/cli/src/commands/hooks/migrate.ts b/packages/cli/src/commands/hooks/migrate.ts index f1fb56f970..1ced601052 100644 --- a/packages/cli/src/commands/hooks/migrate.ts +++ b/packages/cli/src/commands/hooks/migrate.ts @@ -244,9 +244,6 @@ export async function handleMigrateFromClaude() { debugLogger.log( '\nMigration complete! Please review the migrated hooks in .gemini/settings.json', ); - debugLogger.log( - 'Note: Set hooksConfig.enabled to true in your settings to enable the hook system.', - ); } catch (error) { debugLogger.error(`Error saving migrated hooks: ${getErrorMessage(error)}`); } diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index 92f4d56ea4..7d58eefaa3 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -778,7 +778,7 @@ export async function loadCliConfig( // TODO: loading of hooks based on workspace trust enableHooks: (settings.tools?.enableHooks ?? true) && - (settings.hooksConfig?.enabled ?? false), + (settings.hooksConfig?.enabled ?? true), enableHooksUI: settings.tools?.enableHooks ?? true, hooks: settings.hooks || {}, disabledHooks: settings.hooksConfig?.disabled || [], diff --git a/packages/cli/src/config/extension.test.ts b/packages/cli/src/config/extension.test.ts index 78433b6c79..7acaf2cc67 100644 --- a/packages/cli/src/config/extension.test.ts +++ b/packages/cli/src/config/extension.test.ts @@ -872,6 +872,7 @@ describe('extension tests', () => { ); const settings = loadSettings(tempWorkspaceDir).merged; + settings.hooksConfig.enabled = false; extensionManager = new ExtensionManager({ workspaceDir: tempWorkspaceDir, diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 47863d52c4..96ec8c9ff1 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -1646,7 +1646,7 @@ const SETTINGS_SCHEMA = { label: 'Enable Hooks', category: 'Advanced', requiresRestart: false, - default: false, + default: true, description: 'Canonical toggle for the hooks system. When disabled, no hooks will be executed.', showInDialog: false, diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index be093e61ef..15a1bcb85f 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -685,7 +685,7 @@ export class Config { ? false : (params.useWriteTodos ?? true); this.enableHooksUI = params.enableHooksUI ?? true; - this.enableHooks = params.enableHooks ?? false; + this.enableHooks = params.enableHooks ?? true; this.disabledHooks = params.disabledHooks ?? []; this.codebaseInvestigatorSettings = { diff --git a/schemas/settings.schema.json b/schemas/settings.schema.json index aaea1062ff..ab1ae47c29 100644 --- a/schemas/settings.schema.json +++ b/schemas/settings.schema.json @@ -1574,8 +1574,8 @@ "enabled": { "title": "Enable Hooks", "description": "Canonical toggle for the hooks system. When disabled, no hooks will be executed.", - "markdownDescription": "Canonical toggle for the hooks system. When disabled, no hooks will be executed.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `false`", - "default": false, + "markdownDescription": "Canonical toggle for the hooks system. When disabled, no hooks will be executed.\n\n- Category: `Advanced`\n- Requires restart: `no`\n- Default: `true`", + "default": true, "type": "boolean" }, "disabled": {