From c02589f4c000482e9597ace2b21467bf4caf6a16 Mon Sep 17 00:00:00 2001 From: David Kaya Date: Fri, 27 Mar 2026 20:31:29 +0100 Subject: [PATCH] fix: only probe OAuth for newly enabled MCP servers Previously, every tooling update re-probed all enabled HTTP MCP servers for OAuth requirements. Now it compares the new selection against the previous one and only probes servers that were just enabled. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/main/AryxAppService.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/main/AryxAppService.ts b/src/main/AryxAppService.ts index 5757192..8fc9f0f 100644 --- a/src/main/AryxAppService.ts +++ b/src/main/AryxAppService.ts @@ -1009,16 +1009,24 @@ export class AryxAppService extends EventEmitter { selection, ); + const previousEnabledMcpServerIds = new Set(session.tooling?.enabledMcpServerIds ?? []); session.tooling = selection; session.updatedAt = nowIso(); const result = await this.persistAndBroadcast(workspace); - // Proactively authenticate HTTP MCP servers that need OAuth - void this.probeAndAuthenticateHttpMcpServers( - sessionId, - resolveProjectToolingSettings(workspace.settings, project.discoveredTooling), - selection, - ); + // Proactively authenticate only newly enabled HTTP MCP servers + const newlyEnabledIds = selection.enabledMcpServerIds.filter((id) => !previousEnabledMcpServerIds.has(id)); + if (newlyEnabledIds.length > 0) { + const selectionForNewServers = normalizeSessionToolingSelection({ + enabledMcpServerIds: newlyEnabledIds, + enabledLspProfileIds: [], + }); + void this.probeAndAuthenticateHttpMcpServers( + sessionId, + resolveProjectToolingSettings(workspace.settings, project.discoveredTooling), + selectionForNewServers, + ); + } return result; }