openclaw - 💡(How to fix) Fix [Bug]: Discord voice: UnencryptedWhenPassthroughDisabled + lastTransitionId===0 breaks voice reception (DAVE mandatory since April 2026) [1 comments, 2 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#81518Fetched 2026-05-14 03:31:18
View on GitHub
Comments
1
Participants
2
Timeline
3
Reactions
2
Author
Timeline (top)
labeled ×2commented ×1

Discord enforced DAVE E2E encryption for voice in April 2026, and two bugs in @discordjs/voice cause bots to silently fail receiving audio — the bot connects and shows online but never transcribes anything.

Error Message

Two failures happen simultaneously. UnencryptedWhenPassthroughDisabled gets thrown when a packet arrives during the DAVE handshake before the session is fully ready — no graceful passthrough, just an unhandled exception. On the first DAVE transition, lastTransitionId is 0, and if (!lastTransitionId) treats that as falsy and silently drops the session with no log entry. End result: the bot is green in Discord but completely deaf.

Root Cause

  1. Check the logs: UnencryptedWhenPassthroughDisabled will flood in almost immediately, and/or the first DAVE session transition will silently die because !0 evaluates to true in JS.

Code Example

Logs flood with UnencryptedWhenPassthroughDisabled right after the bot joins a voice channel. First DAVE transition leaves no log entry — session never establishes. No STT output, no LLM calls, no responses. Fix confirmed working in production (details in Additional information).
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Discord enforced DAVE E2E encryption for voice in April 2026, and two bugs in @discordjs/voice cause bots to silently fail receiving audio — the bot connects and shows online but never transcribes anything.

Steps to reproduce

  1. Set daveEncryption: true in your Discord voice config (required now — without it Discord closes the WebSocket right after HELLO and the bot never connects at all).

  2. Have the bot join a voice channel with someone talking.

  3. Check the logs: UnencryptedWhenPassthroughDisabled will flood in almost immediately, and/or the first DAVE session transition will silently die because !0 evaluates to true in JS.

  4. Bot shows as connected (green) in Discord but never transcribes a single word.

Worth noting: without daveEncryption: true, Discord drops the connection at HELLO — you won't even get to reproduce these errors.

Expected behavior

Once connected with daveEncryption: true, the bot should receive and process audio normally. DAVE transitions should complete without throwing, and lastTransitionId === 0 should be treated as a valid first-transition value — not as missing or invalid.

Actual behavior

Two failures happen simultaneously. UnencryptedWhenPassthroughDisabled gets thrown when a packet arrives during the DAVE handshake before the session is fully ready — no graceful passthrough, just an unhandled exception. On the first DAVE transition, lastTransitionId is 0, and if (!lastTransitionId) treats that as falsy and silently drops the session with no log entry. End result: the bot is green in Discord but completely deaf.

OpenClaw version

OpenClaw version: v2026.5.7

Operating system

Kali Linux

Install method

npm global (npm install -g openclaw)

Model

N/A — transport-layer issue in @discordjs/voice, not model-specific.

Provider / routing chain

Discord voice channel → @discordjs/voice → OpenClaw voice pipeline

Additional provider/model setup details

channels.discord.voice.daveEncryption: true is mandatory since ~April 2026 — Discord now rejects max_dave_protocol_version: 0. Also recommend decryptionFailureTolerance: 500 to handle the burst of errors during DAVE session transitions.

Logs, screenshots, and evidence

Logs flood with UnencryptedWhenPassthroughDisabled right after the bot joins a voice channel. First DAVE transition leaves no log entry — session never establishes. No STT output, no LLM calls, no responses. Fix confirmed working in production (details in Additional information).

Impact and severity

  • Affected: Anyone running Discord voice on OpenClaw after Discord mandated DAVE (~April 2026)
  • Severity: Total blocker — Discord voice completely non-functional
  • Frequency: 100% of attempts
  • Consequence: All voice features (STT, TTS via voice, voice commands) are dead

Additional information

Discord changed their server-side requirements — not a regression in OpenClaw's own code, but the fix needs to land in @discordjs/voice. Two changes confirmed working in production:

Fix 1 — On UnencryptedWhenPassthroughDisabled, return the packet as-is instead of throwing, letting the transition complete gracefully.

Fix 2 — Change the null check:

// Before: if (!lastTransitionId)

// After: if (lastTransitionId === null || lastTransitionId === undefined)

Both fixes + daveEncryption: true in config = voice works again.

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

Once connected with daveEncryption: true, the bot should receive and process audio normally. DAVE transitions should complete without throwing, and lastTransitionId === 0 should be treated as a valid first-transition value — not as missing or invalid.

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]: Discord voice: UnencryptedWhenPassthroughDisabled + lastTransitionId===0 breaks voice reception (DAVE mandatory since April 2026) [1 comments, 2 participants]