Claude Code cannot interact with native OS file dialogs — bridge gap between Chrome MCP and Computer Use API
Problem
Claude Code with the Chrome MCP extension (claude-in-chrome) can interact with anything inside the browser — clicking buttons, typing in fields, navigating pages, reading the DOM. But the moment a native OS file dialog appears (upload/download prompts), Claude is completely stuck. The user must manually intervene.
This came up during an end-to-end content creation workflow where Claude Code:
- Wrote a LaTeX document in OpenAI's Prism editor (browser)
- Verified the math with Python (terminal)
- Recorded the screen and edited a demo video with ffmpeg (terminal)
- Uploaded a thumbnail to YouTube (browser — but needed human help for the file picker)
- Uploaded an image to a Medium article (browser — but needed human help for the file picker)
Steps 4 and 5 broke the autonomous flow because file upload dialogs are native OS windows, not browser DOM elements.
The Gap
The pieces exist separately but aren't connected:
| Capability | Scope | Status |
|-----------|-------|--------|
| Chrome MCP (claude-in-chrome) | Browser DOM only | ✅ Works in Claude Code |
| Computer Use API | Full desktop (screenshot + mouse/keyboard on any app) | ❌ API-only, requires Docker + virtual display, not available in Claude Code |
| PyAutoGUI MCP servers (community) | Native desktop via xdotool/PyAutoGUI | ⚠️ Third-party, not official |
Claude Code has terminal control (Bash) and browser control (Chrome MCP), but no native desktop control for the OS layer in between — where file dialogs, system prompts, and notification popups live.
Proposed Solutions (any of these would work)
- Official "Desktop Use" MCP server — An Anthropic-maintained MCP server that wraps Computer Use capabilities (screenshot + mouse/keyboard) for the native desktop, configurable in
~/.claude/settings.jsonlike any other MCP server.
- Chrome MCP file dialog bridge — Extend
claude-in-chrometo detect when a file dialog opens and either:
- Auto-select a file path provided by Claude (e.g.,
upload_file(path="/home/user/image.png")) - Use Chrome's
--use-file-for-fake-file-dialogflag or DevTools Protocol to bypass the native dialog
- Computer Use as a Claude Code native tool — Integrate the Computer Use tool directly into Claude Code (similar to how Bash and Read/Write are native tools), so Claude can screenshot and click on native OS elements when needed.
Environment
- OS: Ubuntu Linux (Pop!_OS 22.04)
- Claude Code model: Opus 4.6
- Chrome MCP: Claude-in-Chrome extension
- Workflow: LaTeX writing → Python verification → ffmpeg video editing → YouTube/Medium publishing
Workaround
Currently, the user must manually handle any file upload/download dialogs. This breaks the autonomous flow and requires the user to stay present for what should be a hands-off pipeline.
Community PyAutoGUI MCP servers exist (mcp-pyautogui, mcp-pyautogui-server) but an official solution would be more reliable and better integrated.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗