From 153d01a01e767b1b43c96961479cf74a87b59a30 Mon Sep 17 00:00:00 2001 From: Adam Weidman <65992621+adamfweidman@users.noreply.github.com> Date: Wed, 3 Dec 2025 12:53:06 -0800 Subject: [PATCH] feat: Add enableAgents experimental flag (#14371) Co-authored-by: Abhi <43648792+abhipatel12@users.noreply.github.com> --- docs/get-started/configuration.md | 5 +++++ packages/cli/src/config/config.ts | 1 + packages/cli/src/config/settingsSchema.test.ts | 11 +++++++++++ packages/cli/src/config/settingsSchema.ts | 9 +++++++++ packages/core/src/config/config.ts | 7 +++++++ schemas/settings.schema.json | 7 +++++++ 6 files changed, 40 insertions(+) diff --git a/docs/get-started/configuration.md b/docs/get-started/configuration.md index 53a8eddbf9..b2e52569e0 100644 --- a/docs/get-started/configuration.md +++ b/docs/get-started/configuration.md @@ -767,6 +767,11 @@ their corresponding top-level category object in your `settings.json` file. #### `experimental` +- **`experimental.enableAgents`** (boolean): + - **Description:** Enable local and remote subagents. + - **Default:** `false` + - **Requires restart:** Yes + - **`experimental.extensionManagement`** (boolean): - **Description:** Enable extension management features. - **Default:** `true` diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index bdae50ada3..81fc01f001 100755 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -639,6 +639,7 @@ export async function loadCliConfig( enabledExtensions: argv.extensions, extensionLoader: extensionManager, enableExtensionReloading: settings.experimental?.extensionReloading, + enableAgents: settings.experimental?.enableAgents, enableModelAvailabilityService: settings.experimental?.isModelAvailabilityServiceEnabled, experimentalJitContext: settings.experimental?.jitContext, diff --git a/packages/cli/src/config/settingsSchema.test.ts b/packages/cli/src/config/settingsSchema.test.ts index db3cdf2d02..95e15ca297 100644 --- a/packages/cli/src/config/settingsSchema.test.ts +++ b/packages/cli/src/config/settingsSchema.test.ts @@ -346,6 +346,17 @@ describe('SettingsSchema', () => { ).toBe('Enable preview features (e.g., preview models).'); }); + it('should have enableAgents setting in schema', () => { + const setting = getSettingsSchema().experimental.properties.enableAgents; + expect(setting).toBeDefined(); + expect(setting.type).toBe('boolean'); + expect(setting.category).toBe('Experimental'); + expect(setting.default).toBe(false); + expect(setting.requiresRestart).toBe(true); + expect(setting.showInDialog).toBe(false); + expect(setting.description).toBe('Enable local and remote subagents.'); + }); + it('should have isModelAvailabilityServiceEnabled setting in schema', () => { const setting = getSettingsSchema().experimental.properties diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index 758eb853e7..2278b6b825 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -1285,6 +1285,15 @@ const SETTINGS_SCHEMA = { description: 'Setting to enable experimental features', showInDialog: false, properties: { + enableAgents: { + type: 'boolean', + label: 'Enable Agents', + category: 'Experimental', + requiresRestart: true, + default: false, + description: 'Enable local and remote subagents.', + showInDialog: false, + }, extensionManagement: { type: 'boolean', label: 'Extension Management', diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 899e1ef2d2..3d45eebc90 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -320,6 +320,7 @@ export interface ConfigParameters { [K in HookEventName]?: HookDefinition[]; } & { disabled?: string[] }); previewFeatures?: boolean; + enableAgents?: boolean; enableModelAvailabilityService?: boolean; experimentalJitContext?: boolean; } @@ -441,6 +442,7 @@ export class Config { private previewModelFallbackMode = false; private previewModelBypassMode = false; private readonly enableModelAvailabilityService: boolean; + private readonly enableAgents: boolean; private readonly experimentalJitContext: boolean; private contextManager?: ContextManager; @@ -504,6 +506,7 @@ export class Config { this.model = params.model; this.enableModelAvailabilityService = params.enableModelAvailabilityService ?? false; + this.enableAgents = params.enableAgents ?? false; this.experimentalJitContext = params.experimentalJitContext ?? false; this.modelAvailabilityService = new ModelAvailabilityService(); this.previewFeatures = params.previewFeatures ?? undefined; @@ -1211,6 +1214,10 @@ export class Config { return this.enableModelAvailabilityService; } + isAgentsEnabled(): boolean { + return this.enableAgents; + } + getNoBrowser(): boolean { return this.noBrowser; } diff --git a/schemas/settings.schema.json b/schemas/settings.schema.json index b094e0a553..0dde0dbc63 100644 --- a/schemas/settings.schema.json +++ b/schemas/settings.schema.json @@ -1258,6 +1258,13 @@ "default": {}, "type": "object", "properties": { + "enableAgents": { + "title": "Enable Agents", + "description": "Enable local and remote subagents.", + "markdownDescription": "Enable local and remote subagents.\n\n- Category: `Experimental`\n- Requires restart: `yes`\n- Default: `false`", + "default": false, + "type": "boolean" + }, "extensionManagement": { "title": "Extension Management", "description": "Enable extension management features.",