diff --git a/src/lib/components/chat/Chat.svelte b/src/lib/components/chat/Chat.svelte index 17bd5e3dd..8e5c81f58 100644 --- a/src/lib/components/chat/Chat.svelte +++ b/src/lib/components/chat/Chat.svelte @@ -1177,6 +1177,15 @@ .filter((id) => id); } + // Restore tool selection after OAuth redirect + const pendingToolId = sessionStorage.getItem('pendingOAuthToolId'); + if (pendingToolId) { + sessionStorage.removeItem('pendingOAuthToolId'); + if (!selectedToolIds.includes(pendingToolId)) { + selectedToolIds = [...selectedToolIds, pendingToolId]; + } + } + if ($page.url.searchParams.get('call') === 'true') { showCallOverlay.set(true); showControls.set(true); diff --git a/src/lib/components/chat/MessageInput/IntegrationsMenu.svelte b/src/lib/components/chat/MessageInput/IntegrationsMenu.svelte index 82c78c85f..365912215 100644 --- a/src/lib/components/chat/MessageInput/IntegrationsMenu.svelte +++ b/src/lib/components/chat/MessageInput/IntegrationsMenu.svelte @@ -339,6 +339,9 @@ let parts = toolId.split(':'); let serverId = parts?.at(-1) ?? toolId; + // Persist the tool ID so we can re-enable it after OAuth redirect + sessionStorage.setItem('pendingOAuthToolId', toolId); + const authUrl = getOAuthClientAuthorizationUrl(serverId, 'mcp'); window.open(authUrl, '_self', 'noopener'); } else {