Bug type
Behavior bug (incorrect output/state without crash)
Summary
OpenClaw's Telegram provider produces continuous 409 Conflict: terminated by other getUpdates request errors even with a brand new Telegram bot token and health monitor completely disabled. This indicates an internal polling loop leak, not an external conflict.
Steps to reproduce
- Create a completely new Telegram bot via @Botfather
- Configure OpenClaw with new token:
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "<NEW_BOT_TOKEN>",
"dmPolicy": "open"
}
},
"gateway": {
"channelHealthCheckMinutes": 0
}
}
- Start OpenClaw gateway via Docker Compose
- Observe logs - conflict appears within 60-120 seconds
Expected behavior
- Fresh bot token should have zero conflicts
- With health monitor disabled, no automatic restarts should occur
- /agents command should return list of bound agents
Actual behavior
- getUpdates conflict starts within 60-120 seconds of container start
- Continuous 409 errors every few seconds with exponential backoff
- Messages to Telegram bot are silently dropped
- /agents command receives no response due to conflict blocking message processing
OpenClaw version
2026.3.13-1 (built from source)
Operating system
Ubuntu 25.10 (Docker container)
Install method
Docker Compose with official docker-setup.sh
Model
openrouter/z-ai/glm-4.5-air:free
Provider / routing chain
OpenRouter (Z.AI), Single model, no fallback chain
Config file / key location
openclaw/openclaw.json
Additional provider/model setup details
- Provider: OpenRouter (openrouter.ai)
- Model: z-ai/glm-4.5-air:free (Z.AI GLM-4.5 Air free tier)
- Authentication: API key via OPENROUTER_API_KEY environment variable
- Agent Configuration: Multiple agents (main, testagent) all using the same model
- Workspace: /home/node/.openclaw/workspace/ (Docker container path)
- Gateway Mode: Local (lan binding, port 18789)
- Health Monitor: Disabled (gateway.channelHealthCheckMinutes: 0)
Logs, screenshots, and evidence
[telegram] starting provider
[telegram] getUpdates conflict: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running); retrying in 2.09s
[telegram] getUpdates conflict: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running); retrying in 3.82s
[telegram] getUpdates conflict: Call to 'getUpdates' failed! (409: Conflict: terminated by other getUpdates request; make sure that only one bot instance is running); retrying in 6.81s
...
Impact and severity
- High severity - Telegram bot completely non-functional
- Silent failure - No user-visible error, just no responses
- All commands affected - /agents, /status, regular chat all fail
- System instability - Cannot use OpenClaw for production Telegram bots
Additional information
Evidence It's an OpenClaw Bug (Not External)
- Fresh Telegram bot token - No other instance could be using it
- Single container running - Verified with
docker ps and ps aux
- Health monitor disabled - Set
channelHealthCheckMinutes: 0
- No systemd services - Checked
systemctl and crontab
- No host processes - Only one
openclaw-gateway process visible
- Webhook cleared -
deleteWebhook confirmed no webhook set
Related Issues
This appears to be a recurrence/regression of:
Workarounds Attempted (None Successful)
- ✅ Disabled health monitor (channelHealthCheckMinutes: 0)
- ✅ Used fresh Telegram bot token
- ✅ Complete container stop/start cycle (not restart)
- ✅ Cleared webhooks via Telegram API
- ✅ Built from stable release v2026.3.13-1
- ✅ Verified single container/process
Additional Context
- Container starts healthy and reports no initial conflicts
- Conflict appears consistently 60-120 seconds after start
- Issue occurs with both minimal configuration and full production config
- Affects single-account setups (not just multi-account)
Bug type
Behavior bug (incorrect output/state without crash)
Summary
OpenClaw's Telegram provider produces continuous
409 Conflict: terminated by other getUpdates requesterrors even with a brand new Telegram bot token and health monitor completely disabled. This indicates an internal polling loop leak, not an external conflict.Steps to reproduce
{ "channels": { "telegram": { "enabled": true, "botToken": "<NEW_BOT_TOKEN>", "dmPolicy": "open" } }, "gateway": { "channelHealthCheckMinutes": 0 } }Expected behavior
Actual behavior
OpenClaw version
2026.3.13-1 (built from source)
Operating system
Ubuntu 25.10 (Docker container)
Install method
Docker Compose with official docker-setup.sh
Model
openrouter/z-ai/glm-4.5-air:free
Provider / routing chain
OpenRouter (Z.AI), Single model, no fallback chain
Config file / key location
openclaw/openclaw.json
Additional provider/model setup details
Logs, screenshots, and evidence
Impact and severity
Additional information
Evidence It's an OpenClaw Bug (Not External)
docker psandps auxchannelHealthCheckMinutes: 0systemctland crontabopenclaw-gatewayprocess visibledeleteWebhookconfirmed no webhook setRelated Issues
This appears to be a recurrence/regression of:
Note: The fix from PR Telegram: stop bot on polling teardown #31141 (merged March 2) does not resolve this issue - the polling loop leak persists.
Workarounds Attempted (None Successful)
Additional Context