{"repo":"NousResearch/hermes-agent","public_id":"62891","display_label":"blocking launchctl-based gateway restart loops on macOS","summary":"These issues and fixes address a macOS-specific vulnerability where the gateway lifecycle guard can be bypassed using launchctl submit or similar launchd mechanisms, causing infinite restart loops. The work focuses on detecting and blocking these persistent self-restart paths within the guard.","subsystem":"cron","counts":{"members":6,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":4},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":75972},"resolution":{"state":"resolved","by":"pr-75972"},"freshness":{"state":"verified","last_verified_at":"2026-08-01T17:52:09+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.3333333333333333},"fix_edges":[{"issue_number":62891,"pr_number":75972,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":62891,"title":"macOS gateway lifecycle guard can be bypassed via launchctl submit, creating an infinite restart loop","url":null,"state":"closed"},{"kind":"pr","number":51003,"title":"fix(gateway): block launchd restart helper loops","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#62891","number":62891}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":62896,"title":"fix(gateway): block launchctl submit in the gateway lifecycle guard","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#62891","number":62891}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":63272,"title":"fix: block persistent gateway self-restart jobs","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#62891","number":62891}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":75557,"title":"fix(terminal): block launchctl submit inside gateway","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"9aefd62eba5c","number":0},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#20489","number":20489},{"kind":"pr","value":"#56517","number":56517},{"kind":"pr","value":"#57305","number":57305},{"kind":"pr","value":"#58289","number":58289},{"kind":"pr","value":"#20489","number":20489},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#56517","number":56517},{"kind":"pr","value":"#57305","number":57305},{"kind":"pr","value":"#58289","number":58289},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#20489","number":20489},{"kind":"pr","value":"#56517","number":56517},{"kind":"pr","value":"#57305","number":57305},{"kind":"pr","value":"#58289","number":58289},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#20489","number":20489},{"kind":"pr","value":"#56517","number":56517},{"kind":"pr","value":"#57305","number":57305},{"kind":"pr","value":"#58289","number":58289},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#15803","number":15803},{"kind":"pr","value":"#14532","number":14532},{"kind":"pr","value":"#6","number":6},{"kind":"pr","value":"#1","number":1},{"kind":"pr","value":"#9","number":9},{"kind":"pr","value":"#374151","number":374151},{"kind":"pr","value":"#4338","number":4338},{"kind":"pr","value":"#62891","number":62891},{"kind":"pr","value":"#51003","number":51003},{"kind":"pr","value":"#62896","number":62896},{"kind":"pr","value":"#63272","number":63272},{"kind":"pr","value":"#75557","number":75557},{"kind":"pr","value":"#75972","number":75972}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":75972,"title":"fix(guard): block launchctl submit/bootstrap and wrapped-script gateway restarts","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cron/lifecycle_guard.py","tests/hermes_cli/test_gateway_restart_loop.py","tools/terminal_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}