openclaw - 💡(How to fix) Fix [Bug]: Telegram/mobile approvals can resolve as "unknown or expired approval id" after pending approval creation [3 comments, 4 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#59162Fetched 2026-04-08 02:27:59
View on GitHub
Comments
3
Participants
4
Timeline
5
Reactions
1
Timeline (top)
commented ×3labeled ×2

Telegram/mobile approval flows sometimes fail with unknown or expired approval id even after approval creation was observed in logs.

Error Message

Observed evidence from investigation and traces:

• Approval failures: • exec.approval.resolve ... unknown or expired approval id • plugin.approval.resolve ... unknown or expired approval id • Observed lifecycle for a separate request: • approval.created • approval.registered • approval.resolved with decision:"deny" and resolvedBy:"X’s MacBook Pro" • Manifest instability observed during the same investigation: • QueryFailedError: database disk image is malformed • Verification after manifest DB reset: • IP1 → 200 • IP2 → 200 • recreated manifest.db passed PRAGMA integrity_check = ok • openclaw doctor --non-interactive completed successfully

Root Cause

Affected users/systems/channels: Telegram direct-chat approval flow on this OpenClaw VPS deployment Severity: Blocks workflow when approval-gated commands cannot be executed Frequency: Intermittent Consequence: Commands requiring approval fail to run; investigation time increases because some requests show created/registered approvals while later resolution fails with unknown or expired approval id

Code Example

Observed evidence from investigation and traces:

Approval failures:
  • exec.approval.resolve ... unknown or expired approval id
  • plugin.approval.resolve ... unknown or expired approval id
Observed lifecycle for a separate request:
  • approval.created
  • approval.registered
  • approval.resolved with decision:"deny" and resolvedBy:"X’s MacBook Pro"
Manifest instability observed during the same investigation:
QueryFailedError: database disk image is malformed
Verification after manifest DB reset:
IP1200
IP2200
  • recreated manifest.db passed PRAGMA integrity_check = ok
  • openclaw doctor --non-interactive completed successfully
RAW_BUFFERClick to expand / collapse

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

Telegram/mobile approval flows sometimes fail with unknown or expired approval id even after approval creation was observed in logs.

Steps to reproduce

  1. Trigger a command that requires approval from a Telegram/OpenClaw chat.
  2. Wait for the approval prompt/card to appear.
  3. Attempt to approve via the client flow being tested.
  4. Observe cases where logs show approval creation/registration, but resolution later returns unknown or expired approval id.

Expected behavior

A created and registered approval should remain resolvable until it is explicitly approved, denied, or expires according to its configured TTL.

Actual behavior

Observed logs showed approval lifecycle entries followed by failures such as exec.approval.resolve unknown or expired approval id and plugin.approval.resolve unknown or expired approval id. In other cases, a request was created, registered, and then explicitly resolved with decision:"deny" and resolvedBy:"X’s MacBook Pro".

OpenClaw version

2026.3.31

Operating system

Linux 6.8.0-106-generic (x64)

Install method

Docker (on VPS)

Model

openai/gpt-5.4

Provider / routing chain

Telegram → OpenClaw Gateway → tool approval flow (exec / plugin approval resolution)

Additional provider/model setup details

• Direct-message Telegram chat on VPS deployment • Gateway health and manifest endpoints were later verified healthy (returned 200) • Manifest DB corruption was separately observed and fixed during investigation; this was associated with repeated gateway restarts • Telegram configWrites had been enabled earlier and was later changed to reduce restart churn • Approval traces captured both exec.approval.resolve and plugin.approval.resolve failures with unknown or expired approval id

Logs, screenshots, and evidence

Observed evidence from investigation and traces:

• Approval failures:
  • exec.approval.resolve ... unknown or expired approval id
  • plugin.approval.resolve ... unknown or expired approval id
• Observed lifecycle for a separate request:
  • approval.created
  • approval.registered
  • approval.resolved with decision:"deny" and resolvedBy:"X’s MacBook Pro"
• Manifest instability observed during the same investigation:
  • QueryFailedError: database disk image is malformed
• Verification after manifest DB reset:
  • IP1 → 200
  • IP2 → 200
  • recreated manifest.db passed PRAGMA integrity_check = ok
  • openclaw doctor --non-interactive completed successfully

Impact and severity

Affected users/systems/channels: Telegram direct-chat approval flow on this OpenClaw VPS deployment Severity: Blocks workflow when approval-gated commands cannot be executed Frequency: Intermittent Consequence: Commands requiring approval fail to run; investigation time increases because some requests show created/registered approvals while later resolution fails with unknown or expired approval id

Additional information

• This report is grounded in observed logs from the investigated deployment. • Separate deployment instability was also observed during investigation due to manifest DB corruption and resulting restarts. • At least one later approval trace showed an explicit deny decision rather than an expiry/missing-state failure, so not every failed command belonged to the same failure mode. • Last known good: NOT_ENOUGH_INFO • First known bad: NOT_ENOUGH_INFO

extent analysis

TL;DR

Investigate and address potential issues with approval ID storage and retrieval, focusing on the interaction between the Telegram approval flow and the OpenClaw Gateway.

Guidance

  • Review the approval ID generation and storage mechanism to ensure it is correctly handling and persisting approval IDs.
  • Verify that the approval ID is being correctly passed between the Telegram client flow and the OpenClaw Gateway.
  • Check for any potential race conditions or timing issues that could cause the approval ID to become unknown or expired before it can be resolved.
  • Investigate the impact of the previously observed manifest DB corruption on the approval flow and ensure that the corruption has been fully resolved.

Example

No specific code example can be provided without more information on the approval ID generation and storage mechanism.

Notes

The root cause of the issue is unclear, and further investigation is needed to determine the exact cause of the unknown or expired approval ID errors. The previously observed manifest DB corruption may be a contributing factor, but it is unclear if this is the primary cause of the issue.

Recommendation

Apply workaround: Implement additional logging and monitoring to track the approval ID lifecycle and identify any potential issues with approval ID storage and retrieval. This will help to better understand the root cause of the issue and inform a more permanent fix.

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

A created and registered approval should remain resolvable until it is explicitly approved, denied, or expires according to its configured TTL.

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 - 💡(How to fix) Fix [Bug]: Telegram/mobile approvals can resolve as "unknown or expired approval id" after pending approval creation [3 comments, 4 participants]