Skip to content

[Bug]: QQBot channel does not apply updated bindings until gateway restart #69546

Description

@F32138

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

QQBot routing does not reflect updated bindings at runtime; new bindings appear in CLI but are not evaluated until gateway restart.

Steps to reproduce

  1. Start OpenClaw 2026.4.15 with QQBot configured
  2. Add a peer-specific binding to bindings[]
  3. Verify with:openclaw agents list --bindings
    (peer binding is present)
  4. Send a QQBot C2C message
  5. Observe routing logs

Expected behavior

Routing evaluates all bindings and matches peer binding before account binding, consistent with CLI output.

Actual behavior

Runtime routing only evaluates one binding (account-level), peer binding is not included:
[routing] resolveAgentRoute ... bindings=1
[routing] binding: agentId=study accountPattern=study peer=none
[routing] match: matchedBy=binding.account agentId=study
After openclaw gateway restart, routing becomes correct:
bindings=2
binding: tutor_... (peer match)
binding: study (account match)
matchedBy=binding.peer

OpenClaw version

2026.4.15

Operating system

Ubuntu (Docker container)

Install method

Docker (Ubuntu image)

Model

modelstudio/qwen3.5-plus

Provider / routing chain

openclaw -> modelstudio/qwen3.5-plus

Additional provider/model setup details

QQBot channel configured with accountId=study.
Peer ID comes from event.author.user_openid (C2C message).

Logs, screenshots, and evidence

CLI output:

openclaw agents list --bindings

Shows peer binding:

qqbot accountId=study peer=direct:480562E9913A985D4A79822A643E27B6 → tutor_...

Runtime log before restart:

bindings=1
matchedBy=binding.account

Runtime log after restart:

bindings=2
matchedBy=binding.peer

Impact and severity

Affected: QQBot users with dynamic bindings
Severity: Medium (breaks expected routing behavior)
Frequency: Always reproducible after binding change without restart
Consequence: Messages routed to wrong agent until gateway restart

Additional information

Bindings are marked as dynamic (no restart required), but QQBot channel appears to use a config snapshot captured at startup, causing CLI and runtime to diverge.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingbug:behaviorIncorrect behavior without a crash

    Type

    No type

    Fields

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions