{"record":{"id":"6ee15f4f7acc1161","repo":"openclaw/openclaw","slug":"relay-did-not-negotiate-browser-relay-authenticati","errorCode":null,"errorMessage":"relay did not negotiate Browser Relay Authentication v2","messagePattern":"relay did not negotiate Browser Relay Authentication v2","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"extensions/browser/chrome-extension/modules/relay-connection.js","lineNumber":30,"sourceCode":"  isCurrent,\n  onAuthenticated,\n  onApplicationMessage,\n  onAuthenticationFailure,\n  onClose,\n}) {\n  const authClientPromise = createExtensionRelayAuthClient({ token, relayUrl });\n  const ws = new WebSocket(relayUrl, buildRelayWsProtocols());\n  let authenticated = false;\n\n  ws.addEventListener(\"open\", () => {\n    void (async () => {\n      try {\n        if (!isCurrent(ws)) {\n          ws.close();\n          return;\n        }\n        if (ws.protocol !== EXTENSION_RELAY_V2_PROTOCOL) {\n          throw new Error(\"relay did not negotiate Browser Relay Authentication v2\");\n        }\n        const authClient = await authClientPromise;\n        ws.send(JSON.stringify(authClient.start()));\n      } catch (error) {\n        onAuthenticationFailure(ws, error);\n      }\n    })();\n  });\n\n  let messageChain = Promise.resolve();\n  ws.addEventListener(\"message\", (event) => {\n    messageChain = messageChain.then(async () => {\n      try {\n        if (!isCurrent(ws)) {\n          return;\n        }\n        const raw = String(event.data);\n        if (authenticated) {","sourceCodeStart":12,"sourceCodeEnd":48,"githubUrl":"https://github.com/openclaw/openclaw/blob/01804a75319da4b69c9ab98ceaa30477e22b8c0b/extensions/browser/chrome-extension/modules/relay-connection.js#L12-L48","documentation":"Error \"relay did not negotiate Browser Relay Authentication v2\" thrown in openclaw/openclaw.","triggerScenarios":"Thrown at extensions/browser/chrome-extension/modules/relay-connection.js:30 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01804a75319da4b69c9ab98ceaa30477e22b8c0b","analyzedAt":"2026-08-12T04:37:58.197Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}