claude-code - 💡(How to fix) Fix Adobe MCP picker widget not rendering — local plugin shadowed by SDK double-load detector [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#54858Fetched 2026-04-30 06:33:56
View on GitHub
Comments
1
Participants
2
Timeline
7
Reactions
0
Timeline (top)
labeled ×5closed ×1commented ×1

When using the Adobe for creativity plugin in Claude Code (CLI), calling asset_add_file succeeds at the MCP API layer but the file picker widget never renders in the UI. Tool calls return successfully, but job_status stays pending forever because no user input is ever captured. This makes any Adobe workflow that requires local file ingestion (batch edit, retouch, resize, etc.) completely unusable.

Error Message

  1. Or: improve the error surface — if the picker widget can't render, the tool should return an actionable error instead of silently staying pending. Every Adobe skill that begins with "open the picker" is blocked: adobe-batch-edit-photos, adobe-retouch-portraits, adobe-resize-photos-and-videos, adobe-create-social-variations, adobe-edit-quick-cut. Users see a confident "I'll open the picker now…" from Claude, then nothing happens, no error message, just an indefinite pending state.

Root Cause

When using the Adobe for creativity plugin in Claude Code (CLI), calling asset_add_file succeeds at the MCP API layer but the file picker widget never renders in the UI. Tool calls return successfully, but job_status stays pending forever because no user input is ever captured. This makes any Adobe workflow that requires local file ingestion (batch edit, retouch, resize, etc.) completely unusable.

Fix Action

Fix / Workaround

Workarounds attempted (all fail)

  • ❌ Direct asset_initialize_file_upload from local Mac path → returns Forbidden ("The asset is not accessible to the user")
  • ❌ Public URL via Google Drive (drive.google.com, drive.usercontent.google.com) → "URL domain not whitelisted"
  • ❌ Public URL via Cloudflare tunnel (*.trycloudflare.com) → "URL domain not whitelisted"
  • ❌ Restart Claude Code, upgrade to latest version → no effect (shadow still happens)
  • ❌ The asset_add_file() picker (the documented path for local files) → widget never renders

Code Example

[info] Plugin "plugin_016vETfqCKdLzFBgAYofCiNM" has remote MCP servers (Adobe for creativity). Shadowing with no-ops to prevent SDK double-load.
[info] [CCD] Passing 5 plugin(s) to SDK (skills: 1, remote: 4, local: 0)
[info] Making remote MCP tool call: asset_add_file
[info] Remote tool call succeeded: asset_add_file

---

2026-04-30 08:08:48 [info] Plugin "plugin_0122ueaY71LceH15zz3CjU65" has remote MCP servers (Adobe for creativity). Shadowing with no-ops to prevent SDK double-load.
2026-04-30 08:08:48 [info] [CCD] Passing 5 plugin(s) to SDK (skills: 1, remote: 4, local: 0)
2026-04-30 08:24:11 [info] Making remote MCP tool call: asset_add_file
2026-04-30 08:24:14 [info] Remote tool call succeeded: asset_add_file
2026-04-30 08:24:17 [info] Making remote MCP tool call: asset_add_file_check_status
2026-04-30 08:24:21 [info] Remote tool call succeeded: asset_add_file_check_status
(stays pending forever — picker never rendered)
RAW_BUFFERClick to expand / collapse

Adobe MCP picker widget not rendering — local plugin shadowed by SDK double-load detector

Summary

When using the Adobe for creativity plugin in Claude Code (CLI), calling asset_add_file succeeds at the MCP API layer but the file picker widget never renders in the UI. Tool calls return successfully, but job_status stays pending forever because no user input is ever captured. This makes any Adobe workflow that requires local file ingestion (batch edit, retouch, resize, etc.) completely unusable.

Environment

  • Claude Code: 2.1.123 (also reproduced on 2.1.113)
  • macOS (Apple Silicon)
  • Plugin: adobe-for-creativity v1.0.1 (Marketplace, Anthropic & Partners)
  • Other plugins enabled: design, productivity, cowork-plugin-management

Reproduction

  1. Install adobe-for-creativity plugin from the marketplace
  2. Open Claude Code in a project
  3. Ask Claude to edit a local image (e.g. /adobe-batch-edit-photos)
  4. Claude calls mcp__...__asset_add_file
  5. The tool call returns { job_status: "pending", job_id: "..." }
  6. No picker widget / card appears anywhere in the Claude Code UI
  7. Polling asset_add_file_check_status stays pending indefinitely

Root cause (from logs)

~/Library/Logs/Claude/main.log shows:

[info] Plugin "plugin_016vETfqCKdLzFBgAYofCiNM" has remote MCP servers (Adobe for creativity). Shadowing with no-ops to prevent SDK double-load.
[info] [CCD] Passing 5 plugin(s) to SDK (skills: 1, remote: 4, local: 0)
[info] Making remote MCP tool call: asset_add_file
[info] Remote tool call succeeded: asset_add_file

So the same Adobe MCP server is being registered twice:

  • Local plugin (installed from marketplace) — owns the UI widget handler that should render the file picker
  • SDK-injected (the deferred mcp__<uuid>__* tools) — no UI handler

Claude Code detects the double-load and shadows the local plugin with no-ops. Tool calls then route through the SDK channel (which works for the API), but the picker widget — registered on the shadowed local plugin — never fires.

The shadowing direction looks reversed: the side with UI handlers should win, not the API-only side.

Workarounds attempted (all fail)

  • ❌ Direct asset_initialize_file_upload from local Mac path → returns Forbidden ("The asset is not accessible to the user")
  • ❌ Public URL via Google Drive (drive.google.com, drive.usercontent.google.com) → "URL domain not whitelisted"
  • ❌ Public URL via Cloudflare tunnel (*.trycloudflare.com) → "URL domain not whitelisted"
  • ❌ Restart Claude Code, upgrade to latest version → no effect (shadow still happens)
  • ❌ The asset_add_file() picker (the documented path for local files) → widget never renders

There is no working path for ingesting a local Mac file into Adobe MCP from Claude Code at present.

Suggested fixes

  1. Reverse the shadow direction: when a local plugin and SDK-injected plugin collide, prefer the local one (it has UI handlers).
  2. Or: don't auto-inject Adobe via SDK when the user has explicitly installed the marketplace plugin.
  3. Or: widen the URL whitelist for image_* tools to cover common public hosts (Dropbox direct links, Google Drive direct download, generic HTTPS) so URL-based ingestion is a real fallback.
  4. Or: improve the error surface — if the picker widget can't render, the tool should return an actionable error instead of silently staying pending.

Impact

Every Adobe skill that begins with "open the picker" is blocked: adobe-batch-edit-photos, adobe-retouch-portraits, adobe-resize-photos-and-videos, adobe-create-social-variations, adobe-edit-quick-cut. Users see a confident "I'll open the picker now…" from Claude, then nothing happens, no error message, just an indefinite pending state.

Log snippet

2026-04-30 08:08:48 [info] Plugin "plugin_0122ueaY71LceH15zz3CjU65" has remote MCP servers (Adobe for creativity). Shadowing with no-ops to prevent SDK double-load.
2026-04-30 08:08:48 [info] [CCD] Passing 5 plugin(s) to SDK (skills: 1, remote: 4, local: 0)
2026-04-30 08:24:11 [info] Making remote MCP tool call: asset_add_file
2026-04-30 08:24:14 [info] Remote tool call succeeded: asset_add_file
2026-04-30 08:24:17 [info] Making remote MCP tool call: asset_add_file_check_status
2026-04-30 08:24:21 [info] Remote tool call succeeded: asset_add_file_check_status
(stays pending forever — picker never rendered)

extent analysis

TL;DR

The Adobe MCP picker widget fails to render due to the local plugin being shadowed by the SDK double-load detector, and a potential fix is to reverse the shadow direction to prefer the local plugin with UI handlers.

Guidance

  • Investigate the plugin registration process to understand why the local plugin is being shadowed by the SDK-injected plugin.
  • Consider implementing a check to prefer the local plugin with UI handlers when a collision occurs.
  • Review the error handling for the asset_add_file tool to provide a more informative error message when the picker widget cannot render.
  • Explore alternative ingestion methods, such as widening the URL whitelist for image_* tools, to provide a fallback for users.

Example

No code snippet is provided as the issue is more related to the plugin architecture and registration process.

Notes

The issue seems to be specific to the Adobe MCP plugin and the Claude Code environment, and the suggested fixes may require modifications to the plugin or the Claude Code SDK.

Recommendation

Apply a workaround by reversing the shadow direction to prefer the local plugin with UI handlers, as this seems to be the most direct solution to the issue. This change may require updates to the plugin registration process or the Claude Code SDK.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix Adobe MCP picker widget not rendering — local plugin shadowed by SDK double-load detector [1 comments, 2 participants]