Skip to content

[Bug]: Desktop GUI: Drag-and-drop image upload freezes the UI #63682

Description

@RodelRobel

Bug Description

Dragging an image into the chat input area in 'hermes desktop' causes the UI to freeze completely with no response.
Contrast: Manually pasting a file path (e.g. 'C:\Users\Administrator\Desktop\Lattice.png') works fine — 'vision_analyze' is called as a tool and the image is recognized correctly.
Main model: deepseek-v4-pro
Vision model: qwen3.5-plus (auxiliary)

Steps to Reproduce

  1. Launch 'hermes desktop'
  2. Drag any '.png' / '.jpg' image from File Explorer into the chat window
  3. UI freezes

Expected Behavior

It should read the picture with vision model and give response

Actual Behavior

The UI freeze(maybe with main model which do not have visual ability like deepseek)

Core error — vision model API incompatibility (resolved via image_routing)

2026-07-13 16:02:05,831 ERROR tools.vision_tools: Error analyzing image: 
Error code: 400 - {'error': {'message': 
"Failed to deserialize the JSON body into the target type: 
messages[0]: unknown variant `image_url`, expected `text` at line 1 column 56187", 
'type': 'invalid_request_error', 'param': None, 'code': 'invalid_request_error'}}

Traceback:
  File "tools/vision_tools.py", line 1253, in vision_analyze_tool
  File "agent/auxiliary_client.py", line 7431, in async_call_llm
  ...
openai.BadRequestError: Error code: 400 - 
  messages[0]: unknown variant `image_url`, expected `text`

### Affected Component

Agent Core (conversation loop, context compression, memory)

### Messaging Platform (if gateway-related)

_No response_

### Debug Report

```shell
Report       https://dpaste.com/8JSFCV7HG
agent.log    https://dpaste.com/HB3GA3XJS
gui.log      https://paste.rs/SsExo
desktop.log  https://paste.rs/KCKSG

Operating System

Windows 10

Python Version

No response

Hermes Version

0.18.2

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

  1. When a file is dropped, obtain the file's local absolute path
  2. Send the path as plain text over WebSocket to the backend (e.g. C:\Users\...\xxx.png)
  3. The backend's _detect_file_drop() will automatically detect, resolve, and route it to the correct image processing pipeline
  4. Currently, the GUI layer may be attempting to read and send the file content (base64-encoded), causing the freeze

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3Low — cosmetic, nice to havebugcomp/desktopElectron desktop app (apps/desktop/*)platform/windowsNative Windows-specific behavior or breakagetool/visionVision analysis and image generationtype/bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions