{"repo":"NousResearch/hermes-agent","public_id":"18106","display_label":"IMAP email fetch: unread state and payload bugs","summary":"These issues and fixes address two related IMAP problems in the email gateway: fetching messages with RFC822 inadvertently marks them as read (fixed by switching to BODY.PEEK[]), and FETCH responses containing non-bytes payloads cause decode crashes (fixed by guarding against malformed responses).","subsystem":"gateway","counts":{"members":17,"open_issues":3,"open_issues_distinct":3,"open_prs":6,"closed_issues":1,"merged_prs":0,"attempt_prs":13},"landed_fix":null,"resolution":{"state":"unresolved","by":null},"freshness":{"state":"never_verified","last_verified_at":null,"is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.12823529411764703},"fix_edges":[],"members":[{"kind":"issue","number":18106,"title":"[Bug]: [Email] IMAP fetch error: 'int' object has no attribute 'decode'","url":null,"state":"open"},{"kind":"issue","number":41340,"title":"[Bug] email: IMAP UID FETCH crashes with 'int object has no attribute decode' on bytes-shaped responses","url":null,"state":"open"},{"kind":"issue","number":42997,"title":"Email gateway IMAP polling marks unread Gmail messages as read","url":null,"state":"open"},{"kind":"issue","number":48527,"title":"Email gateway marks messages as read (IMAP \\Seen) when fetching","url":null,"state":"closed"},{"kind":"pr","number":12498,"title":"fix(email): guard IMAP FETCH response against non-bytes payloads","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"88bd1c01e1956ef6ed35ac6cce00e02ec7cf29bb","number":0},{"kind":"pr","value":"#56956","number":56956}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":18146,"title":"fix(email): guard IMAP FETCH response against non-bytes payloads","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"88bd1c01e1956ef6ed35ac6cce00e02ec7cf29bb","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":18337,"title":"fix: resolve 7 identified issues [automated]","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"88bd1c01e","number":0},{"kind":"commit","value":"9caa12f4e","number":0}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":41382,"title":"fix(email): use BODY.PEEK[] instead of RFC822 for IMAP UID FETCH","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#41395","number":41395},{"kind":"pr","value":"#41382","number":41382},{"kind":"pr","value":"#41395","number":41395}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":41395,"title":"fix(email): use BODY.PEEK[] for IMAP fetch (#41340)","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#42997","number":42997}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":41486,"title":"fix(email): use BODY.PEEK[] for IMAP fetch and handle missing body literal (#41340)","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":43002,"title":"fix(email): use BODY.PEEK[] to avoid marking messages as read","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#41395","number":41395},{"kind":"pr","value":"#41395","number":41395}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":43016,"title":"fix(email): use BODY.PEEK[] in IMAP fetch to preserve unread state","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#43018","number":43018},{"kind":"pr","value":"#43018","number":43018},{"kind":"pr","value":"#42997","number":42997},{"kind":"pr","value":"#43018","number":43018}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":43017,"title":"fix(email): use BODY.PEEK[] to avoid marking messages as read on Gmail","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#43016","number":43016},{"kind":"pr","value":"#43018","number":43018}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":43018,"title":"fix(gateway/email): use BODY.PEEK[] instead of RFC822 to avoid marking messages as read","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#60637","number":60637}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":43032,"title":"fix(email): use BODY.PEEK[] to avoid marking messages as read on IMAP fetch","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#43017","number":43017},{"kind":"pr","value":"#43018","number":43018},{"kind":"pr","value":"#43002","number":43002},{"kind":"pr","value":"#42997","number":42997}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":48224,"title":"fix(email): use BODY.PEEK[] by default, configurable via platforms.email.imap_peek","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"66605471e9","number":0},{"kind":"commit","value":"d3bf9f71f738b43626aac0593b59b72989b414b7","number":0},{"kind":"commit","value":"7b3a138f4b","number":0}],"category":"partial_fix","implication":"needs_llm"},"merged":false},{"kind":"pr","number":72783,"title":"fix(email): preserve unread state during IMAP polling","url":null,"state":"open","close_reason":{"refs":[{"kind":"pr","value":"#48224","number":48224}],"category":"duplicate_of","implication":"duplicate"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}