{"repo":"NousResearch/hermes-agent","public_id":"93888","display_label":"Desktop gateway routing and session identity across local/remote connections","summary":"Most members are desktop fixes and one bug report about keeping connection and route identity correct when switching gateways or resuming sessions, including SSH remote gateways and a local runtime ID being sent to a remote gateway. The shared theme is plausible, but the titles do not show the status or outcome of any of these changes.","subsystem":"apps/desktop","counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":3,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":99697,"merged_at":"2026-08-31T19:17:32+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-08-31T19:17:32+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":68594,"pr_number":95080,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T05:51:32+00:00"},{"issue_number":81094,"pr_number":95080,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T05:51:32+00:00"},{"issue_number":93888,"pr_number":95080,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T05:51:32+00:00"},{"issue_number":93888,"pr_number":99672,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-31T18:58:55+00:00"},{"issue_number":93888,"pr_number":99697,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-31T19:17:32+00:00"},{"issue_number":93937,"pr_number":95080,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-08-26T05:51:32+00:00"},{"issue_number":94162,"pr_number":95080,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T05:51:32+00:00"},{"issue_number":96742,"pr_number":99697,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-31T19:17:32+00:00"}],"members":[{"kind":"issue","number":93888,"title":"[Bug]: Current Desktop sends a local runtime ID to a Remote Gateway and cannot restore stored sessions","url":null,"state":"closed"},{"kind":"pr","number":95080,"title":"fix(desktop): gateway switches, primary reuse, and session routing hold exact route identity (multi-gateway class 1, tracker #94724)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/main.ts","apps/desktop/electron/profile-session-routing.test.ts","apps/desktop/electron/profile-session-routing.ts","apps/desktop/src/app/contrib/wiring.tsx","apps/desktop/src/app/gateway/hooks/use-gateway-boot.test.tsx","apps/desktop/src/app/gateway/hooks/use-gateway-boot.ts","apps/desktop/src/app/session/hooks/use-hermes-config.test.ts","apps/desktop/src/app/session/hooks/use-hermes-config.ts","apps/desktop/src/app/session/hooks/use-prompt-actions/index.test.tsx","apps/desktop/src/app/session/hooks/use-prompt-actions/index.ts","apps/desktop/src/app/session/hooks/use-route-resume.test.tsx","apps/desktop/src/app/session/hooks/use-route-resume.ts","apps/desktop/src/app/session/hooks/use-session-actions.test.tsx","apps/desktop/src/app/session/hooks/use-session-actions/index.ts","apps/desktop/src/app/session/hooks/use-session-list-actions.test.tsx","apps/desktop/src/app/session/hooks/use-session-list-actions.ts","apps/desktop/src/lib/json-rpc-gateway-recovery.test.ts","apps/desktop/src/lib/with-timeout.test.ts","apps/desktop/src/lib/with-timeout.ts","apps/desktop/src/store/connections.test.ts","apps/desktop/src/store/connections.ts","apps/desktop/src/store/gateway-connection-lifecycle.test.ts","apps/desktop/src/store/gateway-connection-scope.test.ts","apps/desktop/src/store/gateway-profile-request.test.ts","apps/desktop/src/store/gateway-shared-remote.test.ts","apps/desktop/src/store/gateway-switch.test.ts","apps/desktop/src/store/gateway-switch.ts","apps/desktop/src/store/gateway.test.ts","apps/desktop/src/store/gateway.ts","apps/desktop/src/store/profile-agent-activation.test.ts","apps/desktop/src/store/profile-select-source.test.ts","apps/desktop/src/store/profile-switch-failure.test.ts","apps/desktop/src/store/profile.ts","apps/desktop/src/store/session.test.ts","apps/desktop/src/store/session.ts","apps/shared/src/json-rpc-gateway.ts","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]"]},{"kind":"pr","number":99672,"title":"fix(desktop): keep primary SSH session resumes remote (salvage #96895)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/src/app/contrib/wiring.tsx","apps/desktop/src/store/session.test.ts","apps/desktop/src/store/session.ts"]},{"kind":"pr","number":99697,"title":"fix(desktop): heal v1 SSH gateway routes into the v2 connections registry","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/connection-registry.test.ts","apps/desktop/electron/connection-registry.ts"]},{"kind":"pr","number":103307,"title":"fix(desktop): invalidate warm-cache runtime bindings on connection switch (#93888)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#96595","number":96595},{"kind":"pr","value":"#93888","number":93888},{"kind":"pr","value":"#95080","number":95080},{"kind":"pr","value":"#99672","number":99672},{"kind":"pr","value":"#99697","number":99697}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}