← NEWS DESK
security advisory

OpenClaw Fixes a Control UI Cross-Session Isolation Bug for Case-Distinct Channel IDs

A merged main-branch fix stops Matrix rooms or Signal groups whose opaque IDs differ only by case from sharing transcripts and control state in the web UI.

Independent reporting and tested guidance for OpenClaw operators · Editorial standards

OpenClaw merged a Control UI session-isolation fix into main on 27 July. When two Matrix rooms or Signal groups had opaque identifiers that differed only by letter case, switching between them could reuse another conversation’s client-side state.

The upstream report says the leaked UI scope could include transcript content, persisted sidebar state, tool activity, approvals and suggestions. The patch uses the existing canonical Control UI session identity instead of a case-folded lookup for those channel sessions.

This is material even if the Gateway’s underlying sessions remained separate. Showing one room’s transcript or approval surface while an operator believes another room is selected can disclose information and cause action in the wrong context.

Operator decision

  • Matrix or Signal operators: check whether your deployment can contain case-distinct opaque room or group IDs. If it can, prioritize a release or source revision containing PR #114638.
  • Shared or multi-tenant consoles: treat unexplained transcript or approval switching as a possible isolation fault, not a harmless rendering glitch. Restrict access and preserve diagnostic evidence.
  • Source-build operators: use commit f0a963a2cb526c574276361ccec847fe97358136 or later, then test exact case-distinct identities end to end.
  • Deployments without affected channels or case-distinct IDs: no emergency action follows solely from this report, but include the fix in the next normal update.

Do not “fix” opaque identifiers by lowercasing them in external scripts or stored state. Their case belongs to the channel’s identity contract.

The failure was broader than a wrong title

A cosmetic label bug would show the wrong room name while preserving the selected session’s actual state. The official report describes a deeper collision in the Control UI scope: two distinct channel sessions could resolve to the same client-side identity.

That can mix several operator-significant surfaces:

  • visible conversation history;
  • sidebar and persisted selection state;
  • current tool activity;
  • execution approvals; and
  • model suggestions.

An approval shown under the wrong apparent conversation is especially risky. Even if the backend later rejects an invalid action, the operator is making a trust decision with misleading context.

Interpretation: opaque identifiers must be compared according to the issuing system’s rules. Case folding is safe only when the identifier contract says case is irrelevant. Human expectations about room names are not a substitute for that contract.

Safe verification

Use disposable test rooms or groups with non-sensitive content:

  1. create or select two identities that are identical except for case;
  2. give each session unmistakably different harmless transcript content;
  3. switch repeatedly between them and reload the Control UI;
  4. verify transcript, sidebar state, tool activity, approvals and suggestions remain attached to the correct identity;
  5. open each exact session link directly and repeat the checks; and
  6. test reconnect and browser-storage restoration, not only a fresh in-memory session.

Avoid generating real execution approvals merely to test the display. A harmless mocked or sandboxed approval flow is enough to establish whether state crosses the boundary.

Incident response if you saw this behaviour

A mixed transcript does not by itself prove that a command executed in the wrong backend session. It does mean the operator view was unreliable.

Preserve the affected session identifiers, timestamps, browser version, OpenClaw revision and relevant server logs under your normal privacy controls. Review consequential approvals and tool actions against authoritative backend audit records rather than trusting the cached browser view. Rotate credentials only when the investigation shows they were exposed or acted upon; indiscriminate rotation can destroy useful timing evidence.

Scope and evidence limits

The merged pull request closes issue #112749 and is labelled as a session-state risk. The official record specifically names Matrix rooms and Signal groups with case-distinct opaque identifiers. It does not establish that every channel, every OpenClaw release or the Gateway’s stored transcript isolation was affected.

The landed commit is f0a963a2cb526c574276361ccec847fe97358136. The source packet does not identify a published package containing it, so operators should verify inclusion rather than assuming any current release has the fix.

Web retrieval of the full pull-request page was unavailable during this run. OpenClaw Academy relied on the official merged PR and commit records supplied by the collector and did not independently reproduce the collision.

Bottom line

Case-distinct channel IDs could collide inside OpenClaw’s Control UI and expose the wrong transcript and control state. That is a session-isolation bug, not merely untidy navigation.

Operators using Matrix or Signal should move to a confirmed containing build when available and validate isolation with exact opaque IDs. If the symptom has already appeared, audit consequential actions against backend records before trusting what the browser showed.

THE RECEIPTS

Claims should survive the click.

Primary links used for this article are listed openly. If the evidence changes, the verification date changes with it.
  1. 01Keep case-distinct channel sessions isolated — PR #114638
  2. 02Merged case-sensitive session isolation fix — commit f0a963a

THE OPERATOR BRIEF

One useful email when the signal earns it.

Release impact, security changes and repository intelligence. No daily sludge.