Skip to content

[Bug]: Telegram reactionNotifications=own does not surface DM reactions to agents #21001

@sovushik

Description

@sovushik

Summary\n\nOn my self-hosted OpenClaw 2026.2.17 (stable, npm global install), setting to passes ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄

██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

┌ OpenClaw doctor

◇ Session locks ──────────────────────────────────────────────────────────────╮
│ │
│ - Found 1 session lock file. │
│ - ~/.openclaw/agents/filin/sessions/c8c8dec8-b847-4ae7-9302-f755e9ff8fce.j │
│ sonl.lock │
│ pid=111913 (alive) age=25s stale=no │
│ │
├──────────────────────────────────────────────────────────────────────────────╯

◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯

◇ Skills status ────────────╮
│ │
│ Eligible: 10 │
│ Missing requirements: 43 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◇ Plugins ──────╮
│ │
│ Loaded: 5 │
│ Disabled: 31 │
│ Errors: 0 │
│ │
├────────────────╯

◇ Memory search ──────────────────────────────────────────────────────────╮
│ │
│ Memory search is enabled but no embedding provider is configured. │
│ Semantic recall will not work without an embedding provider. │
│ │
│ Fix (pick one): │
│ - Set OPENAI_API_KEY or GEMINI_API_KEY in your environment │
│ - Add credentials: openclaw auth add --provider openai │
│ - For local embeddings: configure │
│ agents.defaults.memorySearch.provider and local model path │
│ - To disable: openclaw config set agents.defaults.memorySearch.enabled │
│ false │
│ │
│ Verify: openclaw memory status --deep │
│ │
├──────────────────────────────────────────────────────────────────────────╯
Telegram: ok (@owl59_bot) (73ms)
Agents: filin (default), arina, ksenia
Heartbeat interval: 30m (filin)
Session store (filin): /root/.openclaw/agents/filin/sessions/sessions.json (15 entries)

  • agent:filin:telegram:direct:1304329396 (0m ago)
  • agent:filin:main (0m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2 (6m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2:run:7bc220d4-e8c4-4a55-9f3b-fd80c7051404 (6m ago)
  • agent:filin:cron:e25a3f41-75a0-4cac-b7fc-bbc788e35709 (6m ago)
    Run "openclaw doctor --fix" to apply changes.

    └ Doctor complete. but DM reactions to the bot do not surface as events to the agent. From the agent's perspective, nothing changes when a user reacts to a message in a direct Telegram chat.\n\n## Environment\n\n- OpenClaw: 2026.2.17 (stable)\n- Install:
    added 4 packages, removed 12 packages, and changed 670 packages in 3m

125 packages are looking for funding
run npm fund for details on Ubuntu 24.04 (VPS)\n- Gateway: , \n- Channel: Telegram, bot in direct DM with a single user (no groups)\n- Config snippet:\n\n\n\n▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

┌ OpenClaw doctor

◇ Session locks ──────────────────────────────────────────────────────────────╮
│ │
│ - Found 1 session lock file. │
│ - ~/.openclaw/agents/filin/sessions/c8c8dec8-b847-4ae7-9302-f755e9ff8fce.j │
│ sonl.lock │
│ pid=111913 (alive) age=2m57s stale=no │
│ │
├──────────────────────────────────────────────────────────────────────────────╯

◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯

◇ Skills status ────────────╮
│ │
│ Eligible: 10 │
│ Missing requirements: 43 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◇ Plugins ──────╮
│ │
│ Loaded: 5 │
│ Disabled: 31 │
│ Errors: 0 │
│ │
├────────────────╯

◇ Memory search ──────────────────────────────────────────────────────────╮
│ │
│ Memory search is enabled but no embedding provider is configured. │
│ Semantic recall will not work without an embedding provider. │
│ │
│ Fix (pick one): │
│ - Set OPENAI_API_KEY or GEMINI_API_KEY in your environment │
│ - Add credentials: openclaw auth add --provider openai │
│ - For local embeddings: configure │
│ agents.defaults.memorySearch.provider and local model path │
│ - To disable: openclaw config set agents.defaults.memorySearch.enabled │
│ false │
│ │
│ Verify: openclaw memory status --deep │
│ │
├──────────────────────────────────────────────────────────────────────────╯
Telegram: not configured
Agents: main (default)
Heartbeat interval: 30m (main)
Session store (main): /root/.openclaw/agents/main/sessions/sessions.json (1 entries)

  • agent:main:main (10105m ago)
    Run "openclaw doctor --fix" to apply changes.

    └ Doctor complete. reports no config errors, and OpenClaw status

Overview
┌─────────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────┐
│ Item │ Value │
├─────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
│ Dashboard │ http://127.0.0.1:18789/
│ OS │ linux 6.8.0-100-generic (x64) · node 25.6.1 │
│ Tailscale │ off │
│ Channel │ stable (default) │
│ Update │ pnpm · npm latest 2026.2.17 │
│ Gateway │ local · ws://127.0.0.1:18789 (local loopback) · reachable 10ms · auth token · 387900.fuckthem. │
│ │ cloud (192.124.189.44) app 2026.2.9 linux 6.8.0-100-generic │
│ Gateway service │ systemd installed · enabled · running (pid 111913, state active) │
│ Node service │ systemd not installed │
│ Agents │ 3 · 3 bootstrapping · sessions 24 · default filin active 3m ago │
│ Memory │ 0 files · 0 chunks · sources memory · plugin memory-core · vector unknown · fts ready · cache on │
│ │ (0) │
│ Probes │ skipped (use --deep) │
│ Events │ none │
│ Heartbeat │ 30m (filin), disabled (arina), disabled (ksenia) │
│ Sessions │ 24 active · default gpt-5.1 (272k ctx) · 3 stores │
└─────────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────┘

Security audit
Summary: 0 critical · 2 warn · 1 info
WARN Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client c…
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
WARN Some gateway.nodes.denyCommands entries are ineffective
gateway.nodes.denyCommands uses exact command-name matching only. - Unknown command names (not in defaults/allowCommands): camera.snap, camera.clip, screen.rec…
Fix: Use exact command names (for example: canvas.present, canvas.hide, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.push, canvas.a2ui.pushJSONL, canvas.a2ui.reset). If you need broader restrictions, remove risky commands from allowCommands/default workflows.
Full report: openclaw security audit
Deep probe: openclaw security audit --deep

Channels
┌──────────┬─────────┬────────┬───────────────────────────────────────────────────────────────────────────────────────┐
│ Channel │ Enabled │ State │ Detail │
├──────────┼─────────┼────────┼───────────────────────────────────────────────────────────────────────────────────────┤
│ Telegram │ ON │ OK │ token config (8459…9av4 · len 46) · accounts 1/1 │
└──────────┴─────────┴────────┴───────────────────────────────────────────────────────────────────────────────────────┘

Sessions
┌─────────────────────────────────────────────────────────────────┬────────┬─────────┬──────────────┬─────────────────┐
│ Key │ Kind │ Age │ Model │ Tokens │
├─────────────────────────────────────────────────────────────────┼────────┼─────────┼──────────────┼─────────────────┤
│ agent:filin:telegram:direct:130… │ direct │ 3m ago │ gpt-5.1 │ 176k/272k (65%) │
│ agent:filin:main │ direct │ 3m ago │ gpt-5.1 │ 50k/400k (13%) │
│ agent:filin:cron:53dc82fe-3f7d-… │ direct │ 8m ago │ gpt-5.1 │ 8.8k/272k (3%) │
│ agent:filin:cron:53dc82fe-3f7d-… │ direct │ 8m ago │ gpt-5.1 │ 8.8k/272k (3%) │
│ agent:filin:cron:e25a3f41-75a0-… │ direct │ 9m ago │ gpt-5.1 │ 9.0k/272k (3%) │
│ agent:filin:cron:e25a3f41-75a0-… │ direct │ 9m ago │ gpt-5.1 │ 9.0k/272k (3%) │
│ agent:filin:cron:3bbeac36-a4b4-… │ direct │ 9m ago │ gpt-5.1 │ 9.3k/272k (3%) │
│ agent:filin:cron:3bbeac36-a4b4-… │ direct │ 9m ago │ gpt-5.1 │ 9.3k/272k (3%) │
│ agent:filin:cron:5c253ede-540b-… │ direct │ 11m ago │ gpt-5.2 │ 93k/272k (34%) │
│ agent:filin:cron:5c253ede-540b-… │ direct │ 11m ago │ gpt-5.2 │ 93k/272k (34%) │
└─────────────────────────────────────────────────────────────────┴────────┴─────────┴──────────────┴─────────────────┘

FAQ: https://docs.openclaw.ai/faq
Troubleshooting: https://docs.openclaw.ai/troubleshooting

Next steps:
Need to share? openclaw status --all
Need to debug live? openclaw logs --follow
Need to test channels? openclaw status --deep shows Telegram as .\n\n## Expected behavior\n\nWith in a Telegram DM, I expect that:\n\n- Reactions to messages sent by the bot in that DM are exposed to the agent as events (e.g. system messages / event hooks), so the agent can see that the user reacted with 👍/❤️/etc.\n- The agent can distinguish between "no response" and "user reacted to an existing message".\n\n## Actual behavior\n\nIn practice, after enabling and restarting the gateway:\n\n- The DM works as usual (messages in/out),\n- ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

┌ OpenClaw doctor

◇ Session locks ──────────────────────────────────────────────────────────────╮
│ │
│ - Found 1 session lock file. │
│ - ~/.openclaw/agents/filin/sessions/c8c8dec8-b847-4ae7-9302-f755e9ff8fce.j │
│ sonl.lock │
│ pid=111913 (alive) age=3m0s stale=no │
│ │
├──────────────────────────────────────────────────────────────────────────────╯

◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯

◇ Skills status ────────────╮
│ │
│ Eligible: 10 │
│ Missing requirements: 43 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◇ Plugins ──────╮
│ │
│ Loaded: 5 │
│ Disabled: 31 │
│ Errors: 0 │
│ │
├────────────────╯

◇ Memory search ──────────────────────────────────────────────────────────╮
│ │
│ Memory search is enabled but no embedding provider is configured. │
│ Semantic recall will not work without an embedding provider. │
│ │
│ Fix (pick one): │
│ - Set OPENAI_API_KEY or GEMINI_API_KEY in your environment │
│ - Add credentials: openclaw auth add --provider openai │
│ - For local embeddings: configure │
│ agents.defaults.memorySearch.provider and local model path │
│ - To disable: openclaw config set agents.defaults.memorySearch.enabled │
│ false │
│ │
│ Verify: openclaw memory status --deep │
│ │
├──────────────────────────────────────────────────────────────────────────╯
Telegram: ok (@owl59_bot) (18ms)
Agents: filin (default), arina, ksenia
Heartbeat interval: 30m (filin)
Session store (filin): /root/.openclaw/agents/filin/sessions/sessions.json (15 entries)

  • agent:filin:telegram:direct:1304329396 (3m ago)
  • agent:filin:main (3m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2 (8m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2:run:7bc220d4-e8c4-4a55-9f3b-fd80c7051404 (8m ago)
  • agent:filin:cron:e25a3f41-75a0-4cac-b7fc-bbc788e35709 (9m ago)
    Run "openclaw doctor --fix" to apply changes.

    └ Doctor complete. and OpenClaw security audit
    Summary: 0 critical · 2 warn · 1 info
    Run deeper: openclaw security audit --deep

WARN
gateway.trusted_proxies_missing Reverse proxy headers are not trusted
gateway.bind is loopback and gateway.trustedProxies is empty. If you expose the Control UI through a reverse proxy, configure trusted proxies so local-client checks cannot be spoofed.
Fix: Set gateway.trustedProxies to your proxy IPs or keep the Control UI local-only.
gateway.nodes.deny_commands_ineffective Some gateway.nodes.denyCommands entries are ineffective
gateway.nodes.denyCommands uses exact command-name matching only.

  • Unknown command names (not in defaults/allowCommands): camera.snap, camera.clip, screen.record, calendar.add, contacts.add, reminders.add
    Fix: Use exact command names (for example: canvas.present, canvas.hide, canvas.navigate, canvas.eval, canvas.snapshot, canvas.a2ui.push, canvas.a2ui.pushJSONL, canvas.a2ui.reset). If you need broader restrictions, remove risky commands from allowCommands/default workflows.

INFO
summary.attack_surface Attack surface summary
groups: open=0, allowlist=1
tools.elevated: enabled
hooks.webhooks: disabled
hooks.internal: enabled
browser control: enabled remain clean,\n- but when the user reacts to a bot message in that DM, no event surfaces to the agent in this session — there is no visible signal that a reaction happened.\n\nFrom the agent's perspective, it's indistinguishable from no reaction at all.\n\n## Steps to reproduce\n\n1. Set as in the snippet above.\n2. Run ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
██░▄▄▄░██░▄▄░██░▄▄▄██░▀██░██░▄▄▀██░████░▄▄▀██░███░██
██░███░██░▀▀░██░▄▄▄██░█░█░██░█████░████░▀▀░██░█░█░██
██░▀▀▀░██░█████░▀▀▀██░██▄░██░▀▀▄██░▀▀░█░██░██▄▀▄▀▄██
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
🦞 OPENCLAW 🦞

┌ OpenClaw doctor

◇ Session locks ──────────────────────────────────────────────────────────────╮
│ │
│ - Found 1 session lock file. │
│ - ~/.openclaw/agents/filin/sessions/c8c8dec8-b847-4ae7-9302-f755e9ff8fce.j │
│ sonl.lock │
│ pid=111913 (alive) age=3m2s stale=no │
│ │
├──────────────────────────────────────────────────────────────────────────────╯

◇ Security ─────────────────────────────────╮
│ │
│ - No channel security warnings detected. │
│ - Run: openclaw security audit --deep │
│ │
├────────────────────────────────────────────╯

◇ Skills status ────────────╮
│ │
│ Eligible: 10 │
│ Missing requirements: 43 │
│ Blocked by allowlist: 0 │
│ │
├────────────────────────────╯

◇ Plugins ──────╮
│ │
│ Loaded: 5 │
│ Disabled: 31 │
│ Errors: 0 │
│ │
├────────────────╯

◇ Memory search ──────────────────────────────────────────────────────────╮
│ │
│ Memory search is enabled but no embedding provider is configured. │
│ Semantic recall will not work without an embedding provider. │
│ │
│ Fix (pick one): │
│ - Set OPENAI_API_KEY or GEMINI_API_KEY in your environment │
│ - Add credentials: openclaw auth add --provider openai │
│ - For local embeddings: configure │
│ agents.defaults.memorySearch.provider and local model path │
│ - To disable: openclaw config set agents.defaults.memorySearch.enabled │
│ false │
│ │
│ Verify: openclaw memory status --deep │
│ │
├──────────────────────────────────────────────────────────────────────────╯
Telegram: ok (@owl59_bot) (17ms)
Agents: filin (default), arina, ksenia
Heartbeat interval: 30m (filin)
Session store (filin): /root/.openclaw/agents/filin/sessions/sessions.json (15 entries)

  • agent:filin:telegram:direct:1304329396 (3m ago)
  • agent:filin:main (3m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2 (8m ago)
  • agent:filin:cron:53dc82fe-3f7d-40c6-877b-b689f2ee4cf2:run:7bc220d4-e8c4-4a55-9f3b-fd80c7051404 (8m ago)
  • agent:filin:cron:e25a3f41-75a0-4cac-b7fc-bbc788e35709 (9m ago)
    Run "openclaw doctor --fix" to apply changes.

    └ Doctor complete. (no errors).\n3. Restart the gateway (Restarted systemd service: openclaw-gateway.service or systemd).\n4. In the Telegram DM with the bot:\n - send a message,\n - get a reply from the bot,\n - add a reaction (e.g. 👍) to the bot's reply.\n5. Observe the agent session: there is no event/signal that a reaction occurred (from the agent's point of view, nothing happened after the reaction).\n\n## Notes / Suggestions\n\n- If is currently only wired for group chats or for a different event path than the main agent session, it would be helpful to clarify this in the docs.\n- Ideally, Telegram DM reactions to bot messages (with ) should show up as a well-defined event type that agents can observe and use (e.g. lightweight "ack" or feedback signal).\n\nHappy to test any fixes or additional logging builds on this VPS setup and report back.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions