{"repo":"NousResearch/hermes-agent","public_id":"130730","display_label":"Remote WebSocket origin mismatch fix for desktop","summary":"These items address a 403 origin mismatch error occurring when the desktop packaged renderer connects to remote dashboards via WebSocket. They include the bug report, a revert of related changes, and a targeted fix to allow the packaged renderer origin.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"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.6666666666666666},"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":130730,"title":"Desktop: packaged renderer on http://127.0.0.1:47891 breaks WebSocket to remote dashboards (origin_mismatch 403)","url":null,"state":"closed"},{"kind":"pr","number":130732,"title":"fix(web): allow packaged renderer origin for remote websockets","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}}