Skip to content

Webchat control UI Approve button does not consume pending exec approval; repeated exec gets a new approval id #55853

@rjwang1982

Description

@rjwang1982

I’m seeing a reproducible approval-flow issue in the webchat control UI (openclaw-control-ui).

Environment

  • OpenClaw: 2026.3.24 (cff6dc9)
  • Latest npm version checked: 2026.3.24
  • Surface/provider: webchat
  • Sender label: openclaw-control-ui
  • Session type: direct chat / main session

Problem

When an exec call requires approval, clicking Approve in the control UI does not reliably consume the pending approval request. Re-running the same command then produces a new approval id instead of executing the previously approved request.

Minimal reproduction

  1. Trigger a minimal exec request from the webchat control UI with:
    • command:
      true
    • ask: "always"
    • no elevated
  2. The system returns an approval request, for example:
    • short id: c43e0bd0
    • full id: c43e0bd0-cd85-4381-bd17-0488d7650311
  3. Click Approve in the UI
  4. Trigger the same minimal test again
  5. Instead of executing, the system generates a new approval id, for example:
    • 0bc2e705

Expected behavior

Clicking Approve should consume the current pending approval and allow that request to execute.

Actual behavior

  • Clicking Approve appears to have no effect on the pending request
  • Re-running the same command creates a new approval id
  • In earlier attempts, I also observed:
    • unknown or expired approval id
    • approval remaining pending after clicking Approve
    • approval ids changing between retries of effectively the same command

What has been ruled out

  • Not an elevated-permission issue
    • A separate test with elevated: true fails earlier at the allowFrom.webchat gate, which is a different problem
  • Not a dangerous-command issue
    • Repro uses only true
  • Not an outdated version issue
    • local version and latest npm version are both 2026.3.24

Likely cause

This looks like an approval state-sync issue between the webchat control UI and gateway. Possibilities:

  • the UI is not submitting the correct approval id
  • the approval request is being regenerated and the UI is approving an older id
  • reconnect/state drift causes the UI card to reference a stale pending approval

Notes

This was reproduced with the smallest possible harmless command, so it does not appear related to command complexity.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions