-
-
Notifications
You must be signed in to change notification settings - Fork 52.5k
Description
Bug Report
Platform: macOS (arm64)
Node: v22.22.0
OpenClaw version: 2026.2.22-2
Problem
Discord voice channel joining works (/vc join and autoJoin both successful), but the bot cannot receive/decrypt incoming audio from users speaking in the voice channel.
Error
From openclaw logs:
discord voice: receive error: Failed to decrypt: DecryptionFailed(UnencryptedWhenPassthroughDisabled)
This error appears continuously while a user is speaking in the voice channel.
Root Cause: Missing DAVE Protocol Support
Discord is rolling out mandatory end-to-end encryption for all voice calls via the DAVE (Discord Audio & Video End-to-end) protocol. As of February 2026, Discord has begun early enforcement of DAVE on some servers ahead of the March 1, 2026 deadline.
Discord's DAVE rollout:
- Announcement: https://discord.com/blog/bringing-dave-to-all-discord-platforms
- Timeline: "Starting March 1st 2026, clients and apps without DAVE support will no longer be able to participate in Discord calls"
- Early rollout: "Some Discord clients already require the DAVE protocol" (source: https://discordjs.guide/voice)
Current library status:
- ✅
@discordjs/voice@0.19.0installed (includes DAVE support) - ✅
@snazzah/davey@0.1.9installed (DAVE protocol library) - ❌ OpenClaw's Discord voice implementation does not use DAVE
Configuration
{
"channels": {
"discord": {
"enabled": true,
"commands": {
"native": true
},
"groupPolicy": "allowlist",
"guilds": {
"<guild_id>": {
"requireMention": false,
"users": ["<user_id>"]
}
},
"voice": {
"enabled": true,
"autoJoin": [
{
"guildId": "<guild_id>",
"channelId": "<channel_id>"
}
],
"tts": {
"provider": "openai",
"openai": {
"voice": "alloy"
}
}
}
}
}
}Verified
- ✅ Bot successfully joins voice channel via
/vc join - ✅ Bot shows "Already connected to <#channel>" when checking status
- ✅ FFmpeg, libsodium, opus installed via Homebrew
- ✅
@discordjs/voice,sodium-native,opusscriptpresent in node_modules - ✅
@snazzah/davey(DAVE library) present in node_modules - ❌ Bot does not respond to voice input (speech-to-text not working)
Expected Behavior
Bot should be able to receive and decrypt DAVE-encrypted audio from Discord voice channels.
Actual Behavior
Bot joins channel but cannot decrypt incoming audio packets. The decryption error indicates Discord is sending DAVE-encrypted packets but OpenClaw's voice receiver is not handling DAVE encryption.
Impact
Discord voice feature (added in 2026.2.22) does not work on servers with early DAVE enforcement, and will stop working entirely for all servers on March 1, 2026.
References
Discord documentation:
- DAVE announcement & technical details: https://discord.com/blog/bringing-dave-to-all-discord-platforms
- Voice API documentation: https://discord.com/developers/docs/topics/voice-connections
- DAVE protocol specification: https://github.com/discord/dave-protocol
- Reference implementation (C++): https://github.com/discord/libdave
discord.js DAVE support:
- Installation guide: https://discordjs.guide/voice
- DAVE library: https://www.npmjs.com/package/@snazzah/davey
- discord.js voice package: https://www.npmjs.com/package/@discordjs/voice
Security audits:
- Design review: https://github.com/trailofbits/publications/blob/master/reviews/2024-08-discord-dave-protocol-designreview.pdf
- Implementation review: https://github.com/trailofbits/publications/blob/master/reviews/2024-09-discord-dave-protocol-codereview.pdf
- WebAssembly review: https://github.com/trailofbits/publications/blob/master/reviews/2025-06-discord-e2eewebassembly-securityreview.pdf