#Unknown channel: telegram

1 messages · Page 1 of 1 (latest)

feral pelican
#

openclaw channels add --channel telegram --token <bot-token>

on Openclaw v2026.3.12 responds with:

Unknown channel: telegram

plucky nightBOT
#

That error usually means the Telegram channel plugin isn’t loaded/enabled, so the channels add command can’t resolve "telegram" to a known channel.

In current OpenClaw, Telegram is a bundled plugin, and if plugins are disabled (or you’re using a restrictive plugins.allow / plugins.deny), you’ll get:

Unknown channel: telegram

Fix / workaround

  1. Check whether the Telegram plugin is discovered but disabled:
openclaw plugins list
openclaw plugins doctor
  1. Enable it, then rerun your command:
#
openclaw plugins enable telegram
openclaw channels add --channel telegram --token <bot-token>

If your config has plugins.enabled: false, you’ll need to flip that back to true first.

Alternative (no CLI)

You can also just configure Telegram directly in config (this always works):
https://docs.openclaw.ai/channels/telegram

If you paste the output of openclaw plugins doctor (just the telegram-related lines are fine), I can tell you exactly which setting is blocking it.

feral pelican
#

The plugin entry in openclaw.json looks like this:

"plugins": {
    "allow": [
      "whatsapp",
      "telegram"
    ],
    "entries": {
      "whatsapp": {
        "enabled": true
      }
    }
  }

Is that wrong? Does it also need a plugins.entries.telegram.enabled = true entry?

Also, with an explicit plugin allow list, are all other plugins disbaled or not?

plucky nightBOT
#

Yep — that config explains the behavior.

1) Do you need plugins.entries.telegram.enabled: true?

Yes.

plugins.allow is only the permission list (“these plugins are allowed to load”).
Bundled plugins (including telegram, whatsapp, etc.) ship disabled by default, so they also need to be enabled via plugins.entries.<id>.enabled: true or via channel config in some cases.

So this is the minimal shape:

plugins: {
  allow: ["whatsapp", "telegram"],
  entries: {
    whatsapp: { enabled: true },
    telegram: { enabled: true },
#
  },
}

After that, openclaw channels add --channel telegram --token ... should stop saying “Unknown channel”.

(Alternatively, you can just run openclaw plugins enable telegram — it writes the right config bits for you.)
Docs: https://docs.openclaw.ai/cli/plugins

2) With an explicit allow list, are all other plugins disabled?

Yes — if plugins.allow is non-empty, then anything not in that list is treated as disabled, even if you set plugins.entries.<other>.enabled: true.

So mentally it’s:

  • plugins.allow: “which plugin IDs are permitted at all”
  • plugins.entries.<id>.enabled: “turn it on/off (within the permitted set)”
feral pelican
#
  1. I have to disagree: Even though I had no plugins.entries.telegram.enabled entry, when I setup telegram via manual config edits I got it running.

  2. But openclaw plugins list shows the memory-core plugin as loaded even though it's not in the plugins.allow list.

plucky nightBOT
#

You’re right on both points — there are two extra rules in play that I didn’t spell out clearly.

1) “Telegram worked without plugins.entries.telegram.enabled”

Correct. Bundled channel plugins can be activated by channel config, not only by plugins.entries.

There’s a special-case in the plugin enable logic:

  • bundled plugin would normally be “disabled by default”
  • but if it looks like a built-in chat channel (telegram, discord, …) and you have:
    channels: { telegram: { enabled: true } }
    
    …then the Telegram plugin is treated as enabled and will load.

That’s why “manual config edits” (setting channels.telegram.enabled: true + token) can make Telegram run even with no plugins.entries.telegram.

So for your original failure (openclaw channels add --channel telegram ...):

#
  • if Telegram is not enabled yet via channels.telegram.enabled: true or plugins.entries.telegram.enabled: true,
  • then the plugin registry won’t include it,
  • and channels add can’t resolve it → Unknown channel: telegram.

2) “Why is memory-core loaded even though it’s not in plugins.allow?”

Also expected. The memory plugin is controlled by the memory slot, and slot selection happens before the allowlist check.

By default, OpenClaw sets:

  • plugins.slots.memory = "memory-core" (unless you override it)

So memory-core loads even if it’s not in plugins.allow.

If you want no memory plugin at all, set:

plugins: { slots: { memory: "none" } }
#

If you paste the openclaw plugins list lines for telegram (it usually shows “disabled: bundled (disabled by default)” + a reason), I can tell you which of the two enable paths you’re currently missing.