openclaw/openclaw · error · Error
Could not refresh Buzz room membership for ${channelId}
Error message
Could not refresh Buzz room membership for ${channelId} What it means
Thrown when all retry attempts in MEMBERSHIP_REFRESH_DELAYS_MS are exhausted for a channel and the refresh generation is still current (not superseded by a newer refresh). The room is marked blocked. It means the tracker could not obtain a valid, newer membership after every backoff delay.
Source
Thrown at extensions/buzz/src/room-membership-tracker.ts:213
if (
refreshed.roles.get(params.botPublicKey) !== "bot" ||
!refreshed.members.has(params.botPublicKey)
) {
blockedRooms.add(channelId);
throw new Error(`Buzz bot no longer has the Bot role in room ${channelId}`);
}
memberships.set(channelId, refreshed);
pendingMemberships.delete(channelId);
deniedMembers.delete(channelId);
blockedRooms.delete(channelId);
params.onMembershipsChanged?.(effectiveMemberships());
return;
}
if (state.generation !== state.lastAttemptedGeneration) {
return;
}
blockedRooms.add(channelId);
throw new Error(`Could not refresh Buzz room membership for ${channelId}`);
};
const refreshMembershipOnce = (channelId: string): Promise<void> => {
const current = refreshes.get(channelId);
if (current) {
current.generation += 1;
return current.promise;
}
const state = {
generation: 1,
lastAttemptedGeneration: 0,
promise: Promise.resolve(),
} satisfies RefreshState;
state.promise = refreshMembership(channelId, state).finally(() => {
if (refreshes.get(channelId) === state) {
refreshes.delete(channelId);
}
if (View on GitHub (pinned to 01804a7531)
Solutions
- Check relay connectivity and queryMembership health for the channel.
- Increase or extend MEMBERSHIP_REFRESH_DELAYS_MS if convergence is known to be slow.
- Retry the refresh later via refreshMembershipOnce once the relay stabilizes.
- Confirm the channel still exists and the bot still holds the Bot role upstream.
Defensive patterns
Strategy: retry
Try / catch
try {
await refreshMembershipOnce(channelId);
} catch (error) {
if (/Could not refresh Buzz room membership/.test(String(error))) {
await sleep(LONG_BACKOFF_MS);
void refreshMembershipOnce(channelId);
return;
}
throw error;
} Prevention
- Monitor relay query latency and membership convergence times.
- Tune MEMBERSHIP_REFRESH_DELAYS_MS to the relay's observed propagation lag.
- Alert when rooms become blocked so operators can investigate the relay.
When it happens
Trigger: Relay repeatedly returns stale/pending membership, network errors during queryMembership across all retries, or the membership data never converges to a non-pending newer state within the configured delay schedule.
Common situations: Relay instability, transient query failures, relay serving cached pending state, or membership propagation lag longer than the total retry window.
Related errors
- browser proxy timed out for ${method} ${path} after ${timeou
- Timed out setting up Buzz relay session
- Timed out waiting for Buzz NIP-42 authentication challenge
- CDP connect failed
- Buzz room membership is unavailable; retry after the room di
AI-assisted analysis of openclaw/openclaw@01804a7531 (2026-08-12).
Data as JSON: /api/errors/066a668081a15da7.
Report an issue: GitHub.