{"repo":"NousResearch/hermes-agent","public_id":"103054","display_label":"Fix stale session token causing 401 errors in Dashboard","summary":"These items address a bug where the Dashboard served a stale, import-time copy of the session token instead of the live value, causing repeated 401 errors on authenticated API calls when using SSH session token files. The fix ensures the live token is used for each request.","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":103614,"merged_at":"2026-09-05T11:00:36+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-05T11:00:36+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":102930,"pr_number":103614,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-05T11:00:36+00:00"},{"issue_number":103001,"pr_number":103614,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T11:00:36+00:00"},{"issue_number":103054,"pr_number":103614,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T11:00:36+00:00"},{"issue_number":103366,"pr_number":103614,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T11:00:36+00:00"},{"issue_number":103454,"pr_number":103614,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-05T11:00:36+00:00"}],"members":[{"kind":"issue","number":103054,"title":"Dashboard serves a stale session token after --ssh-session-token-file; Desktop gets 401 on every non-public /api call","url":null,"state":"closed"},{"kind":"pr","number":103040,"title":"fix(dashboard): serve the live session token, not an import-time copy","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"d77a62e840","number":0},{"kind":"pr","value":"#102930","number":102930},{"kind":"pr","value":"#102931","number":102931},{"kind":"pr","value":"#103614","number":103614},{"kind":"pr","value":"#102948","number":102948}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":103614,"title":"fix(dashboard): Desktop-over-SSH handshake serves the live session token, ending the 401 loop (#102930, salvage #102948)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","hermes_cli/web_server_dashboard.py","tests/hermes_cli/test_web_server.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}