claude-code - 💡(How to fix) Fix [BUG] v2.1.132: notifications/claude/channel rendered to prompt but not auto-submitted (TUI idle never starts a turn)

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…

notifications/claude/channel MCP notifications are received and rendered in the TUI but not auto-submitted — Claude shows the user input as ❯ <text> on the prompt and sits idle, waiting for an Enter that never comes. Affects production deployments running Claude Code with the Telegram channel plugin.

Related but distinct from #45408: that issue describes notifications being silently dropped. In our reproduction the notification IS rendered to the prompt; only the auto-submit step is missing.

Root Cause

notifications/claude/channel MCP notifications are received and rendered in the TUI but not auto-submitted — Claude shows the user input as ❯ <text> on the prompt and sits idle, waiting for an Enter that never comes. Affects production deployments running Claude Code with the Telegram channel plugin.

Related but distinct from #45408: that issue describes notifications being silently dropped. In our reproduction the notification IS rendered to the prompt; only the auto-submit step is missing.

Fix Action

Fix / Workaround

Workaround (no plugin patch needed)

Code Example

Worked for 2m 19s

────────────────────────────────────────────────────────────────────────────────
❯ pode escrever o procedure e testar
────────────────────────────────────────────────────────────────────────────────
  ⏵⏵ bypass permissions on (shift+tab to cycle)
Auto-update failed · Try claude doctor or npm i -g @anthropic-ai/claude-c…
                        control this session from your phone · /remote-control

---

mcp.notification({
  method: 'notifications/claude/channel',
  params: {
    content: text,
    meta: { chat_id, message_id, user, user_id, ts, ... }
  }
})

---

kubectl exec <pod> -- su - agent -c "tmux send-keys -t claude-code Enter"
RAW_BUFFERClick to expand / collapse

Summary

notifications/claude/channel MCP notifications are received and rendered in the TUI but not auto-submitted — Claude shows the user input as ❯ <text> on the prompt and sits idle, waiting for an Enter that never comes. Affects production deployments running Claude Code with the Telegram channel plugin.

Related but distinct from #45408: that issue describes notifications being silently dropped. In our reproduction the notification IS rendered to the prompt; only the auto-submit step is missing.

Environment

FieldValue
Claude Codev2.1.132
Pluginclaude-channel-telegram @ 0.0.1 (cache dir 0.0.6)
Bun1.3.13
OSDebian 12 (bookworm), kernel 6.1.0-43-cloud-amd64
RuntimeK3s pod, OAuth (Anthropic Max), --dangerously-skip-permissions
Channels--channels plugin:telegram@claude-plugins-official --dangerously-load-development-channels server:matrix
Wrappertmux session claude-code (single window)

Steps to Reproduce

  1. Start Claude Code in tmux with the Telegram plugin enabled (--channels plugin:telegram@claude-plugins-official)
  2. Have a back-and-forth conversation via Telegram so the plugin has been delivering notifications successfully
  3. After Claude finishes a turn and returns to idle, send a Telegram message
  4. Plugin fires mcp.notification({ method: 'notifications/claude/channel', params: { content, meta } })
  5. Claude Code TUI renders the content on the prompt as ❯ <text> (visible via tmux capture-pane)
  6. No turn starts — TUI sits at the prompt waiting for Enter

Evidence

tmux capture-pane -t claude-code -p immediately before manual intervention:

✻ Worked for 2m 19s

────────────────────────────────────────────────────────────────────────────────
❯ pode escrever o procedure e testar
────────────────────────────────────────────────────────────────────────────────
  ⏵⏵ bypass permissions on (shift+tab to cycle)
  ✗ Auto-update failed · Try claude doctor or npm i -g @anthropic-ai/claude-c…
                        control this session from your phone · /remote-control

tmux display-message -p '#{session_activity}' showed last activity ~14h prior — the input had been sitting on the prompt unprocessed for that entire time.

The session jsonl confirmed the user-message entry was never written until intervention:

  • File: ~/.claude/projects/<workspace>/<sessionId>.jsonl
  • The line "role":"user","content":"pode escrever o procedure e testar" first appears at 2026-05-08T20:21:21.204Z — exactly when we forced a respawn. No prior occurrence.

Plugin is innocent

server.ts line ~958 only fires the MCP notification — it has no terminal/tmux code at all:

mcp.notification({
  method: 'notifications/claude/channel',
  params: {
    content: text,
    meta: { chat_id, message_id, user, user_id, ts, ... }
  }
})

grep -rE "send-keys|load-buffer|paste-buffer|tmux" plugins/.../telegram/0.0.6/ returns zero matches in the plugin source. The TUI is the layer that renders the prompt and decides whether to start a turn.

Workaround (no plugin patch needed)

kubectl exec <pod> -- su - agent -c "tmux send-keys -t claude-code Enter"

Effect: Claude immediately enters Contemplating… and processes the pending input. We've wired a 60s cron in our pod entrypoint that detects a stuck line via tmux capture-pane and sends Enter automatically.

Expected Behavior

When notifications/claude/channel is delivered while the TUI is idle, the TUI should start a turn with the notification content as the user message — without requiring a synthetic Enter.

Notes

  • Affects multiple pods in our fleet (separate issue, multi-occurrence)
  • When Claude is mid-turn, notifications appear to be queued/processed correctly. The bug is specific to the idle → idle transition
  • We can share full session jsonl, plugin stderr, and tmux session timeline if useful — happy to attach scrubbed copies

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