claude-code - 💡(How to fix) Fix --resume + --dangerously-load-development-channels: silent bot (notifications routed to dead session ID) [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#57783Fetched 2026-05-11 03:25:31
View on GitHub
Comments
1
Participants
2
Timeline
6
Reactions
0
Author
Timeline (top)
labeled ×5commented ×1

Combining --resume <session> with --dangerously-load-development-channels plugin:X@Y causes the session to:

  1. Load the channel twice (duplicated in TUI banner)
  2. Route inbound MCP notifications to the OLD session ID from --resume rather than the new live session

Result: bot appears silent — no ← <channel> · ... lines in TUI, no reply tool calls, no error.

Error Message

Result: bot appears silent — no ← <channel> · ... lines in TUI, no reply tool calls, no error.

  • (b) reject the combo at startup with a clear error Silent bot. No error in MCP log, no error in claude stderr. Only the duplicated TUI banner hints at the issue, and only if you know what to look for.

Root Cause

Combining --resume <session> with --dangerously-load-development-channels plugin:X@Y causes the session to:

  1. Load the channel twice (duplicated in TUI banner)
  2. Route inbound MCP notifications to the OLD session ID from --resume rather than the new live session

Result: bot appears silent — no ← <channel> · ... lines in TUI, no reply tool calls, no error.

Fix Action

Workaround

Drop --resume. Start fresh sessions every time. Loses transcript continuity inter-restart but the bot works.

Code Example

Listening for channel messages from: plugin:myplugin@mymarketplace, plugin:myplugin@mymarketplace

---

{"debug":"Connection established with capabilities: ...", "sessionId":"NEW_UUID"}
{"debug":"Channel notifications registered", "sessionId":"OLD_UUID"}from --resume
RAW_BUFFERClick to expand / collapse

Summary

Combining --resume <session> with --dangerously-load-development-channels plugin:X@Y causes the session to:

  1. Load the channel twice (duplicated in TUI banner)
  2. Route inbound MCP notifications to the OLD session ID from --resume rather than the new live session

Result: bot appears silent — no ← <channel> · ... lines in TUI, no reply tool calls, no error.

Reproduction (claude-code v2.1.138, macOS Darwin 23.6)

  1. Build a channel-MCP plugin (custom, via local marketplace claude plugin install ...).
  2. First run: claude --dangerously-load-development-channels plugin:myplugin@mymarketplace --name foo. Confirm dev-channels prompt.
  3. Drive some inbound to verify it works (e.g. Slack DM if it's a Slack-bridge plugin).
  4. Exit cleanly (/exit).
  5. Restart with --resume: claude --resume foo --dangerously-load-development-channels plugin:myplugin@mymarketplace --name foo
  6. Confirm the dev-channels prompt again.

Symptom

TUI banner shows the channel twice:

Listening for channel messages from: plugin:myplugin@mymarketplace, plugin:myplugin@mymarketplace

MCP debug log (~/Library/Caches/claude-cli-nodejs/<proj>/mcp-logs-plugin-<plugin>-<server>/<ts>.jsonl) shows session ID mismatch:

{"debug":"Connection established with capabilities: ...", "sessionId":"NEW_UUID"}
{"debug":"Channel notifications registered", "sessionId":"OLD_UUID"}   ← from --resume

When the MCP server emits notifications/claude/channel, claude code routes by the registered session ID (OLD_UUID) which is no longer the active session — notifications are dropped silently.

User-visible: bot processes the inbound side-effects that happen in the MCP server (reactions, status updates, etc.) but the claude session never sees the inbound text and never calls reply tools.

Expected

Either:

  • (a) deduplicate the channel registration on --resume + --dangerously so notifications route to the live session
  • (b) reject the combo at startup with a clear error

Actual

Silent bot. No error in MCP log, no error in claude stderr. Only the duplicated TUI banner hints at the issue, and only if you know what to look for.

Workaround

Drop --resume. Start fresh sessions every time. Loses transcript continuity inter-restart but the bot works.

Environment

  • claude-code: 2.1.138
  • OS: macOS 15.6 (Darwin 23.6)
  • Model: Opus 4.7 with xhigh effort
  • Plugin: custom (Slack channel via Socket Mode, local marketplace install)

Diagnosis context

Spent ~3h debugging this assuming it was a Slack-side issue (token, scope, app reinstall) before the duplicated TUI banner pointed to the real cause. Documented at https://github.com/duquesnay/claude-channel-slack-zeta/blob/main/CLAUDE.md (Gotcha #5) and decision-journal.md.

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 --resume + --dangerously-load-development-channels: silent bot (notifications routed to dead session ID) [1 comments, 2 participants]