{"repo":"NousResearch/hermes-agent","public_id":"111887","display_label":"SSE keepalive frames wrongly treated as fatal errors","summary":"A bug where contentless SSE keepalive frames (bare `data:` or `event: ping`) trigger a JSONDecodeError that is mishandled as a fatal provider stream error, killing the turn. The fix makes the agent retry without streaming instead of terminating.","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":112183,"merged_at":"2026-09-16T01:18:09+00:00"},"resolution":{"state":"resolved","by":"pr-112183"},"freshness":{"state":"verified","last_verified_at":"2026-09-16T01:18:09+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":111887,"pr_number":112183,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-16T01:18:09+00:00"}],"members":[{"kind":"issue","number":111887,"title":"[Bug]: Contentless SSE frame (bare `data:` / `event: ping`) kills the turn — empty `JSONDecodeError.doc` reported as a fatal provider stream error","url":null,"state":"closed"},{"kind":"pr","number":111888,"title":"fix(agent): contentless SSE keepalive frames retry without streaming","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"eba9b5551c","number":0},{"kind":"pr","value":"#112183","number":112183}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":112183,"title":"fix(agent): contentless SSE keepalive frames retry without streaming instead of killing the turn (#111887, salvage #111888)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/chat_completion_helpers.py","agent/error_classifier.py","tests/agent/test_run_agent.py","tests/agent/test_streaming.py","website/docs/user-guide/configuration.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}