{"repo":"NousResearch/hermes-agent","public_id":"113799","display_label":"Sanitize lone surrogates in outbound message payloads","summary":"Multiple fixes addressing lone surrogate characters causing encoding errors or silent drops in outbound send paths, spanning tools and Feishu integrations. Changes apply sanitization at various points in the outbound payload pipeline.","subsystem":null,"counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":114847},"resolution":{"state":"resolved","by":"pr-114847"},"freshness":{"state":"verified","last_verified_at":"2026-09-18T17:02:31+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":113799,"pr_number":114847,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":113799,"title":"fix(feishu): outbound send raises UnicodeEncodeError on lone surrogates — sanitizer applied on CLI paths only","url":null,"state":"closed"},{"kind":"pr","number":113809,"title":"fix(tools): scrub lone surrogates from the outbound send body","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"0f76689076cb","number":0},{"kind":"pr","value":"#114847","number":114847},{"kind":"pr","value":"#114847","number":114847},{"kind":"pr","value":"#113799","number":113799},{"kind":"pr","value":"#113809","number":113809},{"kind":"pr","value":"#113799","number":113799}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":113810,"title":"fix(feishu): sanitize lone surrogates in outbound payloads","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"0f76689076cb","number":0},{"kind":"pr","value":"#114847","number":114847},{"kind":"pr","value":"#114847","number":114847},{"kind":"pr","value":"#113799","number":113799},{"kind":"pr","value":"#113809","number":113809},{"kind":"pr","value":"#113799","number":113799}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":113811,"title":"fix(feishu): sanitize lone surrogates on the outbound send path","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#113810","number":113810},{"kind":"pr","value":"#113799","number":113799}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":114847,"title":"fix(tools): hermes send and send_message deliver text with lone surrogates instead of dropping it (#113799, salvage #113809)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["tests/tools/test_send_message_surrogate_sanitization.py","tools/send_message_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}