Marketplace auto-update silently breaks --channels telegram plugin

Resolved 💬 4 comments Opened Mar 31, 2026 by HAL-XP Closed Apr 12, 2026

Description

Claude Code's marketplace auto-update mechanism can silently break the --channels telegram plugin mid-conversation, with no error, no log, and no recovery mechanism.

Steps to Reproduce

  1. Run Claude Code with --channels plugin:telegram@claude-plugins-official
  2. Session works fine, telegram plugin (bun.exe) is spawned as child process
  3. Wait for marketplace auto-update to trigger (downloads new version to .staging dir)
  4. Observe: external_plugins/telegram/ in production marketplace gets wiped
  5. Production marketplace loses .claude-plugin/ directory (manifest) and all plugin source files
  6. The .staging dir has the complete new version but the swap to production never completes
  7. Session goes silent — telegram plugin process dies and cannot be restarted

Observed Behavior

  • After the marketplace update, the production dir (~/.claude/plugins/marketplaces/claude-plugins-official/) loses its .claude-plugin/marketplace.json manifest
  • Without the manifest, every Claude startup cleans the external_plugins/telegram/ directory (reconciliation against missing manifest)
  • --channels flag still shows "Listening for channel messages from: plugin:telegram@claude-plugins-official" banner at startup — but the bun.exe plugin process never spawns
  • No error message in the UI, no child process, no log output
  • Manually restoring files is futile — Claude cleans them on next startup (until manifest is also restored)
  • The staging dir (claude-plugins-official.staging/) has all correct files including .claude-plugin/plugin.json, but the promotion to production never happens

Expected Behavior

  1. Atomic marketplace swap: staging → production should be atomic (rename, not file-by-file copy)
  2. Plugin health check: --channels should verify the plugin process actually started and surface errors if not
  3. Fallback to cache: if production plugin is missing, fall back to cached version (which exists at cache/claude-plugins-official/telegram/)
  4. Visible error: "Listening for channel messages" banner should show error state if plugin fails to spawn
  5. Auto-recovery: if production is corrupt, auto-promote staging

Workaround

Manually copy from staging to production:

cp -r .../claude-plugins-official.staging/external_plugins/telegram/.claude-plugin .../claude-plugins-official/external_plugins/telegram/
cp .../claude-plugins-official.staging/external_plugins/telegram/.mcp.json .../claude-plugins-official/external_plugins/telegram/
cp .../claude-plugins-official.staging/external_plugins/telegram/.npmrc .../claude-plugins-official/external_plugins/telegram/
# + all source files, then bun install
# ALSO copy .claude-plugin/ dir to marketplace root to prevent re-wipe:
cp -r .../claude-plugins-official.staging/.claude-plugin .../claude-plugins-official/

Environment

  • Claude Code v2.1.87
  • Windows 11 Pro
  • Plugin: telegram@claude-plugins-official v0.0.4
  • Marketplace: claude-plugins-official

View original on GitHub ↗

This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗