[claude-in-chrome] file_upload and upload_image are 100% broken — client/extension protocol mismatch

Open 💬 0 comments Opened Jul 2, 2026 by vehler

Environment

  • Claude Code CLI: v2.1.197 (= npm latest at time of testing)
  • OS: macOS (Darwin 25.3.0)
  • claude-in-chrome extension: updated 2026-06-30 — update did not fix the issue
  • Tools affected: mcp__claude-in-chrome__file_upload, mcp__claude-in-chrome__upload_image

Expected

Given a real <input type="file"> element (obtained via read_page/find) and a valid tabId, file_upload uploads a file from a session-accessible path. Given a fresh imageId from a screenshot taken earlier in the same session, upload_image attaches that image to the page.

Actual

Both tools fail 100% of the time.

file_upload — verbatim error:

file_upload no longer accepts host filesystem paths. The MCP controller must read the file and pass its contents via the `files` parameter. If you are seeing this in Claude Desktop, update the desktop app.

However, the file_upload tool schema exposed to the model still only defines a paths parameter — there is no files parameter. The CLI controller has no way to comply with its own error message.

upload_image — verbatim error:

Unable to access message history to retrieve image

This occurs even when passing an imageId from a screenshot captured seconds earlier in the same session (i.e., not a stale/reused id).

Minimal repro

  1. Create a small local text file to upload.
  2. tabs_context_mcp to get a valid tabId.
  3. navigate to https://the-internet.herokuapp.com/upload.
  4. read_page → locate the file input (ref_1).
  5. Call file_upload({ paths: ["<path to file>"], ref: "ref_1", tabId }).
  6. Observe the "no longer accepts host filesystem paths" error above.

Note: no successful upload call appears anywhere in 60 days of local transcripts — earlier calls failed on a path-allowlist rejection (-32000 "Not allowed"), current calls fail on the protocol-mismatch error above. The failure mode changed; the tool has not been observably working in this environment.

Evidence / history

  • Across 60 days of transcripts, 9/9 real upload calls failed.
  • Earlier failures (pre-2026-06-30) were -32000 "Not allowed" — a path-allowlist restriction, a separate/pre-existing issue.
  • Current failures were live-verified 2026-06-30, including a re-test immediately after updating the Chrome extension — same errors on the latest CLI + latest extension.

Impact

File-upload end-to-end testing of web apps through the real, logged-in browser is impossible. There is no user-side fix available — the CLI is already on latest (2.1.197) and the Chrome extension has been updated, with no change in behavior.

Suspected cause

The claude-in-chrome extension/server moved to a contents-based upload protocol (expects file bytes via a files parameter and/or image bytes for upload_image), but the current CLI's MCP controller still sends host filesystem paths and cannot supply file/image contents — client and extension are out of sync.

View original on GitHub ↗