{"repo":"NousResearch/hermes-agent","public_id":"90323","display_label":"Desktop auth token handling and session errors","summary":"These items address bugs and fixes related to desktop authentication, including OAuth ticket paths, native token decryption failures, and binding auth envelopes to their correct connections. All three concern how the desktop client manages and recovers from authentication state problems.","subsystem":"apps/desktop","counts":{"members":3,"open_issues":1,"open_issues_distinct":1,"open_prs":0,"closed_issues":0,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":95085,"merged_at":"2026-08-26T07:40:36+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-08-26T07:40:36+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":88494,"pr_number":95085,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-08-26T07:40:36+00:00"},{"issue_number":90323,"pr_number":95085,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T07:40:36+00:00"},{"issue_number":91668,"pr_number":95085,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T07:40:36+00:00"},{"issue_number":94119,"pr_number":95085,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T07:40:36+00:00"},{"issue_number":94246,"pr_number":95085,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-08-26T07:40:36+00:00"}],"members":[{"kind":"issue","number":90323,"title":"[Bug]: Desktop oauth ticket path vs basic-only dashboard reports session expired (safeStorage decrypt too)","url":null,"state":"open"},{"kind":"pr","number":90685,"title":"fix(desktop): treat ticket 401 as sign-in when native tokens are unreadable","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"25d46c788","number":0},{"kind":"pr","value":"#95085","number":95085},{"kind":"pr","value":"#94724","number":94724}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":95085,"title":"fix(desktop): auth envelopes and backend processes stay bound to their connection (multi-gateway classes 5+6, tracker #94724)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["apps/desktop/electron/connection-apply.test.ts","apps/desktop/electron/connection-apply.ts","apps/desktop/electron/connection-registry.test.ts","apps/desktop/electron/connection-registry.ts","apps/desktop/electron/main.ts","apps/desktop/electron/native-auth-decisions.test.ts","apps/desktop/electron/native-auth-decisions.ts","apps/desktop/electron/native-oauth.test.ts","apps/desktop/electron/native-oauth.ts","apps/desktop/electron/primary-backend-startup.test.ts","apps/desktop/electron/primary-backend-startup.ts","apps/desktop/electron/remote-lifecycle.test.ts","apps/desktop/electron/remote-lifecycle.ts","apps/desktop/electron/remote-ws-headers.test.ts","apps/desktop/electron/remote-ws-headers.ts","apps/desktop/electron/ssh-bootstrap-coordinator.test.ts","apps/desktop/electron/ssh-bootstrap-coordinator.ts","apps/desktop/src/app/gateway/hooks/use-gateway-boot.ts","apps/desktop/src/app/settings/gateway-settings.test.ts","apps/desktop/src/app/settings/gateway-settings.tsx","apps/desktop/src/components/boot-failure-overlay.test.tsx","apps/desktop/src/components/boot-failure-overlay.tsx","apps/desktop/src/global.d.ts","apps/desktop/src/store/gateway-connection-scope.test.ts","apps/desktop/src/store/gateway.ts","contributors/emails/[redacted:email]","contributors/emails/RaviTharuma@users.noreply.github.com","contributors/emails/[redacted:email]","contributors/emails/[redacted:email]"]}],"trust":{"default_tier":"verified","includes_suggested":false}}