From 1375bbfe13cca2d322ea4a91b4f0b31595f82b23 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 08:46:16 -0700 Subject: [PATCH 1/6] Tweak external ingest settings - Allow advanced config of external ingest by users - Remove old unused setting --- .../src/platform/configuration/common/configurationService.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/copilot/src/platform/configuration/common/configurationService.ts b/extensions/copilot/src/platform/configuration/common/configurationService.ts index d9338710fa8..3b881017fc7 100644 --- a/extensions/copilot/src/platform/configuration/common/configurationService.ts +++ b/extensions/copilot/src/platform/configuration/common/configurationService.ts @@ -637,7 +637,6 @@ export namespace ConfigKey { export const ProjectLabelsInline = defineAndMigrateExpSetting('chat.advanced.projectLabels.inline', 'chat.projectLabels.inline', false); export const WorkspaceMaxLocalIndexSize = defineAndMigrateExpSetting('chat.advanced.workspace.maxLocalIndexSize', 'chat.workspace.maxLocalIndexSize', 100_000); export const WorkspaceEnableCodeSearch = defineAndMigrateExpSetting('chat.advanced.workspace.enableCodeSearch', 'chat.workspace.enableCodeSearch', true); - export const WorkspaceMaxDiffSizeBeforeUsingExternalIngest = defineAndMigrateExpSetting('chat.advanced.workspace.maxDiffSizeBeforeUsingExternalIngest', 'chat.workspace.maxDiffSizeBeforeUsingExternalIngest', 100); export const WorkspacePreferredEmbeddingsModel = defineAndMigrateExpSetting('chat.advanced.workspace.preferredEmbeddingsModel', 'chat.workspace.preferredEmbeddingsModel', ''); export const NotebookAlternativeDocumentFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeFormat', 'chat.notebook.alternativeFormat', AlternativeNotebookFormat.xml); export const UseAlternativeNESNotebookFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeNESFormat.enabled', 'chat.notebook.alternativeNESFormat.enabled', false); @@ -888,7 +887,7 @@ export namespace ConfigKey { export const RetryNetworkErrors = defineSetting('chat.advanced.enableRetryNetworkErrors', ConfigType.ExperimentBased, true); export const RetryServerErrorStatusCodes = defineSetting('chat.advanced.retryServerErrorStatusCodes', ConfigType.ExperimentBased, '500,502'); export const FallbackNodeFetchOnNetworkProcessCrash = defineSetting('chat.advanced.enableFallbackNodeFetchOnNetworkProcessCrash', ConfigType.ExperimentBased, true); - export const WorkspaceEnableCodeSearchExternalIngest = defineTeamInternalSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); + export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); export const ChatRequestPowerSaveBlocker = defineTeamInternalSetting('chat.advanced.chatRequestPowerSaveBlocker', ConfigType.ExperimentBased, true); /** Enable WebSocket transport for Responses API requests. When enabled, uses a persistent WebSocket connection per conversation instead of individual HTTP requests. */ export const ResponsesApiWebSocketEnabled = defineTeamInternalSetting('chat.advanced.responsesApi.webSocket.enabled', ConfigType.ExperimentBased, true); From 0fbd2de399e07de7487095e840240ec049f869fc Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:03:38 -0700 Subject: [PATCH 2/6] Remove setting docs too --- extensions/copilot/package.json | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index 0ebca2b1f05..0269717494b 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -4145,16 +4145,6 @@ "onExp" ] }, - "github.copilot.chat.workspace.maxDiffSizeBeforeUsingExternalIngest": { - "type": "number", - "default": 100, - "markdownDescription": "%github.copilot.config.workspace.maxDiffSizeBeforeUsingExternalIngest%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, "github.copilot.chat.workspace.preferredEmbeddingsModel": { "type": "string", "default": "", From e31a984a9cf5865044a256a7bb0a0d76d527c046 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:04:56 -0700 Subject: [PATCH 3/6] Move to public namespace --- .../src/platform/configuration/common/configurationService.ts | 3 ++- .../node/codeSearch/codeSearchChunkSearch.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/copilot/src/platform/configuration/common/configurationService.ts b/extensions/copilot/src/platform/configuration/common/configurationService.ts index 3b881017fc7..f99a23aff24 100644 --- a/extensions/copilot/src/platform/configuration/common/configurationService.ts +++ b/extensions/copilot/src/platform/configuration/common/configurationService.ts @@ -887,7 +887,6 @@ export namespace ConfigKey { export const RetryNetworkErrors = defineSetting('chat.advanced.enableRetryNetworkErrors', ConfigType.ExperimentBased, true); export const RetryServerErrorStatusCodes = defineSetting('chat.advanced.retryServerErrorStatusCodes', ConfigType.ExperimentBased, '500,502'); export const FallbackNodeFetchOnNetworkProcessCrash = defineSetting('chat.advanced.enableFallbackNodeFetchOnNetworkProcessCrash', ConfigType.ExperimentBased, true); - export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); export const ChatRequestPowerSaveBlocker = defineTeamInternalSetting('chat.advanced.chatRequestPowerSaveBlocker', ConfigType.ExperimentBased, true); /** Enable WebSocket transport for Responses API requests. When enabled, uses a persistent WebSocket connection per conversation instead of individual HTTP requests. */ export const ResponsesApiWebSocketEnabled = defineTeamInternalSetting('chat.advanced.responsesApi.webSocket.enabled', ConfigType.ExperimentBased, true); @@ -1049,6 +1048,8 @@ export namespace ConfigKey { /** Enable local session search index — tracks sessions locally and enables chronicle commands.*/ export const LocalIndexEnabled = defineSetting('chat.localIndex.enabled', ConfigType.ExperimentBased, false); + + export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); } export function getAllConfigKeys(): string[] { diff --git a/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts b/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts index ac7a1320376..e5039447634 100644 --- a/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts +++ b/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts @@ -435,7 +435,7 @@ export class CodeSearchChunkSearch extends Disposable { } public isExternalIngestEnabled(): boolean | 'force' { - return this._configService.getExperimentBasedConfig(ConfigKey.TeamInternal.WorkspaceEnableCodeSearchExternalIngest, this._experimentationService); + return this._configService.getExperimentBasedConfig(ConfigKey.WorkspaceEnableCodeSearchExternalIngest, this._experimentationService); } public getRemoteIndexState(): CodeSearchRemoteIndexState { From 7f1963825e4970198894a4fceb3aac92beec1190 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 09:17:00 -0700 Subject: [PATCH 4/6] Document setting --- extensions/copilot/package.json | 9 +++++++++ extensions/copilot/package.nls.json | 1 + 2 files changed, 10 insertions(+) diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index 0269717494b..d6914591a8f 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -4881,6 +4881,15 @@ "tags": [ "advanced" ] + }, + "github.copilot.chat.advanced.workspace.codeSearchExternalIngest.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.workspace.codeSearchExternalIngest.enabled%", + "tags": [ + "advanced", + "onExp" + ] } } } diff --git a/extensions/copilot/package.nls.json b/extensions/copilot/package.nls.json index 36eb4711531..350e400bf07 100644 --- a/extensions/copilot/package.nls.json +++ b/extensions/copilot/package.nls.json @@ -177,6 +177,7 @@ "github.copilot.config.localIndex.enabled": "Enable local session tracking. When enabled, session data is tracked locally for /chronicle commands.", "github.copilot.config.sessionSearch.cloudSync.enabled": "Enable cloud sync for session data. When enabled, session data is synced to your Copilot account for cross-device access.", "github.copilot.config.sessionSearch.cloudSync.excludeRepositories": "Repository patterns to exclude from cloud sync. Use exact `owner/repo` names or glob patterns like `my-org/*`. Sessions from matching repos will only be stored locally.", + "github.copilot.config.workspace.codeSearchExternalIngest.enabled": "Enable external ingest for semantic codebase search.", "copilot.workspace.explain.description": "Explain how the code in your active editor works", "copilot.workspace.edit.description": "Edit files in your workspace", "copilot.workspace.review.description": "Review the selected code in your active editor", From 786804797f1c5cd91aa07debeeaa92c84a9c18aa Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 11:47:32 -0700 Subject: [PATCH 5/6] Move under advanced --- extensions/copilot/package.json | 9 --------- .../configuration/common/configurationService.ts | 3 +-- .../node/codeSearch/codeSearchChunkSearch.ts | 2 +- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index d6914591a8f..0269717494b 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -4881,15 +4881,6 @@ "tags": [ "advanced" ] - }, - "github.copilot.chat.advanced.workspace.codeSearchExternalIngest.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.workspace.codeSearchExternalIngest.enabled%", - "tags": [ - "advanced", - "onExp" - ] } } } diff --git a/extensions/copilot/src/platform/configuration/common/configurationService.ts b/extensions/copilot/src/platform/configuration/common/configurationService.ts index f99a23aff24..cf82fa71874 100644 --- a/extensions/copilot/src/platform/configuration/common/configurationService.ts +++ b/extensions/copilot/src/platform/configuration/common/configurationService.ts @@ -637,6 +637,7 @@ export namespace ConfigKey { export const ProjectLabelsInline = defineAndMigrateExpSetting('chat.advanced.projectLabels.inline', 'chat.projectLabels.inline', false); export const WorkspaceMaxLocalIndexSize = defineAndMigrateExpSetting('chat.advanced.workspace.maxLocalIndexSize', 'chat.workspace.maxLocalIndexSize', 100_000); export const WorkspaceEnableCodeSearch = defineAndMigrateExpSetting('chat.advanced.workspace.enableCodeSearch', 'chat.workspace.enableCodeSearch', true); + export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); export const WorkspacePreferredEmbeddingsModel = defineAndMigrateExpSetting('chat.advanced.workspace.preferredEmbeddingsModel', 'chat.workspace.preferredEmbeddingsModel', ''); export const NotebookAlternativeDocumentFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeFormat', 'chat.notebook.alternativeFormat', AlternativeNotebookFormat.xml); export const UseAlternativeNESNotebookFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeNESFormat.enabled', 'chat.notebook.alternativeNESFormat.enabled', false); @@ -1048,8 +1049,6 @@ export namespace ConfigKey { /** Enable local session search index — tracks sessions locally and enables chronicle commands.*/ export const LocalIndexEnabled = defineSetting('chat.localIndex.enabled', ConfigType.ExperimentBased, false); - - export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); } export function getAllConfigKeys(): string[] { diff --git a/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts b/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts index e5039447634..1dedc348578 100644 --- a/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts +++ b/extensions/copilot/src/platform/workspaceChunkSearch/node/codeSearch/codeSearchChunkSearch.ts @@ -435,7 +435,7 @@ export class CodeSearchChunkSearch extends Disposable { } public isExternalIngestEnabled(): boolean | 'force' { - return this._configService.getExperimentBasedConfig(ConfigKey.WorkspaceEnableCodeSearchExternalIngest, this._experimentationService); + return this._configService.getExperimentBasedConfig(ConfigKey.Advanced.WorkspaceEnableCodeSearchExternalIngest, this._experimentationService); } public getRemoteIndexState(): CodeSearchRemoteIndexState { From 9e28b9ff37a6b4d6a7aa8def2f5ad4610670e6f1 Mon Sep 17 00:00:00 2001 From: Matt Bierner <12821956+mjbvz@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:38:00 -0700 Subject: [PATCH 6/6] Fix settings format --- extensions/copilot/package.json | 9 +++++++++ extensions/copilot/package.nls.json | 1 - .../configuration/common/configurationService.ts | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/extensions/copilot/package.json b/extensions/copilot/package.json index 0269717494b..cbb0ceb534d 100644 --- a/extensions/copilot/package.json +++ b/extensions/copilot/package.json @@ -4881,6 +4881,15 @@ "tags": [ "advanced" ] + }, + "github.copilot.chat.workspace.codeSearchExternalIngest.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.workspace.codeSearchExternalIngest.enabled%", + "tags": [ + "advanced", + "onExp" + ] } } } diff --git a/extensions/copilot/package.nls.json b/extensions/copilot/package.nls.json index 350e400bf07..44adc44eb8c 100644 --- a/extensions/copilot/package.nls.json +++ b/extensions/copilot/package.nls.json @@ -367,7 +367,6 @@ "github.copilot.config.projectLabels.inline": "Add project labels in inline edit requests.", "github.copilot.config.workspace.maxLocalIndexSize": "Maximum size of the local workspace index.", "github.copilot.config.workspace.enableCodeSearch": "Enable code search in workspace context.", - "github.copilot.config.workspace.maxDiffSizeBeforeUsingExternalIngest": "Maximum number of local changes before we start using using external ingest.", "github.copilot.config.workspace.preferredEmbeddingsModel": "Preferred embeddings model for semantic search.", "github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride": "Override endpoint for Azure DevOps code search prototype.", "github.copilot.config.feedback.onChange": "Enable feedback collection on configuration changes.", diff --git a/extensions/copilot/src/platform/configuration/common/configurationService.ts b/extensions/copilot/src/platform/configuration/common/configurationService.ts index cf82fa71874..d320b41edc3 100644 --- a/extensions/copilot/src/platform/configuration/common/configurationService.ts +++ b/extensions/copilot/src/platform/configuration/common/configurationService.ts @@ -637,7 +637,7 @@ export namespace ConfigKey { export const ProjectLabelsInline = defineAndMigrateExpSetting('chat.advanced.projectLabels.inline', 'chat.projectLabels.inline', false); export const WorkspaceMaxLocalIndexSize = defineAndMigrateExpSetting('chat.advanced.workspace.maxLocalIndexSize', 'chat.workspace.maxLocalIndexSize', 100_000); export const WorkspaceEnableCodeSearch = defineAndMigrateExpSetting('chat.advanced.workspace.enableCodeSearch', 'chat.workspace.enableCodeSearch', true); - export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.advanced.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false); + export const WorkspaceEnableCodeSearchExternalIngest = defineSetting('chat.workspace.codeSearchExternalIngest.enabled', ConfigType.ExperimentBased, false, undefined, undefined, { experimentName: 'copilotchat.config.chat.advanced.workspace.codeSearchExternalIngest.enabled' }); export const WorkspacePreferredEmbeddingsModel = defineAndMigrateExpSetting('chat.advanced.workspace.preferredEmbeddingsModel', 'chat.workspace.preferredEmbeddingsModel', ''); export const NotebookAlternativeDocumentFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeFormat', 'chat.notebook.alternativeFormat', AlternativeNotebookFormat.xml); export const UseAlternativeNESNotebookFormat = defineAndMigrateExpSetting('chat.advanced.notebook.alternativeNESFormat.enabled', 'chat.notebook.alternativeNESFormat.enabled', false);