{"repo":"NousResearch/hermes-agent","public_id":"25935","display_label":"Image attachment routing and format validation fixes","summary":"Multiple fixes addressing incorrect routing of non-image attachments as images in Discord and Telegram gateways, plus validation and transcoding of image formats before sending to vision/responses APIs. Includes magic-byte MIME sniffing and handling of unsupported image formats.","subsystem":"agent","counts":{"members":10,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":2,"attempt_prs":5},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":53923},"resolution":{"state":"partially_resolved","by":"pr-53923,pr-115811"},"freshness":{"state":"verified","last_verified_at":"2026-09-19T16:56:13+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.17955555555555555},"fix_edges":[{"issue_number":25935,"pr_number":53923,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":29711,"pr_number":115811,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":25935,"title":"Discord image attachments fail with HTTP 400 'Could not process image' when mixed with documents, or when format isn't PNG/JPEG/GIF/WEBP","url":null,"state":"closed"},{"kind":"issue","number":29711,"title":"Discord mixed attachments can send non-image data URLs as input_image, causing Responses 400 invalid image","url":null,"state":"closed"},{"kind":"issue","number":50793,"title":"Discord gateway routes non-image attachments as images and lacks graceful large-video fallback","url":null,"state":"closed"},{"kind":"pr","number":25936,"title":"fix(gateway,image-routing): stop cross-routing docs as images + transcode uncommon formats","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#53923","number":53923}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":26409,"title":"fix(gateway): keep Discord docs out of photo vision routing","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#53923","number":53923}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":29752,"title":"fix(codex-responses): drop mismatched data:image input parts (#29711)","url":null,"state":"closed","close_reason":{"category":"implemented_elsewhere","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":29848,"title":"fix: validate magic bytes on data:image URLs before sending to Vision providers (issue #29711)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"505bc27d8","number":0}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":47299,"title":"fix: downgrade unsupported Codex image data URLs","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":53923,"title":"fix(gateway): classify mixed attachments per-attachment + transcode uncommon image formats","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/image_routing.py","gateway/run.py","scripts/release.py","tests/agent/test_image_routing.py","tests/gateway/test_mixed_attachment_routing.py"]},{"kind":"pr","number":115811,"title":"fix(codex): an unsupported inline image (SVG) no longer 400s the whole Responses request or wedges the session (#29711, salvage #47299)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/anthropic_message_convert.py","agent/codex_responses_adapter.py","tests/agent/test_anthropic_adapter.py","tests/agent/test_codex_responses_adapter.py","tools/vision_tools_image_prep.py","website/docs/user-guide/features/vision.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}