discord-voice
4 findings (2 high, 2 medium), mainly data exfiltration, resource abuse. Most recent scan 2026-02-06.
This Discord voice integration skill presents MULTIPLE HIGH-SEVERITY security concerns primarily related to credential management and data privacy. The skill requires multiple sensitive API keys (Discord bot token, OpenAI, Deepgram, ElevenLabs) and demonstrates poor security practices by showing hardcoded credentials in configuration examples. The skill processes highly sensitive biometric voice data from Discord users and transmits it to third-party AI services without documented privacy controls, consent mechanisms, or data retention policies. A critical referenced file (voice.py) is missing from the package, preventing complete security analysis. Additional concerns include unbounded resource consumption risks, missing security guidance for credential management, and lack of privacy compliance documentation. The skill requires immediate security improvements before deployment, particularly around credential handling, privacy controls, and resource limits.
Scanner's overall assessment (LLM analyzer)
Second scanner: NVIDIA SkillSpector
Independent static run, no language model, over the same files as the Cisco scan above. How the two scanners compare across the whole corpus: Two scanners, one corpus.
What this skill does
Real-time voice conversations in Discord voice channels with Claude AI
- Package
- 15 files, 125 KB
- SKILL.md
- 1076 words, 12+ sections
- Code
- TypeScript (8)
SKILL.md covers: Discord Voice Plugin for Clawdbot · Features · Requirements · Installation · 1. Install System Dependencies · Ubuntu/Debian · Fedora/RHEL · macOS · 2. Install via ClawdHub · 3. Configure in clawdbot.json · 4. Discord Bot Setup · Configuration
Findings
HIGH Hardcoded API Keys in Configuration Example Data Exfiltrationllm
The configuration example in SKILL.md demonstrates hardcoding API keys directly in the clawdbot.json file ('openai.apiKey': 'sk-...'). This practice exposes sensitive credentials in configuration files that may be committed to version control, shared, or accessed by unauthorized parties. While the documentation mentions environment variables as an alternative, the primary example shows direct key embedding, which users may follow.
"openai": {
"apiKey": "sk-..." // Or use OPENAI_API_KEY env var
}HIGH Multiple Sensitive API Keys Required Without Security Guidance Data Exfiltrationllm
The skill requires multiple sensitive API keys (DISCORD_TOKEN, OPENAI_API_KEY, and optionally ELEVENLABS_API_KEY, DEEPGRAM_API_KEY) but provides minimal security guidance on credential management. Discord bot tokens provide full bot access, and AI API keys can incur significant costs if compromised. The configuration example shows credentials in plaintext JSON, increasing exposure risk.
requiredEnv: ['DISCORD_TOKEN', 'OPENAI_API_KEY']
optionalEnv: ['ELEVENLABS_API_KEY', 'DEEPGRAM_API_KEY']MEDIUM Unbounded Audio Recording Without Resource Limits Resource Abusellm
The skill implements voice recording with a configurable maxRecordingMs (default 30000ms/30 seconds), but there are no documented limits on concurrent recordings, total storage, or aggregate resource consumption. Multiple users could simultaneously trigger 30-second recordings, potentially exhausting memory, disk space, or API quotas. The auto-reconnect feature could also lead to resource exhaustion if reconnection logic fails to implement backoff.
"maxRecordingMs": 30000,
"Auto-reconnect": Automatic heartbeat monitoring and reconnection on disconnectMEDIUM Audio Data Processing Without Privacy Controls Data Exfiltrationllm
The skill captures, transcribes, and processes voice audio from Discord users, then sends this data to third-party AI services (OpenAI, Deepgram, ElevenLabs). There is no documentation of: (1) Audio data retention policies, (2) User consent mechanisms, (3) Data deletion procedures, (4) Privacy implications of sending voice data to external APIs, (5) Compliance with privacy regulations (GDPR, CCPA). Voice data is highly sensitive biometric information.
Speech-to-Text: Whisper API (OpenAI) or Deepgram
Text-to-Speech: OpenAI TTS or ElevenLabs
Transcribed speech is routed through the Clawdbot agentWhat is in the package
| File | Kind | Size |
|---|---|---|
CHANGELOG.md | doc | 1.5 KB |
README.md | doc | 7.1 KB |
SKILL.md | doc | 8.1 KB |
clawdbot.plugin.json | config | 3.8 KB |
index.ts | script | 19 KB |
package-lock.json | config | 17 KB |
package.json | config | 966 B |
tsconfig.json | config | 360 B |
src/config.ts | script | 5.2 KB |
src/core-bridge.ts | script | 5.9 KB |
src/streaming-stt.ts | script | 11 KB |
src/streaming-tts.ts | script | 5.8 KB |
src/stt.ts | script | 4.7 KB |
src/tts.ts | script | 3.3 KB |
src/voice-connection.ts | script | 31 KB |
External hosts referenced
registry.npmjs.org github.com api.openai.com api.elevenlabs.io api.deepgram.com keepachangelog.com semver.org
Hostnames that appear in the skill's files. Referencing a host is not a finding; compare against the findings above and the skill's stated purpose.
Environment variables referenced
OPENAI_API_KEY DEEPGRAM_API_KEY ELEVENLABS_API_KEY DISCORD_TOKEN
Package contents recorded 2026-10-22. The scan above ran against the version current at scan time; the two can differ if the skill has since been updated.
What we checked
- Static analyzer. Pattern rules over SKILL.md and bundled files: known-bad commands, exfiltration URLs, secrets, obfuscation.
- Behavioral analyzer. Checks what the skill asks the agent to do against what its description claims it does.
- Llm analyzer. A language model reads the skill and reports intent-level issues the rules cannot express.
- Trigger analyzer. Looks for instructions that fire on conditions the user did not ask for.
- Meta analyzer. A second model pass that validates, deduplicates and re-scores the other analyzers' findings.
What we did not check
- Runtime behaviour. The skill was not executed; findings come from reading its files.
- Anything fetched at install or run time, including remote scripts, package dependencies, and URLs the skill tells the agent to open.
- Content the analyzers cannot read: images, binaries, and some non-English text.
- Known scanner bypass classes. See the methodology and limitations page.
Sources
- Repository: https://clawhub.ai/skills/discord-voice
- Raw scan result: discord-voice-scan.json
- Badge for your README:
 - Request a re-scan