Channel splash shows 'plugin not installed' for all plugin-type channels despite channels working correctly (v2.1.145)
Description
In Claude Code v2.1.145, the startup splash always shows plugin not installed for all plugin: prefix channels, even when those channels work correctly. This affects both third-party plugins and Anthropic's own official telegram@claude-plugins-official plugin.
Reproduction
Any session with a plugin that provides channels (e.g. relay, telegram):
Listening for channel messages from: plugin:telegram@claude-plugins-official, plugin:relay@eco-relay, server:tacto-channel
Experimental · inbound messages will be pushed into this session, this carries prompt injection risks.
plugin:telegram@claude-plugins-official · plugin not installed
plugin:relay@eco-relay · plugin not installed
Note: server:tacto-channel (a direct MCP server) shows NO error. Only plugin: prefixed channels fail.
Environment
- Claude Code version: 2.1.145
- OS: Windows 11 Pro 10.0.26200
- Plugins affected:
relay@eco-relay(third-party),telegram@claude-plugins-official(official)
Evidence that channels actually work
Despite the warning, channels function correctly:
- Relay
<channel>messages are received and delivered between sessions - Telegram bot daemon is running (
bot.pidactive) - All MCP tools (
relay_peers,relay_send, etc.) work normally
The warning is a false positive.
Investigation
We verified the following:
- Both plugins are correctly installed — present in
installed_plugins.jsonwith correct paths - Both MCP servers declare channel capability correctly at runtime:
``typescript``
experimental: { "claude/channel": {} }
plugin.jsonlacks thechannelsfield (per the official JSON Schema at schemastore.org). We added the correct format to one plugin:
``json``
"channels": [{ "server": "relay" }]
This did not resolve the warning, suggesting the channel loader's static check does not read this field in v2.1.145.
- The
telegram@claude-plugins-officialplugin (official Anthropic plugin) has the same problem — itsplugin.jsonalso lackschannelsand shows the identical error. This strongly suggests the issue is in the channel loader, not the plugins.
Expected behavior
plugin:relay@eco-relay→ no error (plugin is installed and channel works)plugin:telegram@claude-plugins-official→ no error (official Anthropic plugin)
Actual behavior
Both show · plugin not installed despite being installed and functional.
Suggested fix
The channel loader's pre-flight check for plugin: channels should either:
- Read the
channelsfield fromplugin.json(per the official schema) to confirm the plugin declares channel support, OR - Verify the plugin exists in
installed_plugins.json(which it does) rather than failing the check