{"repo":"NousResearch/hermes-agent","public_id":"7018","display_label":"Dashboard API auth and header case bugs","summary":"Multiple issues and fixes centered on dashboard API authentication failures (401/404 errors) and header case sensitivity problems, particularly in rate limit parsing and session token lookup. Related fixes touch Kanban board loading, OAuth gating, and SPA token refresh behavior.","subsystem":"agent","counts":{"members":10,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":6,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":7174},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-10T12:33:48+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.13688888888888892},"fix_edges":[{"issue_number":7018,"pr_number":7174,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":7024,"pr_number":7174,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":7058,"pr_number":7174,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":7018,"title":"bug: parse_rate_limit_headers silently returns all-zero buckets for non-lowercase header keys","url":null,"state":"closed"},{"kind":"issue","number":16726,"title":"Dashboard: /api/skills returns 401 Unauthorized on v0.11+ (header case mismatch)","url":null,"state":"closed"},{"kind":"issue","number":24186,"title":"Hermes update broke Kanban — 401 Unauthorized on board load","url":null,"state":"closed"},{"kind":"issue","number":25275,"title":"[BUG] Analytics dashboard API returns 401 Unauthorized after v0.13.0 update","url":null,"state":"closed"},{"kind":"issue","number":29183,"title":"[bug]: hardcoded \"***\" session token","url":null,"state":"closed"},{"kind":"issue","number":46205,"title":"[Bug]: Kanban dashboard fails to load with 404 \"No such API endpoint: /api/plugins/kanban/board\" despite plugin being registered","url":null,"state":"closed"},{"kind":"pr","number":7019,"title":"fix: normalize headers to lowercase in parse_rate_limit_headers","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#7174","number":7174}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":7174,"title":"fix: four small CLI/config fixes (Bucket K salvage)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/rate_limit_tracker.py","agent/smart_model_routing.py","cli.py","hermes_cli/gateway.py"]},{"kind":"pr","number":16758,"title":"fix(dashboard): normalize session header lookup to lowercase","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#16726","number":16726},{"kind":"pr","value":"#16726","number":16726}],"category":"wontfix_bydesign","implication":"wontfix"},"merged":false},{"kind":"pr","number":46398,"title":"fix(kanban): keep dashboard API mounted without multipart","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"c661634537a600a411c0371accf862e7bce5029f","number":0},{"kind":"pr","value":"#46205","number":46205}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}