Bug
Sub-agent announce delivery fails with Error: Unknown channel: telegram and Outbound not configured for channel: telegram even though:
- Telegram is configured and enabled in
channels.telegram
- Telegram plugin is enabled in
plugins.entries.telegram
- Direct replies to Telegram work fine
- Explicit
message send to Telegram works fine
telegram is in CHAT_CHANNEL_ORDER
Only the announce callback path from sessions_spawn fails.
Logs
Delivery failed (telegram to telegram:275931660): Error: Unknown channel: telegram
No reply from agent.
Outbound not configured for channel: telegram
announce queue drain failed for agent:main:main: Error: Error: Outbound not configured for channel: telegram
Analysis
The loadChannelOutboundAdapter function in the deliver module looks up the plugin via getActivePluginRegistry(). Different deliver chunk files import getActivePluginRegistry from different modules (entry.js vs exec-kbIbbKiD.js), which may cause the announce path to resolve a different (empty?) registry than the normal reply/message path.
The channel resolution itself (isKnownChannel) also depends on getActivePluginRegistry() for dynamic plugin channels, though telegram is in the static CHANNEL_IDS list — so the 'Unknown channel' error specifically suggests the registry is either not loaded or in a different state in the announce execution context.
Reproduction
- Configure Telegram channel (enabled, with bot token)
- Use
sessions_spawn to create a sub-agent task
- Sub-agent completes, announce delivery fails
- Direct replies and
message send tool both work fine to the same Telegram chat
Environment
- OpenClaw 2026.2.9
- Linux arm64 (NVIDIA Jetson)
- Telegram channel with bot token, dmPolicy: pairing
Bug
Sub-agent announce delivery fails with
Error: Unknown channel: telegramandOutbound not configured for channel: telegrameven though:channels.telegramplugins.entries.telegrammessage sendto Telegram works finetelegramis inCHAT_CHANNEL_ORDEROnly the announce callback path from
sessions_spawnfails.Logs
Analysis
The
loadChannelOutboundAdapterfunction in the deliver module looks up the plugin viagetActivePluginRegistry(). Different deliver chunk files importgetActivePluginRegistryfrom different modules (entry.jsvsexec-kbIbbKiD.js), which may cause the announce path to resolve a different (empty?) registry than the normal reply/message path.The channel resolution itself (
isKnownChannel) also depends ongetActivePluginRegistry()for dynamic plugin channels, thoughtelegramis in the staticCHANNEL_IDSlist — so the 'Unknown channel' error specifically suggests the registry is either not loaded or in a different state in the announce execution context.Reproduction
sessions_spawnto create a sub-agent taskmessage sendtool both work fine to the same Telegram chatEnvironment