Description
The Telegram extension requires grammy, @grammyjs/runner, and @grammyjs/transformer-throttler at runtime, but none are listed in package.json under dependencies, optionalDependencies, or peerDependencies. They're only present as runtime require() calls in bundled dist files.
This means every auto-update or brew upgrade wipes these packages, making the CLI completely unusable — all commands fail immediately with PluginLoadFailureError.
Version
OpenClaw 2026.3.31 (213a704), macOS 26.3.1 (arm64), node 25.8.2 → 25.9.0
Installed via pnpm global (/opt/homebrew/bin/openclaw)
Steps to Reproduce
- Have Telegram configured with bot tokens
- Wait for auto-update (or run
brew upgrade)
- Run any
openclaw command
Expected
CLI works normally.
Actual
[plugins] telegram failed to load from /opt/homebrew/lib/node_modules/openclaw/dist/extensions/telegram/index.js: Error: Cannot find module 'grammy'
Require stack:
- /opt/homebrew/lib/node_modules/openclaw/dist/sticker-cache-BqQLBzvo.js
[openclaw] Failed to start CLI: PluginLoadFailureError: plugin load failed: telegram: Error: Cannot find module 'grammy'
CLI is completely unusable — can't even run openclaw status to diagnose.
Affected modules
Found via grep -roh "@grammyjs/[a-z-]*" dist/:
grammy
@grammyjs/runner
@grammyjs/transformer-throttler
@grammyjs/types (present transitively)
Workaround
cd /opt/homebrew/lib/node_modules/openclaw
npm install --no-save --userconfig /dev/null grammy @grammyjs/runner @grammyjs/transformer-throttler
openclaw gateway restart
Must re-run after every update.
Suggestions
- Add
grammy and @grammyjs/* packages to optionalDependencies so they survive reinstalls
- Make extension load failures non-fatal for the CLI — a broken plugin shouldn't prevent
openclaw status from running (the primary diagnostic tool). The amazon-bedrock extension already soft-fails; telegram should too.
- Add a
--skip-plugins or --safe-mode CLI flag for recovery scenarios
Related
Same class of issue affects amazon-bedrock (@aws-sdk/client-bedrock not in deps), but that one warns instead of crashing since it uses soft-fail.
Description
The Telegram extension requires
grammy,@grammyjs/runner, and@grammyjs/transformer-throttlerat runtime, but none are listed inpackage.jsonunderdependencies,optionalDependencies, orpeerDependencies. They're only present as runtimerequire()calls in bundled dist files.This means every auto-update or
brew upgradewipes these packages, making the CLI completely unusable — all commands fail immediately withPluginLoadFailureError.Version
OpenClaw 2026.3.31 (213a704), macOS 26.3.1 (arm64), node 25.8.2 → 25.9.0
Installed via pnpm global (
/opt/homebrew/bin/openclaw)Steps to Reproduce
brew upgrade)openclawcommandExpected
CLI works normally.
Actual
CLI is completely unusable — can't even run
openclaw statusto diagnose.Affected modules
Found via
grep -roh "@grammyjs/[a-z-]*" dist/:grammy@grammyjs/runner@grammyjs/transformer-throttler@grammyjs/types(present transitively)Workaround
cd /opt/homebrew/lib/node_modules/openclaw npm install --no-save --userconfig /dev/null grammy @grammyjs/runner @grammyjs/transformer-throttler openclaw gateway restartMust re-run after every update.
Suggestions
grammyand@grammyjs/*packages tooptionalDependenciesso they survive reinstallsopenclaw statusfrom running (the primary diagnostic tool). Theamazon-bedrockextension already soft-fails; telegram should too.--skip-pluginsor--safe-modeCLI flag for recovery scenariosRelated
Same class of issue affects
amazon-bedrock(@aws-sdk/client-bedrocknot in deps), but that one warns instead of crashing since it uses soft-fail.