Skip to content

[Bug]: WhatsApp bridge cannot be disabled in Docker + Telegram Forbidden error on Windows #21710

@woodtreeGit

Description

@woodtreeGit

Bug Description

Here’s a shorter, tech-focused summary you can paste into Bug Description:


On Windows 11 with Docker Desktop, I’m running nousresearch/hermes-agent via gateway run with C:\Users\User\.hermes mounted to /opt/data. After enabling WhatsApp in the initial setup, the WhatsApp bridge repeatedly fails to install its npm dependencies and times out on every gateway start. Even after explicitly disabling WhatsApp in both .env (removing or commenting WHATSAPP_ENABLED and related vars) and config.yaml (commenting out the whatsapp entry in platform_toolsets), the gateway still always starts the WhatsApp bridge and spams logs with:

  • Installing WhatsApp bridge dependencies...
  • Failed to install dependencies: Command '['npm', 'install', '--silent']' timed out after 60 seconds
  • Multiple Bridge process died (exit code 1) and Check log: /opt/data/whatsapp/bridge.log lines
  • Giving up reconnecting whatsapp after 20 attempts

In parallel, Telegram is configured with a BotFather token and my numeric user ID, but Hermes frequently logs network warnings and fails to send messages with Forbidden: the bot can't send messages to the bot, plus occasional ReadTimeout / TimedOut errors when polling get_updates. I’ve tried editing .env and config.yaml on the host and inside /opt/data in the container, restarting the container multiple times, and verifying that the WhatsApp settings are commented out, but the WhatsApp bridge still starts and fails on every boot, and Telegram still can’t send messages reliably.

Steps to Reproduce

1.On Windows 11 with Docker Desktop, pull and run nousresearch/hermes-agent using the Docker instructions, mounting C:\Users\User.hermes to /opt/data and running gateway run.

2.In the initial setup, enable WhatsApp in the gateway (self-chat) and complete the wizard.

3.Start the gateway container and observe that the WhatsApp bridge tries to install npm dependencies and fails with a 60s timeout on every start.

4.Edit /opt/data/.env and /opt/data/config.yaml (via host mount) to disable WhatsApp: comment out WhatsApp env vars and remove the whatsapp entry from platform_toolsets. Restart the container.

5.Observe that despite these changes, the gateway still starts the WhatsApp bridge on every boot, logs repeated npm timeout errors, and eventually gives up after 20 reconnect attempts.

6.Configure Telegram in .env with a valid BotFather token and your numeric user ID for TELEGRAM_ALLOWED_USERS and TELEGRAM_HOME_CHANNEL.

7.Start the gateway again and send messages to the bot; observe network warnings and ERROR gateway.platforms.telegram: [Telegram] Failed to send Telegram message: Forbidden: the bot can't send messages to the bot, along with occasional ReadTimeout / TimedOut errors during get_updates.

Expected Behavior

Hermes gateway should respect configuration changes and allow me to fully disable WhatsApp and run only Telegram (or other platforms) without attempting to start the WhatsApp bridge. After updating .env and config.yaml, the gateway should no longer install or run the WhatsApp bridge at all, and Telegram should be able to send and receive messages normally without permission or timeout errors.

Actual Behavior

Even after commenting out all WhatsApp-related settings in .env and removing the whatsapp entry from platform_toolsets in config.yaml, the gateway continues to start the WhatsApp bridge on every boot, repeatedly tries to run npm install --silent, and fails with 60‑second timeouts and multiple “Bridge process died (exit code 1)” messages before giving up after 20 attempts. At the same time, Telegram is configured with a valid bot token and my numeric user ID, but Hermes frequently logs network warnings and fails to send messages with ERROR gateway.platforms.telegram: [Telegram] Failed to send Telegram message: Forbidden: the bot can't send messages to the bot, along with occasional ReadTimeout / TimedOut errors when calling get_updates.

Affected Component

Gateway (Telegram/Discord/Slack/WhatsApp)

Messaging Platform (if gateway-related)

WhatsApp

Debug Report

I’m running Hermes only via the Docker gateway image on Windows 11, and I don’t have the standalone hermes CLI installed on the host. Because of that I’m not able to run hermes debug share or /debug as suggested. All relevant environment info, config snippets, and log excerpts are included above in this issue instead.

Operating System

Windows 11

Python Version

3.13.5

Hermes Version

0.13.0

Additional Logs / Traceback (optional)

Below are representative log snippets from docker logs -f hermes showing the WhatsApp bridge failures and the Telegram errors:
[Whatsapp] Installing WhatsApp bridge dependencies...
[Whatsapp] Failed to install dependencies: Command '['npm', 'install', '--silent']' timed out after 60 seconds
[Whatsapp] Disconnecting (external bridge left running)
WARNING gateway.run: ✗ whatsapp failed to connect
[Whatsapp] Bridge process died (exit code 1)
[Whatsapp] Check log: /opt/data/whatsapp/bridge.log
...
WARNING gateway.run: Giving up reconnecting whatsapp after 20 attempts

WARNING gateway.platforms.telegram_network: [Telegram] Primary api.telegram.org connection failed (); trying fallback IPs 149.154.166.110
WARNING gateway.platforms.telegram_network: [Telegram] Primary api.telegram.org path unreachable; using sticky fallback IP 149.154.166.110

ERROR telegram.ext.Updater: Error while calling `get_updates` one more time to mark all fetched updates. Suppressing error to ensure graceful shutdown.
...
httpx.ReadTimeout

ERROR gateway.platforms.telegram: [Telegram] Failed to send Telegram message: Forbidden: the bot can't send messages to the bot
Traceback (most recent call last):
  File "/opt/hermes/gateway/platforms/telegram.py", line 1266, in send
    msg = await self._bot.send_message(
    ...
telegram.error.Forbidden: Forbidden: the bot can't send messages to the bot

Root Cause Analysis (optional)

No response

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existsarea/dockerDocker image, Compose, packagingcomp/gatewayGateway runner, session dispatch, deliveryplatform/telegramTelegram bot adapterplatform/whatsappWhatsApp Business adaptertype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions