diff --git a/packages/app/src/components/terminal.tsx b/packages/app/src/components/terminal.tsx index 0a5a7d2d3e..31c046c4f9 100644 --- a/packages/app/src/components/terminal.tsx +++ b/packages/app/src/components/terminal.tsx @@ -174,6 +174,7 @@ export const Terminal = (props: TerminalProps) => { const auth = server.current?.http const username = auth?.username ?? "opencode" const password = auth?.password ?? "" + const sameOrigin = new URL(url, location.href).origin === location.origin let container!: HTMLDivElement const [local, others] = splitProps(props, ["pty", "class", "classList", "autoFocus", "onConnect", "onConnectError"]) const id = local.pty.id @@ -519,8 +520,11 @@ export const Terminal = (props: TerminalProps) => { next.searchParams.set("directory", directory) next.searchParams.set("cursor", String(seek)) next.protocol = next.protocol === "https:" ? "wss:" : "ws:" - next.username = username - next.password = password + if (!sameOrigin && password) { + // For same-origin requests, let the browser reuse the page's existing auth. + next.username = username + next.password = password + } const socket = new WebSocket(next) socket.binaryType = "arraybuffer"