You send a message to your OpenClaw agent in Discord, and nothing happens. No reply, no error, no sign the message was even received. Then you test it in Telegram and it works instantly. Sound familiar?
Channel routing is one of the most common points of failure for self-hosted AI agents, and the symptoms are confusing because the agent itself is fine. It responds in one channel, ignores another, or only works after a restart. The good news: this is almost always a configuration issue, not a broken install. You can diagnose it in about 10 minutes and fix it without touching your agent’s skills, memory, or prompts.
In this guide, I’ll walk through the exact steps I use when my OpenClaw instance goes quiet in a channel: checking bindings, verifying the gateway, testing permissions, and confirming the fix. If you’re new to the setup side, start with the complete OpenClaw guide first, then come back here. By the end, you’ll know exactly why a channel goes silent and how to bring it back.
Why OpenClaw Stops Responding in a Channel
OpenClaw doesn’t poll every channel continuously. Each channel (Discord, Telegram, Slack, WhatsApp, and so on) is bound to the gateway through a connection config, and each connection points at a specific session and agent. When a message comes in, the gateway has to do three things in order:
- Receive the message through the channel connection (bot token, webhook, or bridge must be valid).
- Route it to the right session or agent based on your bindings.
- Return the reply through the same connection.
A failure at any of these three steps looks identical from your side: silence. That’s why the first rule of debugging is to check the logs rather than guessing. The gateway logs tell you whether the message arrived, whether it matched a route, and whether the reply was sent.
In my experience, most “not responding” cases fall into one of these buckets:
- Wrong or missing binding: the channel isn’t mapped to the session you think it is, or the binding format changed after an update.
- Gateway not running: the process crashed or never started after a reboot.
- Permission or token issues: a rotated bot token, removed bot from the server, or a channel the bot can’t see.
- Session-level problems: the session is stuck, the model call is timing out, or the context is too large.
Step 1: Check Whether the Gateway Is Actually Running
Before you touch any config, confirm the gateway is alive. If the whole agent is down, no channel will respond, but it’s easy to miss when you’re testing only one channel. Open a terminal and run:
openclaw gateway status
You should see the version, uptime, and channel connections. If the gateway is down, start it with:
openclaw gateway start
If it won’t start, the error message usually names the failing channel connection. A common cause after an update is an invalid token or a config field that was renamed. When that happens, check the roll back safely guide for the update-related fixes before you start editing files.
While the gateway is running, also verify it actually shows the channel you expect. The status output lists connected channels. If your Discord server or Telegram bot is missing from that list, the connection itself is the problem, and no amount of session tweaking will help.

Step 2: Verify Your Channel Bindings
Channel routing in OpenClaw is defined in the main config file (openclaw.json). Each channel binding maps a connection and a channel to a session or agent. If you’ve changed bindings recently, or updated OpenClaw, this is the first place to look.
Here’s the part that trips up most people: the binding format matters, and it changed across versions. A binding needs to point at the right channel ID using the current format. For Discord, for example, you bind at the guild level with a peer definition for the channel. A common mistake is using the old accountId: "guildId#channelId" format, which no longer routes correctly in recent releases. The working approach uses the peer structure:
"guildId": {
"peer": { "kind": "channel", "id": "your-channel-id" }
}
To find your channel ID, enable developer mode in Discord, right-click the channel, and copy the ID. For Telegram, the binding uses the chat ID (for group chats, this is the group’s numeric ID, often prefixed with a minus sign). The chat ID is easy to get wrong because it’s not visible in the app UI; the easiest way to confirm it is to send a test message and watch the gateway log show which chat ID the message came from.
It’s also worth checking whether the channel is bound to the session you expect. If you have multiple agents or sessions (for example, separate sessions for work and personal channels), a message can arrive and route to the wrong one, which produces a confusing outcome: the agent replies, but from a different identity or with context from the wrong session. The binding controls this, so verify both the channel ID and the target session when you’re in the config.
After any change to the bindings, restart the gateway for it to take effect:
openclaw gateway restart
Then send a test message. If you’re connecting a new channel from scratch, the Telegram setup guide shows the full flow, including getting the bot token and chat ID right.

Step 3: Watch the Logs to See Where Messages Go
When the gateway is up and bindings look right but you still get silence, stop guessing and read the logs. Run:
openclaw gateway logs --tail 50
Then send a test message in the failing channel. You’re looking for three things:
- Did the message arrive? Look for an inbound message line for that channel. If there’s nothing, the connection isn’t receiving messages, which points to token, webhook, or permission problems.
- Did it route? Look for a line showing the session or agent that received it. If it arrives but doesn’t route, your binding is still wrong.
- Did it reply? Look for the outbound message or an error. If routing worked but the reply failed, the issue is in the session or the model call.
This three-step read turns a mystery into a specific failure point in under two minutes. Almost every “it just stopped responding” report I’ve debugged resolved to one of these three lines in the log.
If you want to watch the routing live, keep the log tail open in one terminal window and test in the other. Send a message, watch the inbound line appear, then the routing line, then the reply. The moment one of those lines doesn’t appear is the moment you’ve found your problem. It’s the fastest way to learn how your own setup routes traffic, and it makes every future diagnosis quicker.
Step 4: Test Permissions and Tokens
If the log shows no inbound messages at all, the channel connection is broken. Work through this checklist:
- Bot token: Has it been rotated recently? Regenerating a Discord or Telegram bot token invalidates the old one. Update it in the config and restart.
- Bot membership: Is the bot still in the server or group? If it was kicked or the server was recreated, re-invite it.
- Channel visibility: The bot can only see channels it has access to. In Discord, check the role permissions for the specific channel. A bot that can read #general but not #ai-chat will be silent in the latter.
- Rate limits: Telegram and Discord both rate-limit bots. If you’ve been hammering the API in testing, wait a minute and retry.
One subtle one: in Discord, if the bot can’t send messages in a channel (for example, the channel is a forum or announcements channel with restricted posting), the gateway may log an outbound error while the inbound message looks fine. That’s still a permissions issue, just on the reply side.
Step 5: Rule Out Session-Level Problems
If messages arrive and route but the reply fails, the session is the culprit. The most common causes:
- A stuck session: the previous turn never completed, so the session is busy. Restarting the gateway clears this, but check what the last turn was doing so it doesn’t happen again.
- Model timeouts: if your model provider is slow or rate-limited, the reply can time out. Check the logs for timeout errors on the model call.
- Context bloat: a session with a huge accumulated transcript makes every turn slower and more expensive. If replies are slow before they stop entirely, this is often why. Spawning fresh sessions per work block keeps context lean.
If you’ve been running one session for weeks and it’s grown unwieldy, that’s a strong signal. Create a new session for the channel and point the binding at it, then test again.

Common Mistakes to Avoid
These are the mistakes I see most often, and they all waste time:
- Editing config but not restarting. Many binding and connection changes only apply after
openclaw gateway restart. Test after every change, not after three changes at once. - Using an outdated binding format. If you copied config from an old version or an old tutorial, the format may be wrong. Check the current docs for your version.
- Blowing away the whole config to fix one channel. Back up openclaw.json before you edit, and change one field at a time. You don’t want to trade a quiet channel for a broken agent.
- Ignoring the logs. The gateway tells you exactly where messages stop. Reading logs is faster than random config edits, every time.
- Forgetting the bot needs to be invited. Tokens alone don’t connect a bot to a server or group. The bot has to be a member.
- Testing the wrong channel. With channel-specific permissions, the bot may work in one channel and not another on the same server. Test in the actual failing channel.
Check out our OpenClaw vs CrewAI vs AutoGen comparison — see how OpenClaw stacks up against the other leading agent frameworks before you commit to a setup.
If OpenClaw responds in one channel but not another, the gateway is running and the session is healthy. The problem is channel-specific: the binding for the silent channel is missing or wrong, the bot lacks permissions in that channel, or the connection config for that channel (token, chat ID) is invalid. Check the gateway status to confirm the channel is connected, then read the logs while sending a test message to pinpoint whether the message arrives, routes, or replies.
Open the main config file (openclaw.json), find the channel binding for the silent channel, and verify it uses the current binding format with the correct channel ID. Make one change at a time, then restart the gateway with ‘openclaw gateway restart’ and send a test message. If the message still doesn’t arrive, check the bot token and permissions next.
Run ‘openclaw gateway restart’ in a terminal where OpenClaw is installed. After the restart, run ‘openclaw gateway status’ to confirm the gateway is up and all channels are connected. A restart also clears stuck sessions, so it resolves many ‘not responding’ cases on its own.
Yes. OpenClaw can connect Discord, Telegram, Slack, WhatsApp, and other channels simultaneously, each with its own binding to a session or agent. Each connection needs valid credentials and correct bindings. When one channel goes silent, the others usually keep working, which is exactly the symptom that points to a channel-specific routing problem.
After an update, first check ‘openclaw gateway status’ to see if the gateway started cleanly and which channels are connected. Binding formats and config fields sometimes change between versions, so compare your openclaw.json against the current documentation for the new version. If the config is incompatible, restore your backed-up config and roll back the update, then reapply changes one at a time.
Final Thoughts
A silent channel is almost never a broken agent. It’s a broken connection, a wrong binding, or a stuck session, and each one has a fast, specific fix. The 10-minute routine is simple: confirm the gateway is up, check the binding for that channel, read the logs while you send a test message, and verify permissions if nothing arrives. Write down your channel IDs and keep a backup of a known-good openclaw.json, and future routing problems become five-minute fixes instead of an afternoon of frustration.

