openclaw - 💡(How to fix) Fix Double reply on Slack/Telegram: same message processed on two lanes simultaneously (lane=main + lane=session:agent:main:...) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#60645Fetched 2026-04-08 02:48:49
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Participants

Error Message

lane task error: lane=main durationMs=19446 error="FailoverError: LLM request timed out." lane task error: lane=session:agent:main:slack:direct:u09czr68x7c durationMs=19521 error="FailoverError: LLM request timed out."

Root Cause

Root Cause (from logs)

Fix Action

Fix / Workaround

  • The dual-lane dispatch appears to only manifest when the primary model times out/errors and falls back — the two lanes race and both reach candidate_succeeded
  • When the primary model responds immediately, only one reply is delivered (no double-send)
  • Provider-side fallback (LiteLLM router fallbacks) does not help because the lane split happens in OpenClaw before the LLM response returns
  1. Fix the dual-lane dispatch so a single inbound message is only processed by one lane
  2. If lane=main and lane=session:... are intentionally separate, add deduplication so only one delivers to the channel

Workaround info welcome — is there a config option to disable lane=main processing for specific session types?

Code Example

lane task error: lane=main durationMs=19446 error="FailoverError: LLM request timed out."
lane task error: lane=session:agent:main:slack:direct:u09czr68x7c durationMs=19521 error="FailoverError: LLM request timed out."

---

2026-04-03T19:29:40 embedded_run_failover_decision c38a0502 fallback_model
2026-04-03T19:29:40 lane task error: lane=main ... FailoverError
2026-04-03T19:29:40 lane task error: lane=session:agent:main:slack:direct:u09czr68x7c ... FailoverError
2026-04-03T19:29:40 model_fallback_decision c38a0502 candidate_failed timeout oauth/openai-codex/gpt-5.4
2026-04-03T19:30:12 model_fallback_decision c38a0502 candidate_succeeded  claude-sonnet-4-6
2026-04-03T19:30:16 model_fallback_decision c38a0502 candidate_succeeded  claude-sonnet-4-6
RAW_BUFFERClick to expand / collapse

Bug: Duplicate responses delivered for every incoming message

OpenClaw version: latest (npm global install) Channels affected: Slack (direct), Telegram (direct)

Symptom

Every incoming message on Slack and Telegram receives two identical replies. This is consistent and 100% reproducible.

Root Cause (from logs)

Each inbound message spawns two simultaneous lane tasks for the same session:

lane task error: lane=main durationMs=19446 error="FailoverError: LLM request timed out."
lane task error: lane=session:agent:main:slack:direct:u09czr68x7c durationMs=19521 error="FailoverError: LLM request timed out."

Both lanes run the full agent turn independently, both receive a response, and both deliver to the channel — resulting in two replies.

This is visible across multiple runIds (e.g. c38a0502, fc3743d2, 9aaef5eb, f86a900e) in today's logs, all showing the same dual-lane pattern.

Log evidence

2026-04-03T19:29:40 embedded_run_failover_decision c38a0502 fallback_model
2026-04-03T19:29:40 lane task error: lane=main ... FailoverError
2026-04-03T19:29:40 lane task error: lane=session:agent:main:slack:direct:u09czr68x7c ... FailoverError
2026-04-03T19:29:40 model_fallback_decision c38a0502 candidate_failed timeout oauth/openai-codex/gpt-5.4
2026-04-03T19:30:12 model_fallback_decision c38a0502 candidate_succeeded  claude-sonnet-4-6
2026-04-03T19:30:16 model_fallback_decision c38a0502 candidate_succeeded  claude-sonnet-4-6

The double candidate_succeeded on the same runId is the smoking gun — two independent fallback chains both completing and delivering.

Notes

  • The dual-lane dispatch appears to only manifest when the primary model times out/errors and falls back — the two lanes race and both reach candidate_succeeded
  • When the primary model responds immediately, only one reply is delivered (no double-send)
  • Provider-side fallback (LiteLLM router fallbacks) does not help because the lane split happens in OpenClaw before the LLM response returns

Request

  1. Fix the dual-lane dispatch so a single inbound message is only processed by one lane
  2. If lane=main and lane=session:... are intentionally separate, add deduplication so only one delivers to the channel

Workaround info welcome — is there a config option to disable lane=main processing for specific session types?

extent analysis

TL;DR

Disable the lane=main processing for specific session types to prevent duplicate responses.

Guidance

  • Investigate the OpenClaw configuration to see if there's an option to disable lane=main processing for specific session types, such as Slack and Telegram direct messages.
  • Review the lane task error logs to understand the conditions under which the dual-lane dispatch occurs and identify potential patterns or triggers.
  • Consider implementing deduplication logic to ensure that only one response is delivered to the channel, even if multiple lanes are processing the same inbound message.
  • Examine the LiteLLM router fallbacks configuration to determine if there are any settings that can be adjusted to prevent the dual-lane dispatch.

Example

No code snippet is provided as the issue does not contain sufficient information to suggest a specific code change.

Notes

The dual-lane dispatch appears to be related to the primary model timeout/errors and fallback mechanism. The fix should focus on preventing the simultaneous processing of multiple lanes for the same inbound message.

Recommendation

Apply a workaround by disabling lane=main processing for specific session types, as this is likely to prevent the duplicate responses. This approach is recommended because it directly addresses the root cause of the issue and can be implemented without requiring significant changes to the underlying code or infrastructure.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING