phone-agent

ISSUES FOUND max severity CRITICALSkillSpector Do not install 69 registry clawhub.ai last scanned 1 scan

6 findings (1 critical, 2 high, 2 medium, 1 low), mainly policy violation, data exfiltration, command injection. Most recent scan 2026-02-06.

This phone agent skill presents CRITICAL and HIGH security risks primarily related to credential management, network security, and resource consumption. The skill requires extensive external API access and handles sensitive voice data without sufficient safeguards. While the core functionality appears legitimate (building a voice AI phone agent), the implementation has significant security gaps: hardcoded credentials, unrestricted network access, missing input validation, unbounded resource usage, and incomplete disclosure of data flows. The skill should NOT be used in production without addressing the critical findings. The missing allowed-tools declaration and incomplete compatibility information make it difficult for users to assess risk. Recommended for experienced developers only, with significant security hardening required before deployment.

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

Run a real-time AI phone agent using Twilio, Deepgram, and ElevenLabs. Handles incoming calls, transcribes audio, generates responses via LLM, and speaks back via streaming TTS. Use when user wants to: (1) Test voice AI capabilities, (2) Handle phone calls programmatically, (3) Build a conversational voice bot.

Package
7 files, 50 KB
SKILL.md
213 words, 6 sections
Code
Python (2)

SKILL.md covers: Phone Agent Skill · Architecture · Prerequisites · Setup · Usage · Customization

Findings

CRITICAL Hardcoded API Keys and Credentials in Source Code Data Exfiltrationllm

The server.py script contains hardcoded Twilio phone number (+18665515246) and references to API keys that may be committed to version control. While environment variables are used for most credentials, the presence of hardcoded values and the pattern of credential handling creates risk of accidental exposure. The script also accesses multiple sensitive API keys (Deepgram, OpenAI, ElevenLabs, Brave, Twilio) which if logged or exposed could lead to unauthorized access.

scripts/server.py

TWILIO_PHONE_NUMBER = os.getenv("TWILIO_PHONE_NUMBER", "+18665515246")
Remediation: Remove all hardcoded credentials and phone numbers. Use environment variables exclusively without defaults. Implement secrets management solution. Add .env to .gitignore. Audit all logging statements to ensure credentials are never logged.
HIGH Command Injection Risk via Shebang with Hardcoded Virtual Environment Path Command Injectionllm

Both Python scripts use hardcoded shebang paths (#!/home/art/.local/venvs/phone-agent/bin/python3) that reference a specific user's home directory. This creates a security risk if the skill is distributed and executed on different systems, as it could execute arbitrary Python interpreters. The hardcoded path also reveals internal system structure and username information.

scripts/server.py

#!/home/art/.local/venvs/phone-agent/bin/python3
Remediation: Replace hardcoded shebang with portable version: #!/usr/bin/env python3. This allows the system to use the appropriate Python interpreter from PATH. Document virtual environment setup separately in README without hardcoding paths.
HIGH Unbounded Resource Consumption via WebSocket Connections Resource Abusellm

The server accepts unlimited WebSocket connections without rate limiting, connection limits, or timeout controls. The audio streaming loops run indefinitely without bounds checking. This creates risk of resource exhaustion and denial of service attacks. The server also lacks proper error handling for connection failures, which could lead to resource leaks.

scripts/server.py

while True loops in handle_twilio_stream and handle_openai_stream without timeout or connection limits, no maximum connection count enforced
Remediation: Implement connection limits (max concurrent connections). Add timeouts for idle connections. Implement rate limiting per IP/phone number. Add circuit breakers for external API failures. Implement proper cleanup in exception handlers. Add monitoring for resource usage.
MEDIUM Missing allowed-tools Declaration Creates Ambiguity Unauthorized Tool Usellm

The skill manifest does not declare allowed-tools, making it unclear what agent capabilities are required or authorized. The skill requires network access, file system access (for .env files), and process execution (running FastAPI server), but these requirements are not explicitly declared. This creates ambiguity about the skill's intended permissions and makes it harder for users to assess risk.

SKILL.md

allowed-tools: Not specified
Remediation: Add explicit allowed-tools declaration: [Bash, Python, Read]. Document that the skill requires network access and will start a local server. Add compatibility field specifying environment requirements (Linux/Mac, Python 3.8+, network access).
MEDIUM Incomplete Disclosure of External Dependencies and Data Flows Social Engineeringllm

The skill description mentions Twilio, Deepgram, and ElevenLabs but does not disclose that it also uses Brave Search API and makes additional network calls. The description does not clearly warn users that their voice data, transcripts, and conversation content will be sent to multiple third-party services. This creates a social engineering risk where users may not fully understand the data sharing implications.

SKILL.md

Description mentions 3 services but code uses 5+ external APIs (Twilio, Deepgram, OpenAI, ElevenLabs, Brave Search). No clear warning about data sharing with third parties.
Remediation: Update description to list ALL external services used. Add explicit privacy warning about data sharing. Document data retention policies of third-party services. Provide opt-out mechanisms for optional features (like web search).
LOW Skill does not specify a license Policy Violationstatic

Skill manifest does not include a 'license' field. Specifying a license helps users understand usage terms.

SKILL.md

Remediation: Add 'license' field to SKILL.md frontmatter (e.g., MIT, Apache-2.0)

What is in the package

FileKindSize
README.mddoc8.6 KB
SKILL.mddoc2.2 KB
scripts/requirements.txtdoc111 B
scripts/server.pyscript28 KB
scripts/server_realtime.pyscript8.9 KB
tasks/book_restaurant.yamlconfig1.0 KB
tasks/get_quote.yamlconfig1.0 KB

External hosts referenced

elevenlabs.io abc123.ngrok.io api.elevenlabs.io api.search.brave.com console.deepgram.com deepgram.com github.com moltbot.io openai.com platform.openai.com www.twilio.com your-ngrok-url.ngrok.io

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

PORT ELEVENLABS_VOICE_ID OPENAI_API_KEY BRAVE_API_KEY DEEPGRAM_API_KEY ELEVENLABS_API_KEY PUBLIC_URL PUBLIC_URL_REALTIME TWILIO_ACCOUNT_SID TWILIO_AUTH_TOKEN TWILIO_PHONE_NUMBER

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

What we did not check

Sources