Max subscription: queue Telegram messages instead of rejecting with rate limit

Resolved 💬 3 comments Opened Apr 7, 2026 by dyjhhh Closed Apr 11, 2026

Problem

When using Claude Code with Max subscription + Telegram channel plugin, incoming Telegram messages are rejected with "You're out of extra usage" if the LLM is already processing another request in the same session.

This creates a bad UX:

  • User sends a message while Claude is mid-processing (tool calls, analysis, etc.)
  • Instead of queuing the message, it's rejected with a rate limit error
  • The error message ("Add more at claude.ai/settings/usage") is misleading — the Max subscription isn't actually exhausted, it's just a concurrent request limit
  • User doesn't know if their message was received or lost
  • Causes anxiety and repeated message sending

Expected behavior

Messages arriving while the LLM is busy should be queued and processed after the current turn completes — not rejected. At minimum:

  1. Show the user that their message was received and queued (not bounced)
  2. Process queued messages in order once the current LLM request finishes
  3. Don't show "extra usage" error for what is actually a concurrency limit on Max subscription

Environment

  • Claude Code 2.1.92
  • Max subscription (subscriptionType: max, rateLimitTier: default_claude_max_20x)
  • Telegram channel plugin (plugin:telegram:telegram)
  • macOS, running background claude -p jobs via launchd alongside interactive sessions

Workaround

Currently using a claude-guard.sh script that prevents background claude -p jobs from running when an interactive session is active. But within-session message queuing still fails.

---

🤖 Generated with Claude Code

View original on GitHub ↗

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