#Telegram shows “…Typing”
1 messages · Page 1 of 1 (latest)
That’s not expected “normal idle” behavior.
In OpenClaw the Telegram “…typing” indicator is sent while the gateway thinks a run is still active (it’s basically sendChatAction(typing) on a loop). So if it’s constant, it usually means one of these is happening:
- a model run is getting “stuck” (most commonly: a streaming response that never cleanly ends, especially with some self-hosted/custom providers), or
- a tool call / follow-up runner is hanging and keeping the run alive.
A couple quick checks that will pinpoint it:
- What does this print?
openclaw --version
- While the chat is “typing”, watch logs for 30–60s and paste the relevant bit:
openclaw logs --follow
If you see repeated typing signals and no “run complete”-type logs, it’s almost always a stuck stream/tool.
Workaround (to stop the symptom)
You can disable typing indicators entirely:
{
agents: {
defaults: {
typingMode: "never"
}
}
}
Docs: https://docs.openclaw.ai/concepts/typing-indicators
If you want the real fix
Reply with:
- your
openclaw --version - whether you’re using a cloud model provider or a local/self-hosted one (and if local, which stack)
- the log snippet around when it starts typing and never stops
…and we can narrow down whether this is a 2026.2.24 regression, or a model/provider streaming hang that just became more visible after the update.
Openclaw version 2026.2.24
Hostinger VPS
This error is in log over and over: 15:35:39 error telegram/api {"subsystem":"telegram/api"} telegram sendChatAction failed: Call to 'sendChatAction' failed! (429: Too Many Requests: retry after 3)
Also, it just feels very slow
That log line is the smoking gun:
telegram sendChatAction failed ... (429: Too Many Requests: retry after 3)
So OpenClaw is trying to spam Telegram “typing” (sendChatAction: typing) and Telegram is rate-limiting it. When that happens you’ll often see:
- the chat stuck showing “…Typing” (because the gateway still thinks a run is active), and
- everything feeling slow (because the Telegram worker queue ends up waiting/retrying a bunch).
1) First: stop the stuck run (usually fixes “typing forever” immediately)
In the same Telegram chat send one of these as a standalone message (no slash):
abort (or stop / esc)
FAQ section: https://docs.openclaw.ai/help/faq#how-do-i-stopcancel-a-running-task
If it was a hung model run / tool run, that will release the per-chat queue and the “typing” should stop.
2) Reduce typing spam (prevents the 429)
In your config, bump the typing cadence (or disable it):
{
agents: {
defaults: {
typingIntervalSeconds: 15,
// optional hard stop:
// typingMode: "never",
},
},
}
Typing docs: https://docs.openclaw.ai/concepts/typing-indicators
3) If you enabled Telegram live previews, consider turning them off (common 429 amplifier)
Check whether you set channels.telegram.streaming to partial/block. If yes, try:
{
channels: {
telegram: {
streaming: "off",
},
},
}
Telegram streaming docs: https://docs.openclaw.ai/channels/telegram (see “Live stream preview”)
4) One key question to pinpoint the root cause
What model/provider are you running on that VPS (cloud provider vs self-hosted like Ollama/vLLM/etc.)? A stream that never terminates is the most common reason OpenClaw keeps a run “active” and keeps attempting typing refreshes forever.
If you paste ~30 lines of logs right before the typing starts getting stuck (model selection + any tool start), we can usually tell which part is hanging.
Root cause found: After updating to 2026.2.24, the typing indicator was firing too aggressively (looks like sub-second interval). Telegram rate-limits sendChatAction to ~1/sec per chat, so it was hitting 429s on every ping. The gateway retries on 429, which keeps the run "active," causing the constant "...Typing" and general slowness.
Fix: Setting agents.defaults.typingIntervalSeconds: 15 resolved it immediately. Might be worth flagging as a regression — the default interval post-2026.2.24 seems too aggressive for Telegram's rate limits.
Yep — that diagnosis + workaround makes sense, and the sendChatAction … 429 loop is exactly what produces the “stuck typing + everything feels slow” combo on Telegram.
Two notes that might help pin whether it’s truly a 2026.2.24 regression vs a config/session override:
-
The documented/default typing refresh cadence is 6 seconds (
typingIntervalSeconds), which should be way under Telegram’s limits. So if you were seeing “sub‑second”, it’s worth double-checking you don’t have an override in either:agents.defaults.typingIntervalSecondssession.typingIntervalSeconds(per-session overrides can surprise you after upgrades / old session state)
-
Setting
agents.defaults.typingIntervalSeconds: 15is a totally reasonable fix for Telegram (and honestly a nicer UX anyway).
If you’re up for it, this is worth filing as a bug with the key details you already collected (version 2026.2.24, Telegram, VPS, repeated sendChatAction 429s, and that raising typingIntervalSeconds fixes it):
https://github.com/openclaw/openclaw/issues
Also—if this fixed it for you in this thread, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow indexes it for the next person.
the issue appears to be persisting
If it’s still persisting after setting agents.defaults.typingIntervalSeconds: 15, then one of these is true:
- that config change isn’t actually being picked up by the running gateway (common on VPS/service installs), or
- you have more than one OpenClaw process hitting Telegram (duplicate gateway instances), or
- typing is no longer the only
sendChatActionbeing spammed (less likely, but we can verify).
Can you paste the output of these commands from the VPS?
openclaw gateway status
openclaw config get agents.defaults.typingIntervalSeconds
openclaw config get agents.defaults.typingMode
openclaw config get session.typingIntervalSeconds
openclaw config get session.typingMode
openclaw config get channels.telegram.streaming
Also paste ~10 lines of logs showing the repeating 429s with timestamps so we can see the actual frequency.
Quick isolation test (30 seconds)
Temporarily disable typing entirely and restart:
openclaw config set agents.defaults.typingMode '"never"'
openclaw gateway restart
- If the 429 spam stops immediately → we know it’s purely typing + config/interval/application/dup-process.
- If you still see
sendChatAction ... typing ... 429even with typingMode=never → that strongly points to a second gateway instance still running with the old behavior (or config mismatch).
Once we see gateway status + the config get values, we can tell which branch you’re in and fix it cleanly.
Actual root cause: streaming: "partial" was the main culprit. With that enabled, the gateway fires typing indicators continuously throughout the entire response — and with multiple cron jobs + heartbeats running frequently, it looked like constant typing. The 429s from Telegram made it worse by causing retries that amplified the loop.
Ah yep, that tracks.
On Telegram, channels.telegram.streaming: "partial" means OpenClaw is constantly editing a “draft/preview” message while the model streams. During that whole window it will also keep sending sendChatAction(typing) to keep the indicator alive, so if you have frequent activity (cron + heartbeats + multiple chats) it can feel like “always typing”, and you can absolutely run into Telegram’s sendChatAction rate limits (429), which then adds retry/backoff noise and makes everything feel slower.
What I’d recommend as the stable fix:
- Turn off Telegram preview streaming (most people don’t need it):
{
channels: { telegram: { streaming: "off" } }
}
- Keep a saner typing cadence anyway (to be safe on Telegram):
{
agents: { defaults: { typingIntervalSeconds: 10 } }
}
Telegram streaming docs: https://docs.openclaw.ai/channels/telegram (Live stream preview)
Typing docs: https://docs.openclaw.ai/concepts/typing-indicators
If this fixed it, please right-click the solution message → Apps → ✅ Mark Solution so it gets indexed on Answer Overflow.
the fix worked. Also worth noting for you: the per-account streaming settings override the top-level — setting channels.telegram.streaming: "off" alone wasn't enough on my server because accounts.default.streaming and accounts.trader.streaming were still set to "partial". Had to patch all three. Might be a useful edge case for their docs.
Good catch — yep, per-account settings override the top-level for Telegram (so channels.telegram.accounts.<accountId>.streaming will win over channels.telegram.streaming).
So the “bulletproof” config shape is:
{
channels: {
telegram: {
streaming: "off",
accounts: {
default: { streaming: "off" },
trader: { streaming: "off" },
},
},
},
}
(or instead of setting "off" everywhere, you can remove the per-account overrides so the top-level applies, e.g.)
openclaw config unset channels.telegram.accounts.default.streaming
openclaw config unset channels.telegram.accounts.trader.streaming
openclaw gateway restart
Agree this is a docs edge case — the Telegram docs mention per-account overrides for some things (like capabilities), but not streaming specifically. If you can, filing a quick docs issue with that note would help a lot: https://github.com/openclaw/openclaw/issues
If this thread is solved now, please right-click the solution message → Apps → ✅ Mark Solution so Answer Overflow indexes it.