{"repo":"NousResearch/hermes-agent","public_id":"79178","display_label":"surrogateescape handling in local file write paths","summary":"These items concern a bug where surrogate-escaped bytes cause failures during local environment file writes. The work involves making file writes surrogateescape-safe while rejecting genuinely unencodable surrogates.","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":81964},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"verified","last_verified_at":"2026-08-08T19:31:19+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":79178,"pr_number":81964,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":80366,"pr_number":81964,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false}],"members":[{"kind":"issue","number":79178,"title":"[Bug]: surrogateescape content fails in the real LocalEnvironment write path","url":null,"state":"closed"},{"kind":"pr","number":79218,"title":"fix(tools): preserve surrogateescape bytes in local writes","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#79234","number":79234}],"category":"superseded_by_pr","implication":"superseded"},"merged":false},{"kind":"pr","number":79234,"title":"fix: surrogateescape-safe file writes, reject unencodable surrogates (#79178)","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":79240,"title":"fix: surrogateescape-safe file writes, reject unencodable surrogates (#79178)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#81964","number":81964}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":81964,"title":"fix(agent,gateway): lone-surrogate chokepoints \\u2014 sanitize once at model-text exit and outbound assembly","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/conversation_loop.py","agent/turn_finalizer.py","contributors/emails/[redacted:email]","gateway/run.py","hermes_cli/oneshot.py","tests/agent/test_surrogate_chokepoints.py","tests/hermes_cli/test_oneshot_surrogate.py","tests/tools/test_file_write_surrogate_roundtrip.py","tests/tools/test_process_registry_write_stdin_surrogates.py","tools/environments/base.py","tools/file_operations.py","tools/process_registry.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}