#Telegram
1 messages · Page 1 of 1 (latest)
👋
I take care of the Telegram provider, feel free to ping me!
Hey
Working on this patch at the moment: https://github.com/openclaw/openclaw/pull/21925
it's funny, cause that issue is not letting me fix the issue cause I'm using openclaw to fix it and I don't see what commands it's running and I'm working blindfolded
Exec: run cd - thats what I'm seeing when openclaw is doing changes or trying to run docker so I can check the fix
Telegram
BTW @silk portal I was thinking of:
- disabling edit streaming by default on Telegram
- changing the Telegram streaming config to just a simple
streaming: trueinstead ofstreaming: off | partial | block
So it doesn't edit random messages in history?
Is this a new bug? I only wanted to simplify the config
ah, got it
yeah, when it's doing work, I get random messages edited by openclaw, not sure if bug or feature
And the order of messages is messed up a lot of the time
Simple PR, we drop block streaming completely and only keep streaming: true | false
Will test it out and merge tomorrow
it's going to behave as block now?
As partial
got it
https://github.com/openclaw/openclaw/pull/21925
fix works for me, ready for review
Oh dang I liked block but oh well
Hello what do you guys use so that openclaw can listen to your voice messages on telegram?
@true hare could you take a look?
I use raycast keyboard and do voice to text so i can read before sending
Yeah I mean it's a neat party trick to do the STT on the bot itself but dictation works fine
it should be able to do it on its own, tell it to figure it out
So far it hasn't it's been trying to figure it out since yesterday. But I'm using free opensource models so he's a bit dum 😆
I don’t trust it cause even when I’m using raycast with whisper, it makes bad mistakes sometimes and I dont want bot to do random stuff for me
Groq(not Grok) is providing free usage for whisper models
Awesome I'll dig into it
@summer spoke could you take a look?
i dont maintain telegram stuff, just be patient
Sure, just woke up gimme a bit
This has been merged. Just a simple true | false for streaming now
guys, have i had allucinations or at the beginning of february i was able to interact with the bot on a telegram group without @ it? Now it is ignoring everything that does not @ him. Sounds weird, even because when you @ him at the beginning of the message you can't write text but just commands
I set up multiple Telegram group chats so I could have multiple agent threads to minimize context cross-pollution, but like @magic harbor messages are ignored unless I ping the bot with @, even though I gave clear directions that every message in every group chat should be responded to.
and i can bet it was reading the messages before without being @tted to. I'v also made him Admin.
try /activation then press "always"
yes that worked, just found out. But adding it to the .json config invalidates it
wiki says to add: groups: {
"*": { requireMention: false },
},
but doesn't work
Hey guys.
I'm new here, just introduced my self in the introductions channel.
I have a PR up at https://github.com/openclaw/openclaw/pull/18170.
@true hare may I request you to please take a look?
Thanks. That brings up another issue - these new inline buttons don't work reliably. I've clicked 'always' half dozen times, and selection still doesn't register.
perhaps one of you might consider merging this small gating/validation check for telegram channel destinations? my claw kept getting them wrong in the cronjobs. https://github.com/openclaw/openclaw/pull/21930
@silk portal you were having this issue right
Yes, and it’s working fine after my fix got merged
Not sure if we want these as valid delivery targets for cron
@username, https://t.me/username
they are accepted in the rest of the code though, so they work.
yes please
oh wow, just enabled DMs with threads ... amazing! unfortunately also broken, as looks like openclaw can't target specific threads. Seems like this issue https://github.com/openclaw/openclaw/issues/13566 ... anyone knows if there is a PR that fixes this that I can use?
oof, I thought we fixed this. Can you share how to repro the bug?
shouldn't the issue be closed then?
it doesn't send to the wrong thread, each thread has a separate session ... my gripe is that i can't setup crons with a specific thread
Please feel free to find every duplicate issue for a problem out of the 4,500 and I’ll close them
🥲
I mean with a group, it was "easy" (relatively) to define cronjobs to send to specific topics in the group. other than the wrong syntax minimaxm2.5 used (#1474436078373966089 message) ; but with topics, it doesn't seem to be possible?! idk.
Reviewing
Hmm using the t.me links as delivery targets doesn't sit right with me (especially considering usernames can keep changing), let me see if we can use a stable identifier instead
my AI assistants told me its a valid target in other areas of the code
Yeah that should get removed too, I'll fix it
Especially since Telegram explicitly lets you resolve usernames to userIds
5am .. I'm off to sleep, thank you for taking a look! one less patch for me to maintain in my claw.
I'm having a tough time. Spent all day trying to get my Dms recognized by my Telegram bot. I've had every Codex agent and Opus 4.5, Sonic 4.5. I've had them all working for over ten hours trying to troubleshoot this. Smoke tests, everything. I need help.
What's wrong?
Are you on Windows / WSL2 by any chance
Mac mini
Currently, I have the codex 5.3 in a terminal running. Here's the message, but it's still spinning.
• I found an immediate blocker: the OpenClaw gateway is currently not running
(service not installed / not loaded), so Telegram messages cannot be processed
right now. I’m bringing the gateway back up and validating live ingest/output
next.
This is what it's doing currently, right now, and it's been going like this for ten hours between multiple LLMs trying to troubleshoot
Do you want me to run host-level direct/proxy Telegram API checks to
pinpoint why Telegram replies are failing?
Does the web ui even work for you?
I'll try it
No action on the web
I'm contemplating just completely uninstalling and doing a full reinstall
The additional numeric ID onyl work I was doing got way out of hand so I've merged this as is and I'm working on a follow-up PR
Which actually surfaced some deeper issues with cron idempotency
The follow up PR in #24166 does the following now:
- You can still enter legacy Telegram targets (@user, t.me/...) in config/cron
- At send time, OpenClaw now requires numeric chat ID for Telegram API calls
- If target is legacy, it resolves via getChat, uses numeric ID, then writes back numeric target to config/cron
- If legacy target cannot resolve, it fails clearly (no silent fallback)
This has been merged. I tested it quite thoroughly (with like 30s crons lol) and there don't seem to be any regressions. But please let me know if anything broke for your workflows
I noticed you tested it with groups and topics. But no mention of DMs with threads ... I'll try and see if anything else needs to be done in that regard.
idk if this is useful
technical reason:
when i use sessions_send, it creates a session and injects a message. coder replies to that session. but the reply delivery doesn't remember the message came from topic 2 — it just sees "this session was created by sessions_send" and defaults to sending reply back to me (inter-session).
the Telegram plugin doesn't preserve the message_thread_id (topic) through the sessions_send → reply cycle.
it's a bug/limitation in OpenClaw's Telegram delivery for sessions created via sessions_send vs regular incoming messages.
fix would be in the OpenClaw Telegram plugin — needs to carry the thread_id through the session to reply correctly 🐦
this is exactly what I'm working on right now ... #1474436078373966089 message
I'm going to be testing it now, but according to the llm it did it 🙂
Change in
src/infra/outbound/outbound-session.ts:
- Session key now includes thread ID for DM threads:
- Before:
agent:main:telegram:123456789(same for all threads)- After:
agent:main:telegram:123456789:topic:42(distinct per thread)fromfield also distinguishes DM threads:
- Before:
telegram:123456789- After:
telegram:123456789:topic:42when thread exists
ohhhh.... I also see the Feb 9th telegram bot updates include ability to create dm threads ... 🥩 😋
How do you even do a thread in a DM?
you have to enable it with the BotFather, its a new feature released in Dec'25
Ohhh this is way better than having to use a group chat
Howdy. I'm running OpenClaw 2026.2.22-2 on Arch (Node 25.2.1). Telegram channel is configured in openclaw.json with enabled: true and a valid bot token, but the Channels table in openclaw status is always empty. No Telegram initialization appears in foreground gateway logs at startup — it's like the channel is being silently skipped.
Things I've tried:
openclaw plugins enable telegram (writes to config, shows "disabled" after restart).
openclaw config set channels.telegram.enabled true.
openclaw config set plugins.enabled true.
Multiple clean gateway restarts via systemctl.
openclaw channels add --channel telegram --token <token> → "Unknown channel: telegram".
openclaw channels capabilities → "Unknown channel".
Confirmed bot token is valid via curl to api.telegram.org.
No network issues — Telegram API is reachable.
Config has the correct structure under channels.telegram with enabled, botToken, dmPolicy: pairing, etc. Gateway starts cleanly and is reachable. Just no Telegram.
What am I missing?
just making sure you have this in openclaw.json -
{ { channels: { telegram { enabled: true, botToken: "<token>" } } }, { plugins: { entries: { telegram: { enabled: true } } } } }
@wind vale , Four hours of grinding through config files, plugin states, and token rotations — and it all came down to one undocumented config key. THANK YOU!
Did you ask your agent to troubleshoot itself tho
That was my first attempt / waste of tokens. Then Claude and I tried everything, more than once. Classic.
which one?
{ plugins: { entries: { telegram: { enabled: true } } } }
This one. Just faced the same issue
@wind vale all of it
Anyway .... before I could try and test the threads thing, I had to fix my webhooks again after upgrading to the latest version. Would it be too much to ask to consider this "drastic" change? https://github.com/openclaw/openclaw/pull/20420
Hmm. With threaded dms on now it seems like crons that have output just target whichever random thread I was already in
I sort of got the targetting and tracking of proper DM threads working. But looks like in tg there is also a way to target the "no thread specified" user, and it just goes into the main "new chat" UI (on the desktop client) where all the different threads are intermixed with headers. I actually rally love it, only wish there was another "no thread" button to click, so that I could see these hidden messages that have no thread specified and answer them.
maybe I should post it as a draft PR :/
I think overall I liked the way a supergroup worked better except that there’s no way to prevent me from typing in the general channel and all of my threads show up in there.
And the way it shows that something is from a thread is different and much more subtle
I kept accidentally replying to threads in the general channel
You also can’t rename DM threads and if you want to use the top tab bar (which you def do on a phone) the only way to see more than like two is to intentionally name them with single emoji names. Which, btw, you also can’t change the icon for the threads in a dm
so, do you like it more or less than having a single convo?
I mean it’s obvi better than that, but, that’s not the only other option
I'm still stuck with my PR of having it work reliably with crons targetting specific threads. Obviously if you want full control you can open up a group with yourself and use topics.
I think topics are better except for the one thing where I can’t lock myself from posting to general
in my group I "closed" general, so no one can post there, incl. me
Yeah, I did that, but I can still post there, it’s just hidden
wait, you mean threads in dm, or you mean actual general topic in groups?
The latter
I guess its telegram's bugs and issues. My bot can't post to general, as it is not an admin in the group.
Can’t post screenshot but the top bar says “reopen topic” and yet I can type in it
Okay but I can
Which is actually the problem
It just shoves whatever I type in the all chat into general. It’d make more sense for it to go to the last displayed thread
Or if I could make it default to topic view …
tbh with groups and topics, I for some reason can't even see a general anymore in my group. at least in the desktop app.
Scroll up harder. Or look in the all channel
It doesn’t matter, because it doesn’t stick, but as a list of topics, it doesn’t show up unless you scroll past the top
right, but why would I want to post messages in general? I closed it for a reason.
Sure. So now click “all”
Which is the default when you enter it - you can’t save the topic view, you always start in message view, in the all channel
Let’s say you look at this and see a message from the bot. It’ll show you all of them, from any of the threads. You then just hit that text box, and reply to it.
Oops! You replied in #general even though you closed it and never want to post there
anyway .... I don't mind the general topic (id = 1), as I muted it and locked it, and I don't post there. and either way, I'm working on making DM threads work in addition to groups, because I don't actually have a private group with myself, the group is with other people.
Can’t you make another group though?
I wouldn’t mind them working but they’re worse UX than groups. Except that one thing lol
You also can’t switch to a topic view in the dm
Also, with threads I can see a list of all messagess across all threads in a single scrollable view, with the thread names/icons being the headers for the separators. I actually quite like that.
You can see that in a group too
That’s the “All”
It just is a little more subtle with the heading. It’s there, though
what do you mean I can't switch to "topic view" in the dm? what you said about it taking too much space and you having to name them as emojis and placing them up above the chat?
DMs don’t have a topic view the way groups do, where you see each channel separately.
Do you use a phone?
Like, it’s very obvious why you wouldn’t want to have the tabs to the left on a phone
I'm mostly with the desktop app. But DMs to have this, this is what I'm using. https://imgur.com/a/vqhu3ei
It uses like a third of the horizontal screen space
That’s not topic view. That’s message view with a tab bar
oh you mean a page where the list of topics exists, like in groups
I don't mind it not existing tbh
DMs only have message view
You can’t see a preview of the last thing you said so you have to click through all of them
right. well, its more of a telegram thing, who knows, maybe they'll implement it in the next release or something. these threads are fairly new, from December and February.
It’s a useful feature, and it not being there means it’s just a worse UX. Same with not being able to rename or change the icons of the threads .. though maybe that is on desktop? That’s annoying
to rename and change icons, got to go into the thread and "manage thread" to rename it. but I kind of want to keep permanent threads in there anyway. I just want to separate the dm alerts and different agents into different conversations for my brain to manage it. yes, I know I can do that with groups, but I dont wanna.
There’s no “manage thread” on dm threads on mobile
I guess I don’t get why you don’t want to use groups, it’s exactly the same thing except it works on mobile and has more features
But hey I’m not using your setup so 😉
I am kind of bewildered why they are so different, from a “why is the app like this” standpoint. DM threads came later, right? So they had all this stuff working for supergroups and then … did something else entirely for this?
I'm fairly sure that eventually, in the coming years, telegram will bring most of these features into threads as well 🙂
DM threads only appeared last December afaik. And the "create new thread" API only appeared this February
Right so they had supergroups for much longer
and they don't have the "all" view, they have the "new chat" view, which creates a new thread each time you type in it.
Right, it’s similar but not exactly the same. It works how I wish you could make general work in supergroups. But whatever
you think I should just abandon supporting these in openclaw and just open a group with myself? or its still a worthwhile persuit?
I mean, I think it’d be neat to have all the features supported. Don’t let me stop you from PRing a bunch of fixed. But personally, groups work better rn on mobile, and it sounds like they already mostly work in general, so I’d at least see if it worked for you
I also saw there was a closed huge PR in openclaw's repo for supporting non-bot channel, like an actual user with a phone number.
which could be pretty awesome imho, since a user can join other groups and lurk for data.
And also it can read my messages and reply for me directly xd
are you using inline mode with your bot?
Inline what?
exactly. no idea what it is! 🙂 https://core.telegram.org/bots/features#inline-requests
like when you type "@gif whatever" thats an inline bot
Yeah, the next question is what will it do if someone that isn’t me ats it
I also see bot settings have an option to "disallow users to create new threads" .. that is nice 🙂
yep, it very briefly shows BAD_FORUM_CREATE_FORBIDDEN, and shows an empty thread when existing it it asks if I want to discard the message. that can be nice for saving myself from accidentally creating new threads in the dm.
the ui for "new thread" obviously is still in there 🙂
Hmm, can the agent rename the threads?
ayo. just found this channel wooo. so i'm trying to setup multiple agents on tg. i created teh supergroup, created the topics. but now do i have to create separate bots for each topic? what do a lot of you do here? how do you keep your main agent in the loop when you do that? so far i just tel lhim and he delegates
The way I use topics is to have separate contexts open simultaneously
I haven’t dove into getting entirely separate agents to respond in different topics but separate bots would certainly be one way
I feel like it should be possible to set a target agent in a particular topic, but I think it might actually require the separate bots unfortunately
They’re pretty lightweight at least
so i created 4 new bots. created teh supergroup. added them. but not sure how to restrict them to just one topic.
just wont' get it to work reeee. has anyone been able to do it successfully?
Well, at least if you created four bots, you can just do DM threads with them
What's broken? If you can make a PR I'll be happy to reveiw it
i love krill
#1476125197458215063 message
yea th ats what i did
i mean it's fine, but damnit i'd of loved to have one central thing. vs 5 agents pinned
well, you now have a pet feature you could ask your agent to implement
remember to ask it to look on github and see if there's an issue or a PR for it
Any big pending Telegram issues?
I believe the big cron / delivery target issues should be fixed now
One thing I’d really like to see is Discord style threads for subagents
Wish there was a way to do that in TG
Found a bug in cron + sessions_spawn on 2026.2.23+.
What happens: I have a cron job that spawns subagents to fetch RSS feeds in parallel and compile a news digest. Since 2026.2.23, the cron agent spawns the subagents, immediately says "Waiting for sub-agents..." and stops. That "waiting" text gets delivered as the digest instead of actual news. Subagents finish later but nobody collects their results.
Why it broke: A recent refactor added a note to sessions_spawn tool results saying "do not poll/sleep, results will come back automatically". In a normal chat session that's true - subagent results announce back. But in a cron job, the agent turn IS the entire run. When the model reads "do not poll" it stops working and responds with text, which ends the cron run. Before this note existed, the agent would naturally wait for subagent results.
Existing fix attempt: https://github.com/openclaw/openclaw/pull/27330 tries to suppress the note for cron sessions but uses startsWith("cron:") - which never matches because session keys look like "agent:main:cron:..." not "cron:...".
My fix: https://github.com/openclaw/openclaw/pull/27470 - changes to includes(":cron:") + 4 regression tests. Tested locally: digest went from 43s broken ("waiting for sub-agents") to 257s working (full news digest with 30+ items).
Issues: https://github.com/openclaw/openclaw/issues/27308 / https://github.com/openclaw/openclaw/issues/25069
cc: @true hare
https://github.com/openclaw/openclaw/commit/4258a3307f5a616c26c5bd63e108d918b71a9217 - tried this fix this morning, it didn't sort the issue and I had to fill a PR
if my fix gets merged, I think this PR could be closed: https://github.com/openclaw/openclaw/pull/27330
We can re-use the isCronSessionKey from helpers right? I'll push that in a separate commit
Cos I think crons already have a fixed canonical shape like agent:<id>:cron:...
@silk portal I pushed a small commit that re-uses the existing isCronSessionKey. Can you check if this still works?
checking
test answer came to wrong topic in telegram 🤦🏼♂️
looking into why it's happening, if it's something new or old
confirmed, it works
Merging!
@true hare 1sec
wait
Do we want to add a const here?
const note =
spawnMode === "session"
? SUBAGENT_SPAWN_SESSION_ACCEPTED_NOTE
: isCronSession
? undefined
: SUBAGENT_SPAWN_ACCEPTED_NOTE;
for cron for where undefined is?
It works fine right now, just thinking if we want to do it even cleaner?
I think it's fine as is
cool, let's merge then
https://github.com/openclaw/openclaw/pull/27330 - this one can be closed I guess?
It had a similar fix + something different, which probably got in the PR by mistake
Closed! Thanks
@true hare have an idea: what if we append /stop to each last message in telegram that bot is sending? (and remove it from previous ones)
That way it would be super quick to stop bot from doing something wrong, cause typing /stop or looking for it in the menu is kinda slow
Hmm maybe under a config flag, too noisy otherwise
BTW it would be really cool if we could have something like Discord. Where you can spawn a sub-agent and that sub-agent executes only under a new thread in Discord
It looks really cool IMO
But I don't think Telegram even has threaded sub chats like that
discord does same thing as slack, I guess?
Yeah, max we can do in tg is bot topics
People are asking for it for 5 years at least lol
I'll work on it when I have time then
Strange behavior today my ui chat channel and my telegram chat channel have always been the same. as of this morning on .25 i am getting api rate limit errors only when I send a message in telegram and only as part of the response. The ui chat channel shows the response while the telegram says API rate Limit and then Ill check the key systems for anything needing attention at this time.
seems my problem seems to be with outbound telegram delivery.
Can you test by disabling message streaming? Could just be hitting rate limits for that
Yes can do
Hmm was set to polling already
Looks like the reset let one through and then this again - will trouble shoot from tg side.
⚠️ API rate limit reached. Please try again later.
I'll check the key systems for anything needing attention at this hour.
My main chat got stuck on GLM-5 and its one thread limit thing on the coading plan could not get it to swiitch back to my nomrla model unles si killed the session as a whole
So not a telegram issue.. will go dig into the logs and figure out why and report if needed. thanks for the sugegstions
Can we get #22929 merged? It's approved and the fix is solid.
This has broken my setup twice now during upgrades — openclaw gateway install regenerates the plist without NODE_EXTRA_CA_CERTS, Slack SDK crashes with "unable to get local issuer certificate", and the daemon won't start. Every time I update I have to manually patch the plist to get the daemon running again.
cc: @true hare
Rebased #22929 with conflicts resolved → #27915
This fix adds NODE_EXTRA_CA_CERTS to the LaunchAgent plist on macOS. Without it, the daemon crashes on startup because Slack SDK (and other HTTPS clients) can't find system CA certs. Foreground mode works fine since it inherits shell env.
This has broken my daemon on every single upgrade — plist gets regenerated without the var each time.
Hey @true hare! I built a reductive memory module for OpenClaw (openclaw-memory-v3) and integrated Telegram notifications into it. Since you maintain the Telegram provider, would love to get your thoughts or feedback! GitHub: https://github.com/sunhonghua1/openclaw-memory-v3
Merged! Thank you
This one can be closed, it was merged as part of my pr
@silk portal is your Claw able to see a reply's parent messages? I don't think mine is able to see the parent, especially if I reply to an image
In telegram?
Yeah
Ahhh, reply context is metadata only, not the actual image file
I feel like this should be changed. If I reply to an image, claw only sees <media:image> not the actual image again
Ah
Just checked, it works fine for text
Don’t have images in recent chats
Yeah, definitely should understand and image as well
I'll try to get a PR out for this
Lmk if you need your fix tested
Today My Opus is so slow to repply in Telegram , its only me ?
Is there a way to configure cron annoucements to use a default destination for all failures? Or to override it for per-job failures?
https://github.com/openclaw/openclaw/issues/27317
@true hare could you take a look at this one?
I feel like I’m having this issue as well for subagents and heartbeat, when it doesn’t send anything if it’s over 4k symbols
Pushed a fix here: https://github.com/openclaw/openclaw/pull/29342
🔥🔥🔥
Thanks!
Will test it out
https://github.com/openclaw/openclaw/issues/28870 - found this issue with sandboxed browsers, could somebody take a look? I can't let agent open browser from within docker
Reviewing
Merged! Thank you
Thanks!
15m from PR to merge is 🔥
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
To learn how to create…
Hah we don't have to do our hacky edit streaming anymore
Now every bot can do message streaming
Let’s goooooo
Only DMs though 😔
maybe its time to merge my improved DM+topics thing then?
oh ... I didn't even open a PR for it 🙁 ..... anyway, its here now. I've actually been using it successfully for several days. https://github.com/openclaw/openclaw/pull/30579
Ah we had this at one point but removed it. Basically the idea is that it’ll become native soon enough for all bots
And we were maintaining like 3 ways to stream the text
It pretty much works the same as groups. Even though the UI for DM topics in telegram has less features that group topics.
Oh my bad, I thought you meant sendMessageDraft in threaded DMs
Reviewing
If you can sort out the Codex comments I'll be happy to merge it
OpenClaw v2.22 works fine, but starting from v2.23 (and any later version), when I use it with Telegram, it throws the error below and can’t communicate. How can I fix this?
07:17:48 [telegram] telegram deleteMyCommands failed: Network request for 'deleteMyCommands' failed!
07:17:48 [telegram] telegram deleteWebhook failed: Network request for 'deleteWebhook' failed!
07:17:48 [telegram] webhook cleanup failed: Network request for 'deleteWebhook' failed!; retrying in 2 .42s.
many many many hours, bugs, review comments, and tokens later ... it is finally polished enough to just pass the auto reviewers. https://github.com/openclaw/openclaw/pull/30579
@formal valleyHi, have you resolved the "one group with multiple agents" problem, i found that i can mention any bot, and the mentioned bot also can reply to me, but when one bot mention another bot, the mentioned bot couldn't reply
Merged! Thank you
no i haven't
Telegram bots cannot see other bots messages.
Okay.. i'll try Feishu channel to implement it
sendMessageDraft has been merged to main! I tested it a bunch in DMs, groups, with reasoning, without reasoning etc. Let me know if you face any bugs! https://github.com/user-attachments/assets/bb83f32f-c55d-43ae-a654-ec0079650502
upgraded to main, couldn't make it work. I did notice earlier that in group topics the bot started adding to existing messages, but I guess that is the old method of doing streaming? idk. definitely not seeing streaming in the direct messages, it just send the whole thing as a single message.
Are you trying in DMs? It won’t work on groups
yes I was using it in my DM topics. Would it also require a specific model type that has support for streaming? I'm using MiniMaxM2.5
Hmm it should not but maybe Minimax responds too quickly
Can you try with another model? Also it only works on mobile right now
I think Telegram Desktop update isn’t out yet
lol, I updated the mobile app, and had both of them open.... the desktop app showed the whole message immediately, while the mobile app was "streaming" the response 🙂
I mean the desktop showed the whole thing before the mobile finished ... 🙂
I think it's just a client side animation on mobile 😂
Let's hope Durov brings message streaming to groups too
I tried upgrading desktop to latest, v6.6.1 and I didn't notice it working with the streaming thing.
typing indicators are completely gone after the fixes to stop them from running indefinitely right?
Also... I asked "hey, what is the key combo on Mac to get the emoji keyboad"... boom got a reply. Thanks... used it... a minute later... reply bubble gets deleted from the chat in Telegram app... WTW?
Are you on main? I am just merging the fix for this
Yes, on main
Working on making it so you can actually approve a coding-agent escalation request in telegram.
Pull now! Just merged. Should be fixed now
Use this as an example prompt - don't stomp on my fix though 😂
/coding_agent in the foreground I want you to check npmjs.org for a package named "diver". Don't use Playwright MCP. I want to test the approval workflow to exit the sandbox. Let's run this in the ~/github/openclaw project
You should get: zero context - no idea what it's for no directory that it's in, no guidance on how to approve, and it doesn't even tell you what command it wants approve for, nothing. If you do know that you take the code and reply with /approve [code] allow-once then it will still fail... it'll tell you the code doesn't exist.
I have fixes for all this in hand.
Hmm, not sure if I'm doing it right but it just worked for me 😅
Oh... did you configure Codex at all or tell your TOOLS.md to always run with yolo or anything? Codex has it's own sandbox... in my case my TOOLS.md knows I only have Codex. If you invoked it without Codex then it might have just used Pi and I don't know that Pi has the same network access lockdown or not.
Ah fair, I didn't configure anything. Let me check
/coding_agent in the foreground I want you to check npmjs.org for a package named "diver". Don't use Playwright MCP. I want to test the approval workflow to exit the sandbox.
🧩 Perfect—that hit the approval gate exactly. Please approve request 1e947db7 and I’ll immediately finish the npm check for diver in the foreground.
/approve 1e947db7 allow-once
❌ Failed to submit approval: Error: unknown approval id
That's what I get on main. Always... been that way for weeks.
This is what I have in my TOOLS.md for each of my agents:
## Skills
When using a skill, respond with the configured emoji for the skill at the start of the message.
- Codex - If asked to code with Codex CLI or any request that causes you to decide to invoke codex, use the `coding-agent` built-in skill
Second order effect is: /approve detaches the turn... so even when the agent is running in foreground mode... it gets detached and can only raise a system event heartbeat to indicate that it's "done" after that point... and it can't ask for anymore approvals.
This is why I've been trying to figure out how Peter uses OpenClaw for coding with Codex. I'm convince he tells it "yolo" every time and tries to one shot every single coding task with the initial prompt because it simply does not appear to work if you want to use it any other way.
My MiniMax-M2.5 agent keeps adding Chinese characters to things, including image URLs from Telegram. It is a little bit annoying, but very funny. For example it added 在地上挨媎我怎麼在這裡 in https://telegram-cdn.ir在地上挨媎我怎麼在這裡/@kesor.../photo_1.jpg ... and Google Translate said this means How did I end up here, lying on the ground? 🙂
some of the chinese models will do that, you can help it by increasing min_p but that makes their output generally worse
Question -- Shouldn't it be possible to assign a specific agent to listen/answer in a group/dm topic? I thought that is supported, but the more I'm looking into the code and docs, it doesn't look like its the case. Should I add support for that?
There are existing PRs though ... #10576 #17732 #15154 #27562 #31473 #31513
but the added support that I created and merged for DM-topics is lacking in all of them.
RFF (request for feature?) -- https://gist.github.com/kesor/90162d2dacb1d71f846bedb8f18ffabf
You could always pick your favorite existing PR and fork it
I definitely want this feature
Yeah, PR #31513 is good, even though it needs a rebase. I'm thinking I'll patch it into my claw and test it for a while.
idk ... I kinda feel bad to "reuse" an existing PR that was broken and give it a bunch of polishing touches, but overall borrowing almost all code from the original. https://github.com/openclaw/openclaw/pull/33647
Just credit the original author
Oh was that specifically about a topic assignment within a DM or gorup? I have been assigning agents to groups... I created topics in the groups but I don't think I tried assigning an agent to a topic within that group.
yeah, its "agent per topic" implemented in this PR. obviously there is the default one ... but this PR allows to override specific topics with specific agents to be the responders in that topic. obviously also there is the cronjob announcers, that can be any agent announcing into any topic, so thats a separate thing.
I'm using it now with my DM+Topics bot ... so I have a dedicated channel now in the DM where I can talk to the coder agent for a specific project of mine. vs all the other topics where I just chat with the main agent.
Merged! Thanks
can you please give credit to https://github.com/openclaw/openclaw/pull/31513 ... since that was the OG that I took as the base and polished.
Done, thanks for the clarification ❤️
So my assumption that my /coding_agent invocation was using Codex CLI was wrong... I added code that relays the command that is asking for approval. It was relaying that npm was asking for approval and I thought this was from Codex CLI attempting to run npm. But when I remembered to tell it "use Codex CLI" it asked me for approval to run codex CLI with a single prompt...
is that working via ACP ?
I didn’t think we had ACP yet in Telegram? I haven’t tested it yet.
This just removes an unused function for Telegram:
merged! thank you
Now... why don't we have thread-bound ACP yet? I don't get what the flurry of new slash commands do... /focus /session... wut... I'm trying to grok it now with Codex.
In theory the thread-bound stuff would map to topics in DMs and Groups in Telegram right?
That's the plan! I believe Onur is on it as we speak
Hmm... I'm reading about it... I think I dislike it... gonna continue on my Codex App Server exploration. Maybe I have something better or nothing at all 😂
This has now landed on main
It doesn’t work… or it does but has restrictions that make it hard to figure out the surface of what works and doesn’t.
But… luckily the implementation I was doing last night can be and has been adapted so I can get “thread here” binding working and I can actually get spawns to work.
## Permission configuration
ACP sessions run non-interactively — there is no TTY to approve or deny file-write and shell-exec permission prompts. The acpx plugin provides two config keys that control how permissions are handled:
Oof... that's not as good as what I'm building... I swear I had escalation working for ACP last night too...
I wish I could easily put screenshots here... I guess I could modify the screenshot skill to allow it to easily upload to imgur and emit the URL so I can just copy/pasta it here... Off to open another worktree 🤣
https://github.com/openclaw/openclaw/pull/36683
I've made thread/topic binding work for Telegram with ACP, fixed the various issues on Mac with Telegram that prevented using it at all (-- being replaced with emdash in Telegram Mac client, causing parsing of spawn flags to fail).
Screenshots in the PR showing that almost nothing worked before and that now you can have different topics with different agents bound and that messages route automagically to that ACP session.
This was such a good PR, thank you ❤️
I’m very happy with it and with the help I received in getting it merged. I’ve got some really cool stuff I’m building locally. This was a little detour 😂
Hey, I'm trying to get things rolling with OpenClaw (first time using it). I've got a setup, with one agent working on telegram, both DM and Group Chat with mentions. Now I've added a second agent (distinct agent with it's own workspace), and I can dm it fine on telegram, but when I added it to the group, it seems to ignore @mentions and I'm not sure why... I currently have channels.telegram.groups has the group in it with requiremention true, and grouppolicy open, and then in channels.telegram.accounts.botaccountname I have grouppolicy allowlist for both bot accounts... I assume there is something I've done wrong, anyone else running multi-bots in a group chat that can help?
You'll find better luck in #1459642797895319552
https://github.com/openclaw/openclaw/pull/37233
I think I have fixed Exec approvals (such as when using /coding_agent) on Telegram where it currently just asks for approval, doesn't say how, then rejects the codes even if you figure out that it's /approve [code] allow-once.
- Approval requests presented as buttons
- Buttons removed after clicking one
- Approval actually works (doesn't say invalid code)
- Responds in correct Telegram Topic
- Exec is able to respond after the approval - currently it looks like the "turn" is ended by the approval workflow, which resulted in the agent NEVER being able to respond after an approval. You'd have to ask what happened. This was changed to use the heartbeat mechanism for a system event with routing back to the correct topic - resulting in the exec being able to tell you what happened.
https://github.com/overtake/TelegramSwift/issues/1350
Using / developing for OpenClaw has been a journey in fixing problems with every other project in existence 😂
macOS Telegram client closes the slash command auto-complete as soon as you put an _ in a command name like /coding_agent... we map all the skills from - to _ since only letters, numbers, and _ are allowed on command names. Works on iOS - autocomplete stays open. But on macOS it closes the autocomplete.
Sigh... is the Telegram Mac OS app dead? 8 months no commits?
huh, I keep getting regular updates
Weird
are you on the app store app or the full app?
Installed with Get Telegram for macOS button here?
Have you guys seen this too:
- In a Group (with you and bot only) with Topics
- Mac - Full app
- Top right
...menu on the group becomes justDelete, Editoptions - Can't create new topics...
- Go to another chat group, come back to this one, click back on All and now the option for
Create Topicand the others will re-appear
@true hare ready for review 😀 https://github.com/openclaw/openclaw/pull/39172#issuecomment-4017664417 ive summarized all the resolved comments in the most recent comment too.
I think full app, not macOS App Store
Huh... you see what I'm seeing though? The download page has link to github... no commits on main for 8 months?
I can code in Codex using threads I started in Codex Desktop via Telegram on the treadmill now... see plan docs, approve exec commands (not forced to use yolo mode), and more. Anyone interested?
This is so cool haha
BTW ACP sessions on Telegram topics persist across restarts right
Sorry, completely missed this. There's a MASSIVE release going out tonight, I'll try and get this merged after that one goes out
Yes, well... there is a temporary mode... but I don't know why... I only ever used it with persistent... partly because I live with pnpm gateway:watch on my primary claw... and it's going down/up like once a minute 😂
That's why I made this PR to ignore the .test.ts on the gateway watch: https://github.com/openclaw/openclaw/pull/36211
Now you should be able to merge them on your own 😆 https://discord.com/channels/1456350064065904867/1456744319972282449
@verbal torrent @sturdy ether would love your eyes on this, we've been getting complaints about duplicate message flash on Telegram when used with sendMessageDraft and as far as I can tell, this is the intended way of doing things according to Telegram 
https://github.com/openclaw/openclaw/pull/40013#issuecomment-4019296741
So the only reliable way to fix the duplicate message flash is to remove the draft -> message handover and stick to editMessageText 😔
I vote you land it and we revisit sendMessageDraft if/when telegram makes it less visually jarring. The fix will help cutdown on the amount of issues we get on it... which is a lot.
https://github.com/openclaw/openclaw/pull/40013#issuecomment-4019387257
If we're getting swamped and we think this will help then I concur. I can't claim to know the right solution to this without digging into the protocol and examining what we're seeing in detail.
Yeah, I've spoken to other bot devs and it's just such a new API nobody really knows of a clean solution. I'll stay in touch with those and add this back once we figure it out
I've got like 4 emails today alone for the duplicate issues 🥹
Landed
BTW I spoke to some more Bot devs and they say this might just be a client side rendering issue 😭
In the Telegram client apps, I mean. And that we might not be doing anything wrong
I love how the telegram app crashes when I send a message in a threaded dm sometimes
does anyone else struggle with configuring telegram group permissions?
Example:
- Allow DMs from only me
- In groups: Respond to everyone who mentions the bot
I find it quite annoying to configure DMs, topics and group perms. wondering if we should add such configs to telegram menu
I just redeployed fresh main, and I still get the duplicate message thing, with the second message missing a piece of the first line or two. Should I upgrade the telegram client to have it fixed?
😭
Can you figure out a way to reproduce it? I haven't been able to
I don't think its a rendering issue though. Since I can delete one of the messages and the other one remains.
and sometimes the first message has a NO_REPLY at the end, while the second one doesn't.
I'll try and mess around with the streaming configurations, I remember changing it in recent days, and this issue also appeared recently.
Yes please. I have so many claws running and I am just not able to reproduce it anywhere.
its some black voodoo thing ... idk. https://imgur.com/a/X2871Yq
PS: idk if related, but I have a setup for minimax via openrouter (and via cloudflare ai gateway) and when using this thing in OpenCode I also had this weirdness https://github.com/anomalyco/opencode/issues/15092 ; Opencode was working fine with minimax directly. It might be related to the duplication in claw, since I use a similar setup in there (cloudflare ai gateway -> openrouter -> minimax). And I did change it recently, so it might be an openrouter thing.
Digging into this. Thank you for the detailed report 🫡
its doing weird stuff in DMs as well. Splits short messages into two. Like
Glad it's working well! innie: Let me know if youneed anything else.
Got it. I'm trying to get a script up to reproduce this.
still not able to repro this
is there some debug flag I can turn on?
Can you give this to your coding agent:
Reproduce the Telegram duplicate-message bug end-to-end with real LLM calls.
Rules:
- Use the real inbound Telegram path through `src/telegram/bot-message-dispatch.ts` / `createTelegramMessageProcessor`.
- Do not use `openclaw agent --deliver`; that bypasses the bug.
- Use actual Telegram delivery and actual model/tool calls, not mocks.
- In the temporary harness, set `replyToMode: "off"` so fake inbound message ids do not corrupt preview sends.
- Instrument Telegram API calls and log every `sendMessage`, `editMessageText`, and `deleteMessage`.
Steps:
1. Create a fresh temp file with a random first line.
2. Send one synthetic inbound Telegram message through the real processor to chat `<CHAT_ID>` and topic `<TOPIC_ID>` with this user prompt:
Before any tool call, print exactly one line: <MARKER> first half visible now. Then use the read tool to read only the first line of <TEMP_FILE>. After the tool returns, output ONLY the continuation text: / <first line>. Do not repeat or restate the first line. Keep total visible output under 140 chars.
3. Confirm whether one inbound turn causes more than one real `sendMessage` to the same chat/topic.
4. If it reproduces, identify the exact code seam and the smallest fix.
5. If it does not reproduce, explain why, then try one stricter variant that still forces a real tool read.
Deliver:
- the exact API call sequence
- whether the duplicate is real or just rendering
- the root cause with file/function names
- the minimal patch plan
I don't really have a proper coding tool hooked with my claw's permissions. So I asked it directly, and this is what it came up with so far. https://imgur.com/a/L1oyl5Y
is this "can edit via preview" a bot permission thing?
Hmm, don't think so. A bot should always be able to edit its own message, checking
@wind vale can you try this branch please? https://github.com/openclaw/openclaw/pull/40883
@steipete WOW it was fixed in 0.8
Im genuinely impressed at the speed of this things development

There are so many different people running so many different configs 🥹
The amount of config permutations is too damn high!
At one point I tried to simplify it to a simple streaming: true | false but then the old one got patched back in 😂
What do you guys think of this?
I got rid of the heartbeat usage to send the post-approval exec tool result. Still sends the result though.
I also changed it to not try to LLM-prepare the approval dialog... it's deterministic.
That's this PR: https://github.com/openclaw/openclaw/pull/37233
Completely refactored after looking at it with the review scripts.
I'm setting up Discord now to see if it breaks or improves the approval workflow in other channels.
GitHub
Summary
Describe the problem and fix in 2–5 bullets:
Problem: Telegram exec approvals could fail with unknown approval id due to approval-id mismatch/rotation between prompt and resolve path, appr...
Following up on this pain point, I opened a PR for it:
https://github.com/openclaw/openclaw/pull/40820
thought it would be a small UX tweak, but I ended up wrestling with telegram callback auth, DM/group permission edge cases, and config write logic way more than expected.
open to feedback if anyone has thoughts on the UX or auth flow here.
Deterministic is good, I was wondering if we should add inline buttons for the user to approve / disapprove
Do we have any evidence that execApprovals are enabled/allowed/working for Telegram at all?
https://docs.openclaw.ai/tools/exec-approvals
It seems that it may be semi-intentional that approvals are not allowed / working right now because we never added this config option like Discord and don't allow filtering to specific Telegram peer ids (durable user number that can't be reissued).
So my PR may need to expand to:
- Add execApproals and approvers configs like Discord
- Document these settings
- Make sure we use the same hook points as the Discord button-enabled approval workflow
No evidence that I'm aware of. Happy to test the PR if you like 🫡
Ok, yeah... I don't even get working exec approvals in Telegram DMs with the bot... so I think this is just 100% not supported / not working today so I don't have to worry about breaking anyone.
If you guys want to just try in a group / group topic / dm this prompt it's a pretty safe way to confirm if it's going to A) ask you for approval B) accept the approval (it'll should say the id is not found)
/coding_agent Let's run npm to find out if there is a package called diver. You'll need to ask for approval I believe. We are testing a feature... so we're going to keep repeating this.
This has turned into so much longer of a journey than I thought it would be 😂
Do I need to enable anything? It's just asking me for verbal (text) approval
heh... yeah so it's broken. Is that in a DM or group? You can try telling it "approved"... and it won't work... then it will probably give you an approval code and you'll eventually figure out to do /approve [code] allow-once and that will get rejected and it will probably say "oh, the code rotated, try this" ad naseum.
I just need to make sure this doesn't work for anyone...
just tried it ... still happens 🙁
I sent “Approve” and it just did it lol
No permission check
Can you try with another model maybe? It might just be the model / your config
I'll try and reconfigure some things, sure. But its sending two messages to telegram ... so it wouldn't be a model issue. The model could be tripping some bug in the telegram logic though.
BTW you’re doing pnpm install && pnpm build && pnpm openclaw gateway restart right?
yes
took me forever to set it up, but I got the exact setup I had before, just sans the openrouter in the middle.
instead of openclaw -> cloudflare-ai-gateway -> openrouter -> minimax
it is now just openclaw -> cloudflare-ai-gateway -> minimax
and there are no duplicate messages anymore, even though I am still running with your patched PR code.
so it might have something to do with openrouter afterall 🤷♂️
yeah, I posted a link above for a PR with opencode that also shows openrouter having some weirdness with minimax specifically
my guess is that openrouter triggers some logic in the telegram code that uses some failover because "things failed", and that causes double messages.
hmm i'm wondering now if our issue templates collect provider info, if known. seems like it could be a useful datapoint to collect.
well, my provider was not direct openrouter, as I've noted above.
yeah that is a complex setup
i send all my tokens directly to China so they can spy on me without the middlemen
I wanted to have a man-in-the-middle so that I could inspect the requests and count the failures, if any.
looking at the requests is quite illuminating with regards to potential optimizations with the context. like I created a small agent with no tools and no soul and no nothing just for the cron jobs that runs skills for example.
which actually doesn't even work, because cronjobs can't be stripped from the identity stuff. but heartbeats can ... so I'm doing the crons from the heartbeat 🙂
I didn't find it in crons, I only found it in heartbeat configs.
I'll take another look
okay
Ok, I'm going to merge this... finishing up the review/prepare now: https://github.com/openclaw/openclaw/pull/37233
The changes are now more like the discord changes. I added configs for execApprovals. I tested all the corner cases I could think of. Neither having approvals enabled (show up in web ui). Both having them enabled (show in both + web ui). DM and channel routing in Telegram. When it sends a message somewhere else it gives you a brief, non-info-leaking, clue that it did that. Fixed some LLM prompt processing of approval prompts that I saw leaked into discord. I'm not claiming it's perfect... but it's about 1 full day more than I had wanted to spend on this 😂
oof, so what if you switch to main? Still have duplicates?
I'll test that soon. But for now, without OpenRouter in the middle, I no longer have duplicates. The exact same setup, just a single change in the model thing.
If you can reliably reproduce it and resolve it then are able to ask your clanker to fix the root cause (test obviously) and send in a pr?
sure, just give me some time, with the missiles overhead and the 1yo baby I don't get as much focus time as I'd like 🙂
yeah, works with current master as-is too. no duplicates. but with the hell I had to go through to switch away from openrouter ... not sure I want to try and go back again to test if its broken there.
Hmm, so this was an isolated issue for that specific case with OR in the middle. I'll close the PR in that case
This might be the root cause, checking: https://github.com/openclaw/openclaw/pull/41662
definitely looks plausible .. and might affect other slow providers
Hi guys, this ended up taking more time and being a bit more of a thing than I intended it to be, but you know how it is. The new tests make the PR line counts look a bit scarier at first glance than they actually are, though. 😅
My telegram integration has been broken on main with Network request for 'sendMessage' failed messages for the last week or so, which stems from recent changes to EnvHttpProxyAgent / autoSelectFamily handling within the channel code - in my case a constant flip-flopping between transport policies with different parts of the stack trying to update the global handler config and getting itself into a bit of a loop.
An initial fix around making the autoSelectFamily support sticky got me back up and running, but in reviewing the code and the various related gh issues/prs I've become convinced that the current approach with a global handler is not ideal, and is triggering issues from coupling the account/request-level transport decisions to a shared process-global state. So even when one path successfully falls back, later calls from a different path/account can re-apply different global settings and effectively re-trigger the same instability pattern (and noisy fallback logs).
I also found that different parts of the Telegram stack were not consistently using the same transport resolution path and/or calling fetch directly, so probes, doctor/status checks, sends, audits, and media downloads could behave differently under the same network conditions.
I've prepared and reviewed a PR that moves Telegram networking to resolver-scoped dispatchers (instead of a global handler), unifies those network paths, better handles fallbacks, and adds a range of new tests to ensure consistent handling and fallbacks.
I know @fading field has done a bit around EnvHttpProxyAgent / autoSelectFamily support recently, and you've all been pretty involved in the tg channel code, so I would love to get any thoughts / feedback / added context here.
Just merged it, can you try again with your OR route on main?
Merged! Thank you. Made a few changes to the PR before merging but I tested the changes manually and all seems to be well! Great PR ❤️
Hope this PR fixed the issue for you 👍
I think Docs can’t keep up with the pace of dev
I think only @wind vale reported that bug
I just tested, unfortunately couldn't reproduce the bug with openrouter brought back ... :/
wanted to see if the newest main "fixed" it by first verifying it was broken, and can't see it broken anymore 🙂
I think the issue for me, is that my OpenRouter is using fallbacks like Fireworks and Friendii instead of the actual MiniMax provider.
aha! able to reproduce it again ... duplicates.
Reproducing it after the fix? Or before?
After the fix, and with forcing the minimax provider in the openrouter configuration via their guardrails feature.
it didn't duplicate when it was "free to choose". which is what openrouter usually is for.
the forced provider are:
5.06 seconds first token latency + 19.8 tokens/second throughput- the Fireworks provider is
1.53 seconds first token latency + 34.0 tokens/second throughput
there is just not enough visibility into the actual bodies of requests/responses to see if there are any other differences
thank u, you're very detailed i opened another PR to follow up with this
#40444 #40751 #40591 #41200 #40775 #40925 #40763 #40662 #40569 #40484 #40461 #40456
One issue report and 10 PRs... did not check if they are AI-generated slop or not. But in any case if we are rejecting negative numbers for groups that would be a problem. Should be easy to verify. It might be why web ui refuses to save my config file in pretty editor mode too (with no error as to why, just invalid config - not even a server side log saying why).
did not check if they are AI-generated slop or not.
Hah, that's a yes: https://x.com/AskPerplexity/status/2031038321678528667
You can now use Claude Code and GitHub CLI directly inside Perplexity Computer.
We gave it an open issue on Openclaw. Computer:
→ Forked the repo
→ Wrote a plan to fix the bug
→ Opened Claude Code and implemented it
→ Submitted a PR via GitHub CLI
2026.3.11 - Brings “execApprovals” to Telegram for the first time ever. I messed up the change log entry so it got reported as a fix when it turned into a feature addition.
To try it, use the prompt below. If you have not enabled execApprovals in the config it should tell you it’s hitting you up on the web dashboard and possibly on Discord if configured (it doesn’t know - it’s a static message). If the web UI is up the approval will appear as a modal popup. Approve it and you’ll get the results in Telegram. Then enable Telegram execApprovals for your user id and you should get a DM (if sent from a Group Topic for example) asking for approval. It’ll have buttons! Then change the target for approvals to channel and it will send the approval in the Group Topic.
/coding_agent Let's run npm to find out if there is a package called diver. You'll need to ask for approval I believe. We are testing a feature... so we're going to keep repeating this.
Enjoy! (I hope it works!)
@true hare https://github.com/openclaw/openclaw/pull/46407 - add ability for openclaw to rename topics in telegram
Started to review but there will still commits coming in. Can you ping me once it's ready?
yeah, waiting for greptile to stop being annoying
will ping you
@true hare ready
Confidence Score: 5/5
Oh… I have that in my Codex App Server branch. It’s exposed to the plugin interface.
But this change is not really connected to Codex, isn't it?
No my point is I have that change and it's exposed in a new plugin surface (I think since I'm using it from a new plugin). So my point is we should not likely add it in an isolated sense but rather add the plugin interface or jsut wait for my PR to land maybe later today.
Got it
No rush on my side, happy to drop my pr if it gets merged elsewhere
Helllllll yeah this might get me to subject myself to the gauntlet of upgrading
maybe also add the capability to create topics? at least in the DM topics thing, there is a setting in BotFather to prevent the users from creating topics, but obviously the bot can, so it can be delegated to the bot.
Oh right the plugin surface expansion, it'll be merged soon right?
Yes, hopefully. I believe I addressed the security concern around binding. It now has to be approved by core and saved by core.
The PR is here, for the expanded surface:
The repo with the plugin (not fully ready for testing yet... haven't published to npm yet) is here: https://github.com/pwrdrvr/openclaw-codex-app-server
I got this one that is waiting forever ... https://github.com/openclaw/openclaw/pull/41496 ... but these things don't have anything to do with Telegram.
Check the greptile comment. I think you need to @greptile-apps please re-review latest code in a comment. It says some of the stuff is non-functional but it's from a week ago.
Also... it's a big surface.
I'd say: make a video if you can like this: https://github.com/openclaw/openclaw/pull/36211
Show some of the use cases. That would go a long way towards helping people understand it.
The removal of explicit types and changing to string for some values is going to catch some eyes.
If you have no already do a /review in codex then ask it to fix any issues. Then ask it if this is the most concise /focused way to implement the objectives of the PR and whether this can / should be split into more than one PR (not saying it should - saying ask).
you can just mention it with @greptileai in a comment, and it does a re-review. it also modifies the comment it made at the very top.
already have Vincent interested in reviewing it, he assigned it to himself some days ago, just takes time I guess.
If it was days ago it means he ran the $review-pr skill which auto-assigns to the maintainer that ran it. It doesn't mean he'll remember to come back to it and I've been distracting him since then so he's not coming back 😂 But I was going to nudge him that this one might be interesting to him.
Let me land some things today... once we get our project out of the way I'll try to mention this one.
Actually... I know another maintainer who might want to take a look
thanks for the ping @verbal torrent
@wind vale i will look at your PR in more details soon
i've been working on completely overhauling the plugin system so plugin code is fully owned by plugins (aka extension host/adapter style) and kernel only orchestrates and is plugin agnostic
it changes the whole plugin surface and allows for functionality like the one you seem to be proposing in the PR; i can point to the implementation if you want to take a look and give feedback
Hi, made a new PR on top of Harold's changes for this. Manually tested it and it works well! Thanks for the PR
my main hairy issue is the whole configuration validation from plugins, the sequence of logic in there makes it non trivial to have plugins add their own validation before they are loaded.
tbh the existing providers in core, if they are all moved to plugins, it would make this whole thing of configuration validation a lot simpler.
yea, goal is to have everything be a plugin, including providers for auth, search, channels, tools, commands/services
Great, thanks!
Filed an issue, /status doesn’t show correct usage, just shows 0/1m
Hi friends!
New PR: auto-rename Telegram DM topics on first message using LLM.
Problem - DM topics get generic names and you either rename manually or ask the bot (which it forgets).
Solution - gateway auto-renames with a lightweight LLM call, fire-and-forget, on by default. Can be disabled per-DM or globally via autoTopicLabel: false, or customized with your own prompt. https://github.com/openclaw/openclaw/pull/51502
Greptile says 5/5, I tested locally, everything works
Merged! Thank you
Thanks!
This might be the wrong place. But I can’t get my openclaw that I just set up on Mac mini m4 to work with telegram. I have set it up inside docker desktop and that seems to cause connectivity issues (something about ipv6 but I already am supposedly forcing ipv4). Even my openclaw can’t set it up successfully. Any pointers? My openclaw uses Xiaomi mimo-v2-pro
Try in #1459642797895319552, the bot there should help a lot with debugging
Ok cool thanks, will try there!
I use a group with a different thread for each topic. E.g. I'll have one for work, one for travel and I even have some ACP binded sessions for Cdoex in a specific project too (thanks @verbal torrent!)
But all the same bot? Why not a different bot for each topic? Wouldn't you want your business chat to have different knowledge or even tone? Or am I thinking too small? Does one bot just make that adaptation on the fly?
Yeah, all the threads are isolated contexts anyway
I think you should also be able to isolated workspaces
Created an issue for subagent topic send degradation, it's sending images to main topic instead of the correct one
https://github.com/openclaw/openclaw/issues/52217
https://github.com/openclaw/openclaw/pull/52791 - fixed /status and other commands when SecretRef is used
Hey guys, created a PR on this painpoint of mine. When you /restart, there's no confirmation the bot actually came back online. You will have to guess. My PR wires up the existing restart sentinel so you get a notification in the same chat after restart. Appreciate eyes and any feedback on it😀
https://github.com/openclaw/openclaw/pull/52900 - fix this issue (messages being sent to main instead of topic in telegram)
Yep, waiting for the hotfix release to go out then we can merge
Ah, cool
Bug fix: exec: SecretRef crashes embedded agent on /new and /reset
If you use exec:, env:, or file: SecretRef for channel bot tokens (Telegram, Slack, Discord), the embedded agent crashes with unresolved SecretRef on every /new, /reset, and sometimes regular messages.
Root cause: channel monitors capture config at startup before secrets are resolved, then pass this stale config directly into the reply pipeline - bypassing loadConfig() which has the resolved snapshot.
Fix: detect unresolved SecretRefs in the config override and fall back to the resolved runtime snapshot.
https://github.com/openclaw/openclaw/pull/53577 - opus was trying to fix it for 2hrs, gpt-5.4 did in one prompt 😅
greptile 5/5
(That's a different bug from the one I've fixed before for /status)
Merged! Thank you. Rewrote it a bit before merging
Thanks!
That secretref apparently broke a lot of stuff 😅
https://github.com/openclaw/openclaw/issues/53581
made an issue to split cron so it’s easier to track in git, lmk what you think
Am I the only one who experiences the “typing...” bug on Telegram—where it sometimes appears and sometimes disappears?
Also, Openclaw sometimes works, and while it sends a message, I don't always receive it on Telegram, so I have to ask them to resend it to me on Telegram.
hi, i have a problem when using the telegram channel with my openclaw. the more i use it, the more it takes for it to answer me. when i ask, he says it's because the context is too large and then I try to compact it but it takes a long time. is there any way that the system can compact the chat automatically whenever it needs to so that it stays performant?
Ask Claw to check for auto-compact buffer, I think it's set to around 90% of the context window but you should be able to bring it down
Do we not have any way to allow openclaw to send polls in telegram?
We do though
how do you set it up
It just works. Ask in #1459642797895319552 if it doesn't work
ooof yea i'm getting really bad degradation. it's posting to wrong topics, and then resurfacing topics in other threads that it resovled hours ago.
weird question, can you scope agents.md or a stype of workspace for a specific telelgram topic? like, same agent but when it goes into a specific topioc it reads from a seprate file to give it specific context on that topic channel
Oh main?
Ya
I just merged a PR that should solve it, can you check now?
The Bot API is an HTTP-based interface created for developers keen on building bots for Telegram.
To learn how to create…
Support for Manager Bots now 👀
hi, I reinstalled openclaw on a new machine and telegram does not seem to work.
My bot is configured correctly but telegram messages do not seem to reach the gateway.
Logs do not show any telegram initialization.
Basically this: https://github.com/openclaw/openclaw/issues/61273
ohhh.... bot-to-bot comms https://t.me/BotNews/117 are allowed in telegram now! https://core.telegram.org/bots/features#bot-to-bot-communication
? For some reason adding elevenlabs is not working. Where do we place the command in openclaw to add eleven labs in the block section
Hey, I think I found an STT / audio-transcription issue in OpenClaw.
Environment:
- OpenClaw 2026.4.10
- Telegram enabled
- Ubuntu 24.04.4 on virtual machine under VirtualBox
- inbound Telegram voice messages arrive correctly as .ogg/Opus files
Problem:
openclaw infer audio transcribe returns:
Error: No transcript returned for audio: <path>.ogg
I tested both:
- default OpenAI audio route
- explicit Groq route:
--model groq/whisper-large-v3-turbo
What I verified:
- the inbound
.oggfile is valid - Telegram delivery works
- Groq key is valid and visible to OpenClaw
- direct Groq API transcription of the exact same
.oggfile works fine and returns the correct text
So it looks like the issue is in OpenClaw’s STT/media-understanding integration path, not in Telegram, file format, or Groq itself.
Logs only show:
Error: No transcript returned for audio: ...
Has anyone seen this before, or is this likely a bug?
awfully quiet in here for a hot minute; the last update borked telegram a bit painfully (while also somehow making it better in other aspects):
https://github.com/openclaw/openclaw/pull/73583
fixes is it up and parallizes groups/topics...now the only bottleneck is the single thread stream of OpenClaw
I’m getting context mixed up between telegeam topics with my bot after I upgraded
this is so bad....
Happy to take a look, I haven't used topics in a while
Do you have any steps to repro?
What do you use now?
Just a single DM
Just make a few topics and try to ask random unrelated stuff
@true hare i think its related
@silk portal I'm unable to repro this in a forum topic group hmm 🤔
Actually, try out this branch and see if you can repro it here? https://github.com/openclaw/openclaw/pull/77947
Hey, sorry, was a bit busy
will test out latest version and I’ll ping you if any issues persist
thanks for making a PR!
Why are you posting this in the Telegram thread?
Is this a Telegram issue/PR?
Please use the #clawtributors and a maintainer will look at it when they have a moment. Keep this thread only for Telegram related issues/PRs
Issue: https://github.com/openclaw/openclaw/issues/79455
Summary:
Telegram private DM topics were being sent with message_thread_id, which Telegram rejects for DM topics with 400: Bad Request: message thread not found. OpenClaw could still report success because it retried without the topic id, but that sends to the plain DM instead of the requested DM topic.
I fixed it in this PR:
https://github.com/openclaw/openclaw/pull/78575
What changed:
- Private Telegram DM topics now use
direct_messages_topic_id. - Forum/group topics still use
message_thread_id. - DM topic failures are no longer silently retried without the topic id.
I tested this with my Telegram bot and real DM topic:
- Reproduced the issue on main.
- Verified the PR branch sends to the DM topic successfully.
- Added behavior evidence, logs, and screenshots/messages in the PR body.
- Added/updated targeted Telegram tests.
Please review.
@true hare This is telegram issue and I did testing with my telegram bot. Please check.
@true hare Thanks for review & merge, could you please check dm?
@wind cradle if you have any PRs just be patient or post them in #clawtributors
Please do not DM me asking me to review.
Is this normal behavior ?
At telegram, when I write message like this.
"research about ..."
then openclaw assistant shows like
Bash: fetch...run jq (in ~/.openclaw/workspace)
...
web search
In my opinion, we need better UI/UX if not this behanior intended..
Yes, that is the tool calls the agent is making right now
I think there's a config to disable it @full bobcat any idea which one
Thanks. obviyus !