openclaw - ✅(Solved) Fix [Bug]: 429 rate limit causes Telegram Webhook timeout and message re-delivery despite fallback config [2 pull requests, 2 comments, 2 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#57403Fetched 2026-04-08 01:50:05
View on GitHub
Comments
2
Participants
2
Timeline
4
Reactions
0
Author
Participants
Timeline (top)
commented ×2labeled ×2

When Anthropic returns a rate_limit_error (429), the request processing stalls long enough for Telegram's Webhook to time out. Telegram interprets the missing ACK as a delivery failure and retries, causing the same user message to be delivered and processed multiple times.

A fallback model (gpt-5.4) is configured, but it does not prevent the timeout — either the fallback switch is too slow, or the 429 is not triggering the fallback path in time.

Root Cause

When Anthropic returns a rate_limit_error (429), the request processing stalls long enough for Telegram's Webhook to time out. Telegram interprets the missing ACK as a delivery failure and retries, causing the same user message to be delivered and processed multiple times.

A fallback model (gpt-5.4) is configured, but it does not prevent the timeout — either the fallback switch is too slow, or the 429 is not triggering the fallback path in time.

PR fix notes

PR #55: receipt: add openclaw #57403 webhook ACK duplicate redelivery amplification

Description (problem / solution / changelog)

Summary

Adds a new truth artifact for a reusable protocol-boundary failure pattern observed in OpenClaw:

provider-side 429 stalls synchronous webhook handling long enough to violate the upstream ACK deadline, causing duplicate message redelivery and duplicate workload amplification

Source:


What this captures

This is stronger than a simple fallback or 429 timing bug.

The reusable lesson is:

  • a provider-side throttle occurs
  • webhook ACK is delayed because AI execution is still in-flight
  • upstream protocol interprets missing ACK as delivery failure
  • same message is redelivered
  • duplicate processing amplifies the original failure

Hazard

  • rate_limit_429
  • retry_budget_exhausted

Core pattern:

protocol ACK coupled to throttled execution causes duplicate redelivery amplification


Key signals

  • Telegram Webhook timeout waiting for ACK
  • same user message delivered and processed multiple times
  • fallback model configured but did not prevent timeout
  • duplicate responses or duplicate processing
  • missing ACK interpreted as delivery failure

Constraints / Guardrails

  • preserve webhook ACK boundary independently of model latency
  • decouple long-running AI execution from upstream delivery acknowledgment
  • dedupe re-deliveries using delivery ID / idempotency key
  • ensure fallback timing cannot violate the upstream protocol timeout

Why this matters

This receipt generalizes beyond Telegram.

Any system with:

  • webhook timeout semantics
  • delivery retries
  • synchronous AI processing
  • provider-side throttling

can exhibit the same failure shape.

The architectural lesson is:

preserve the protocol contract first, then handle retry / fallback / rate limiting behind that boundary


Validation

python3 scripts/validate_receipts.py
python3 -m json.tool index.json >/dev/null && echo "ok ✅"

## Changed files

- `index.json` (modified, +22/-1)
- `receipts/2026/04/PT-2026-04-10-github-openclaw-57403-webhook-ack-duplicate-redelivery/receipt.json` (added, +90/-0)


---

# PR #56: manifest: update capability (v0.1.15) — add protocol ACK duplicate redelivery pattern

- Repository: SirBrenton/pitstop-truth
- Author: SirBrenton
- State: closed | merged: True
- Link: https://github.com/SirBrenton/pitstop-truth/pull/56

## Description (problem / solution / changelog)

## Summary

Updates the Pitstop capability manifest to **v0.1.15** with a new execution failure pattern derived from OpenClaw issue #57403.

This addition captures a reusable protocol-boundary failure pattern:

> **protocol ACK coupled to throttled execution causes duplicate redelivery amplification**

Source:
- https://github.com/openclaw/openclaw/issues/57403

---

## What changed

### 1. New pattern added

**`protocol-ack-coupled-to-throttled-execution`**

- **Hazard:** `retry_budget_exhausted`
- **Classification:** Protocol ACK coupled to WAIT/slow fallback path
- **Canonical receipt:** `PT-2026-04-10-github-openclaw-57403-webhook-ack-duplicate-redelivery`

### 2. Corpus / manifest updates

- **Version:** `0.1.14``0.1.15`
- **Receipts:** `30``31`
- **Corpus latest date:** remains `2026-04-10`
- **Manifest last_updated:** `2026-04-13`

---

## What this pattern captures

A provider-side 429 stalls synchronous webhook processing long enough to violate the upstream ACK deadline.

Once that happens:

- the upstream source interprets missing ACK as delivery failure
- the same message is redelivered
- duplicate processing occurs
- the original throttling event becomes duplicate workload amplification

This is stronger than a simple 429 or fallback bug.

The reusable lesson is:

> throttled model execution can escape the model layer and become a protocol-level duplicate delivery loop when ACK semantics are coupled to synchronous AI latency

---

## Why this matters

Most existing patterns in the corpus focus on:

- 429 classification failures
- Retry-After misuse
- scope mistakes
- retry budget boundaries

This pattern expands the manifest into a new but related class:

- **protocol-boundary failures caused by throttled execution**

The key architectural guardrail is:

- preserve the upstream protocol contract first
- then handle retry / fallback / rate limiting behind that boundary

Examples of the right controls include:

- immediate ACK
- async processing
- dedupe by delivery ID / idempotency key
- fallback timing bounded by protocol timeout budget

---

## Why the hazard is `retry_budget_exhausted`

This pattern is grouped under `retry_budget_exhausted` because the failure manifests as stalled execution that outlives the practical protocol budget and creates downstream amplification.

It also signals that the current hazard taxonomy is beginning to stretch beyond provider-local failure and into protocol-level execution consequences, which is a useful direction for the corpus.

---

## Validation

```bash
python3 -m json.tool capability.json >/dev/null && echo "capability ok ✅"
python3 scripts/validate_receipts.py && echo "receipts ok ✅"

## Changed files

- `capability.json` (modified, +15/-3)
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

When Anthropic returns a rate_limit_error (429), the request processing stalls long enough for Telegram's Webhook to time out. Telegram interprets the missing ACK as a delivery failure and retries, causing the same user message to be delivered and processed multiple times.

A fallback model (gpt-5.4) is configured, but it does not prevent the timeout — either the fallback switch is too slow, or the 429 is not triggering the fallback path in time.

Steps to reproduce

When Anthropic returns a rate_limit_error (429), the request processing stalls long enough for Telegram's Webhook to time out. Telegram interprets the missing ACK as a delivery failure and retries, causing the same user message to be delivered and processed multiple times.

A fallback model (gpt-5.4) is configured, but it does not prevent the timeout — either the fallback switch is too slow, or the 429 is not triggering the fallback path in time.

Expected behavior

One of:

  1. Fallback model kicks in fast enough that Telegram Webhook receives ACK before timeout
  2. OR: OpenClaw ACKs the Webhook immediately (async processing), then handles the request separately — eliminating the retry trigger regardless of AI latency
  3. OR: On 429, OpenClaw sends the user a rate-limit notice immediately and drops the duplicate re-deliveries

Actual behavior

Telegram retries the same message multiple times. User receives duplicate responses or duplicate processing.

OpenClaw version

2026.3.28

Operating system

Ubuntu 24.04

Install method

npm global

Model

anthropic/claude-sonnet-4-6

Provider / routing chain

openclaw -> anthropic/claude-sonnet-4-6

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

No response

Additional information

No response

extent analysis

Fix Plan

To address the issue of Telegram retries due to timeouts when Anthropic returns a rate_limit_error (429), we will implement an immediate ACK to Telegram's Webhook, followed by asynchronous processing of the request. This ensures that Telegram does not interpret the delay as a delivery failure and retry the message.

Step-by-Step Solution:

  1. Modify the Webhook Handler:
    • Immediately send an ACK response to!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Telegram's Webhook to prevent retries.
    • Use a queue (e.g., RabbitMQ,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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…

FAQ

Expected behavior

One of:

  1. Fallback model kicks in fast enough that Telegram Webhook receives ACK before timeout
  2. OR: OpenClaw ACKs the Webhook immediately (async processing), then handles the request separately — eliminating the retry trigger regardless of AI latency
  3. OR: On 429, OpenClaw sends the user a rate-limit notice immediately and drops the duplicate re-deliveries

Still need to ship something?

×6

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

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix [Bug]: 429 rate limit causes Telegram Webhook timeout and message re-delivery despite fallback config [2 pull requests, 2 comments, 2 participants]