[claude-in-chrome] file_upload and upload_image are 100% broken — client/extension protocol mismatch
Environment
- Claude Code CLI: v2.1.197 (= npm
latestat 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
- Create a small local text file to upload.
tabs_context_mcpto get a validtabId.navigatetohttps://the-internet.herokuapp.com/upload.read_page→ locate the file input (ref_1).- Call
file_upload({ paths: ["<path to file>"], ref: "ref_1", tabId }). - 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.