diff --git a/src/lib/components/AddTerminalServerModal.svelte b/src/lib/components/AddTerminalServerModal.svelte index e7c0236eb6..82c449f71b 100644 --- a/src/lib/components/AddTerminalServerModal.svelte +++ b/src/lib/components/AddTerminalServerModal.svelte @@ -199,6 +199,8 @@ // Remove trailing slash url = url.replace(/\/$/, ''); + // Bearer key whitespace breaks the terminal WebSocket auth (HTTP headers strip it, JSON doesn't) + key = key.trim(); // Save policy to orchestrator if applicable if (serverType === 'orchestrator' && !direct && policyId) { diff --git a/src/lib/components/chat/XTerminal.svelte b/src/lib/components/chat/XTerminal.svelte index e16beef978..ce1eda9e89 100644 --- a/src/lib/components/chat/XTerminal.svelte +++ b/src/lib/components/chat/XTerminal.svelte @@ -106,7 +106,7 @@ ws.onopen = () => { // First-message auth (no token in URL) if (ws) { - ws.send(JSON.stringify({ type: 'auth', token: authToken })); + ws.send(JSON.stringify({ type: 'auth', token: authToken.trim() })); } connected = true; connecting = false;