{"repo":"NousResearch/hermes-agent","public_id":"102504","display_label":"Shell hooks missing from serve/dashboard startup paths","summary":"A bug where shell hooks defined in config.yaml were not being registered when running the serve or dashboard commands, because the startup preparation logic skipped those code paths. Multiple fixes address hook registration across serve, desktop, and CLI entrypoints.","subsystem":"hermes_cli","counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":2,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":104870,"merged_at":"2026-09-07T11:55:49+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-09-07T11:55:49+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":67053,"pr_number":104870,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T11:55:49+00:00"},{"issue_number":83980,"pr_number":104870,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T11:55:49+00:00"},{"issue_number":102504,"pr_number":104870,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T11:55:49+00:00"},{"issue_number":102681,"pr_number":104870,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-07T11:55:49+00:00"}],"members":[{"kind":"issue","number":102504,"title":"Shell hooks from config.yaml never register in `hermes serve` (desktop backend) — _prepare_agent_startup skips the \"serve\" command","url":null,"state":"closed"},{"kind":"pr","number":102513,"title":"fix(hooks): register config hooks for serve","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#69832","number":69832},{"kind":"pr","value":"#61806","number":61806},{"kind":"pr","value":"#69825","number":69825},{"kind":"pr","value":"#102504","number":102504},{"kind":"pr","value":"#85225","number":85225},{"kind":"pr","value":"#92655","number":92655},{"kind":"pr","value":"#102151","number":102151},{"kind":"pr","value":"#102521","number":102521}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":102521,"title":"fix(cli): register config shell hooks on serve and dashboard startup","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"106dba07008794c516b0a251ff42005625c2ad79","number":0},{"kind":"commit","value":"63279301bcbdc185c1b07b98a9312eb0c862f26d","number":0},{"kind":"pr","value":"#102504","number":102504},{"kind":"pr","value":"#69825","number":69825},{"kind":"pr","value":"#61806","number":61806},{"kind":"pr","value":"#69832","number":69832},{"kind":"pr","value":"#81409","number":81409},{"kind":"pr","value":"#61844","number":61844},{"kind":"pr","value":"#70461","number":70461},{"kind":"pr","value":"#102513","number":102513}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":102665,"title":"fix(serve): register shell hooks on the serve command path","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"3094cde5138","number":0},{"kind":"pr","value":"#104870","number":104870},{"kind":"pr","value":"#69825","number":69825},{"kind":"pr","value":"#57020","number":57020},{"kind":"pr","value":"#69832","number":69832},{"kind":"pr","value":"#102691","number":102691}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":104870,"title":"fix(desktop): configured shell hooks run for chat agents","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["evals/desktop_bug_campaign/hooks_live.py","tests/tui_gateway/test_profile_shell_hooks.py","tui_gateway/server.py","website/docs/user-guide/features/hooks.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}