{"repo":"NousResearch/hermes-agent","public_id":"130277","display_label":"Desktop loopback origin fix for remote gateway connections","summary":"A bug introduced by earlier changes broke Desktop's ability to connect to remote backends by failing WebSocket origin checks for loopback renderer origins. These members address the issue through fixes and a revert.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":130852,"merged_at":"2026-10-01T20:00:21+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-10-01T20:00:21+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":130277,"pr_number":130852,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-10-01T20:00:21+00:00"},{"issue_number":130535,"pr_number":130852,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-10-01T20:00:21+00:00"},{"issue_number":130635,"pr_number":130852,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-10-01T20:00:21+00:00"},{"issue_number":130710,"pr_number":130852,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-10-01T20:00:21+00:00"},{"issue_number":130730,"pr_number":130852,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-10-01T20:00:21+00:00"}],"members":[{"kind":"issue","number":130277,"title":"[Bug]: Desktop can't connect to a remote gateway since #127201: loopback renderer origin fails /api/ws Origin check","url":null,"state":"closed"},{"kind":"pr","number":130280,"title":"fix(desktop): accept loopback renderer origin for authenticated gateways","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"03477e9ae2","number":0},{"kind":"pr","value":"#130852","number":130852},{"kind":"pr","value":"#127201","number":127201}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":130819,"title":"fix(dashboard): accept loopback renderer origin for authenticated WS upgrades","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"03477e9ae2","number":0},{"kind":"pr","value":"#130852","number":130852},{"kind":"pr","value":"#127201","number":127201}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":130852,"title":"revert: Desktop connects to remote backends and keeps its settings again (reverts #127201, #130015, #128552)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/embed-referer.test.ts","apps/desktop/electron/embed-referer.ts","apps/desktop/electron/main.ts","apps/desktop/electron/remote-ws-headers.ts","apps/desktop/electron/renderer-server.test.ts","apps/desktop/electron/renderer-server.ts","apps/desktop/electron/renderer-url.test.ts","apps/desktop/electron/renderer-url.ts","apps/desktop/src/app/chat/close-tab.test.ts","apps/desktop/src/app/chat/preview-tile.test.ts","apps/desktop/src/app/chat/preview-tile.tsx","apps/desktop/src/app/model-picker-overlay.test.tsx","apps/desktop/src/app/session/hooks/use-session-actions/index.ts","apps/desktop/src/app/shell/hooks/use-statusbar-items.test.tsx","apps/desktop/src/components/assistant-ui/embeds/embed-consent.tsx","apps/desktop/src/components/assistant-ui/embeds/providers/detect.test.ts","apps/desktop/src/components/assistant-ui/embeds/providers/types.ts","apps/desktop/src/components/assistant-ui/embeds/providers/youtube.ts","apps/desktop/src/components/assistant-ui/embeds/url-embed.tsx","apps/desktop/src/components/assistant-ui/embeds/youtube-embed.test.ts","apps/desktop/src/components/assistant-ui/embeds/youtube-embed.tsx","apps/desktop/src/i18n/ar_artifacts.ts","apps/desktop/src/i18n/en.ts","apps/desktop/src/i18n/ja.ts","apps/desktop/src/i18n/types.ts","apps/desktop/src/i18n/zh-hant_artifacts.ts","apps/desktop/src/i18n/zh.ts","apps/desktop/src/sdk/open-session-refresh-in-place.test.ts","apps/desktop/src/sdk/profile-routing.test.ts","apps/desktop/src/store/preview.test.ts","apps/desktop/src/store/preview.ts","apps/desktop/src/store/session-focus.ts","apps/desktop/src/store/session-states.ts","apps/desktop/src/themes/backend-sync.test.ts","apps/desktop/src/themes/backend-sync.ts","apps/desktop/src/themes/context.test.tsx","apps/desktop/src/themes/context.tsx","apps/desktop/src/themes/use-skin-command.ts","locales/_keys.desktop.json"]}],"trust":{"default_tier":"verified","includes_suggested":false}}