{"repo":"NousResearch/hermes-agent","public_id":"25614","display_label":"Image attachments not forwarded to background agent tasks","summary":"The members appear to concern image attachments being dropped when using /btw or /background, so the background agent does not receive them. Two members are titled as gateway fixes to forward attachments, and one is a bug report; the titles alone do not show whether any change was merged or works.","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":25782,"merged_at":"2026-05-14T15:01:35+00:00"},"resolution":{"state":"resolved","by":"pr-25782"},"freshness":{"state":"verified","last_verified_at":"2026-05-14T15:01:35+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":25614,"pr_number":25782,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-05-14T15:01:35+00:00"}],"members":[{"kind":"issue","number":25614,"title":"[Bug]: /btw and /background drop image attachments — background agent never sees them","url":null,"state":"closed"},{"kind":"pr","number":25603,"title":"fix(gateway): forward image attachments to background agent tasks","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#25782","number":25782}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":25782,"title":"fix(gateway): forward image attachments to background agent tasks (#25603)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["gateway/run.py"],"fix_hunks":[{"file":"gateway/run.py","hunks":["@@ -10355,6 +10355,10 @@ async def _handle_background_command(self, event: MessageEvent) -> str:\n \n         event_message_id = self._reply_anchor_for_event(event)\n \n+        # Forward image/audio attachments so the background agent can see them.\n+        media_urls = list(event.media_urls) if event.media_urls else []\n+        media_types = list(event.media_types) if event.media_types else []\n+\n         # Fire-and-forget the background task\n         _task = asyncio.create_task(\n             self._run_background_task(","@@ -10362,6 +10366,8 @@ async def _handle_background_command(self, event: MessageEvent) -> str:\n                 source,\n                 task_id,\n                 event_message_id=event_message_id,\n+                media_urls=media_urls,\n+                media_types=media_types,\n             )\n         )\n         self._background_tasks.add(_task)","@@ -10376,10 +10382,15 @@ async def _run_background_task(\n         source: \"SessionSource\",\n         task_id: str,\n         event_message_id: Optional[str] = None,\n+        media_urls: Optional[List[str]] = None,\n+        media_types: Optional[List[str]] = None,\n     ) -> None:\n         \"\"\"Execute a background agent task and deliver the result to the chat.\"\"\"\n         from run_agent import AIAgent\n \n+        media_urls = media_urls or []\n+        media_types = media_types or []\n+\n         adapter = self.adapters.get(source.platform)\n         if not adapter:\n             logger.warning(\"No adapter for platform %s in background task %s\", source.platform, task_id)","@@ -10415,6 +10426,23 @@ async def _run_background_task(\n             self._service_tier = self._load_service_tier()\n             turn_route = self._resolve_turn_agent_config(prompt, model, runtime_kwargs)\n \n+            # Enrich the prompt with image descriptions so the background\n+            # agent can see user-attached images (same as the main flow).\n+            enriched_prompt = prompt\n+            if media_urls:\n+                image_paths = []\n+                for i, path in enumerate(media_urls):\n+                    mtype = media_types[i] if i < len(media_types) else \"\"\n+                    if mtype.startswith(\"image/\"):\n+                        image_paths.append(path)\n+                if image_paths:\n+                    try:\n+                        enriched_prompt = await self._enrich_message_with_vision(\n+                            prompt, image_paths,\n+                        )\n+                    except Exception as e:\n+                        logger.warning(\"Background task vision enrichment failed: %s\", e)\n+\n             def run_sync():\n                 agent = AIAgent(\n                     model=turn_route[\"model\"],","@@ -10446,7 +10474,7 @@ def run_sync():\n                 )\n                 try:\n                     return agent.run_conversation(\n-                        user_message=prompt,\n+                        user_message=enriched_prompt,\n                         task_id=task_id,\n                     )\n                 finally:\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}