{"repo":"NousResearch/hermes-agent","public_id":"65939","display_label":"Fix webhook/gateway replies routing to wrong profile","summary":"These issues and fixes address a bug where webhook replies and gateway callbacks are delivered through the wrong profile's adapter instead of the originating profile. The changes ensure reply routing stays scoped to the correct profile context.","subsystem":"gateway","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":107626,"merged_at":"2026-09-11T01:16:44+00:00"},"resolution":{"state":"resolved","by":"pr-107626"},"freshness":{"state":"verified","last_verified_at":"2026-09-11T01:16:44+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":65939,"pr_number":107626,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T01:16:44+00:00"},{"issue_number":84266,"pr_number":107626,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-11T01:16:44+00:00"}],"members":[{"kind":"issue","number":65939,"title":"Profiled webhooks can send replies through the wrong profile","url":null,"state":"closed"},{"kind":"pr","number":65944,"title":"fix(webhook): preserve profile-scoped reply delivery","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"c3e01c753dc","number":0},{"kind":"pr","value":"#107626","number":107626},{"kind":"pr","value":"#65939","number":65939}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":65957,"title":"fix(webhook): use profile-specific adapter and home channel for reply delivery","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"c3e01c753dc","number":0},{"kind":"pr","value":"#107626","number":107626},{"kind":"pr","value":"#65944","number":65944},{"kind":"pr","value":"#65939","number":65939}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":107626,"title":"fix(gateway): /p/<profile>/ webhook replies and api_server callbacks stay on the routed profile (#65939, #84266, salvage #65944/#103041/#67147)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["gateway/platforms/api_server.py","gateway/platforms/webhook.py","tests/gateway/test_webhook_adapter.py","tests/gateway/test_webhook_deliver_only.py","tests/gateway/test_webhook_integration.py","tests/gateway/test_webhook_profile_egress.py","website/docs/user-guide/multi-profile-gateways.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}