clawcall-phone

WarnAudited by ClawScan on May 18, 2026.

Overview

This phone skill is mostly aligned with its purpose, but it routes live phone input into the local agent and has a Windows shell-execution path that could make caller-controlled text unsafe.

Review before installing, especially on Windows. If you use it, prefer the local HTTP bridge, keep sensitive OpenClaw actions behind confirmation, protect the ClawCall API key, avoid storing secrets in USER.md or MEMORY.md, and remember that calls, transcripts, recordings, and overage charges may involve external services.

Findings (6)

Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.

What this means

A crafted or mis-transcribed call message could potentially execute unintended local commands on Windows systems.

Why it was flagged

The `message` value comes from an inbound phone call and is passed to a spawned command. On Windows, enabling a shell around caller-controlled text can allow shell metacharacters to be interpreted.

Skill content
spawn("openclaw", ["agent", "--session-id", callSid, "--message", message, "--json"], { shell: process.platform === "win32", ... })
Recommendation

Avoid `shell: true` for caller-controlled arguments; resolve the OpenClaw executable directly, use `execFile`/`spawn` without a shell, or strictly escape and validate all arguments.

What this means

Anyone who can successfully reach the configured phone line may be able to influence what the local agent does or says.

Why it was flagged

The core design intentionally lets phone callers send instructions into the agent. This is purpose-aligned, but it is a broad control surface.

Skill content
the listener polls ClawCall for you and passes each caller's speech directly to this agent via `--message`
Recommendation

Use caller allowlisting, keep sensitive OpenClaw actions behind confirmation, and prefer the limited local bridge for live calls rather than the full agent CLI path.

What this means

Anyone with the API key may be able to use or manage the associated phone-call service.

Why it was flagged

The skill requires an API key and recovery email for the ClawCall account, which is expected for a telephony service but grants account-level access.

Skill content
"env": ["CLAWCALL_API_KEY", "CLAWCALL_EMAIL"], "primaryEnv": "CLAWCALL_API_KEY"
Recommendation

Store these environment variables securely, rotate the key if exposed, and avoid sharing logs or shell profiles containing the key.

What this means

Private profile, memory, task, or schedule details may be included in prompts and indirectly revealed during phone calls.

Why it was flagged

The bridge reads local profile and memory files, and can also summarize cron jobs and tasks for use in phone replies.

Skill content
readTextSafe(path.join(WORKSPACE, "USER.md")); ... wantsMemory ? readTextSafe(path.join(WORKSPACE, "MEMORY.md")) : ""
Recommendation

Do not store secrets in these files, review what the phone bridge can read, and limit memory/task exposure if callers are not fully trusted.

What this means

Phone numbers, transcripts, replies, and recordings may be processed or stored by the external calling service.

Why it was flagged

The telephony provider and ClawCall service handle call recordings/transcripts. This is expected, but it means call content leaves the local machine.

Skill content
Call recordings are stored as `.mp3` files hosted by Twilio. Retrieve URLs via `GET /api/v1/calls/history?transcripts=true`
Recommendation

Review ClawCall/Twilio privacy and retention practices before discussing sensitive information over calls.

What this means

The agent can continue receiving and responding to phone calls in the background while the listener is running.

Why it was flagged

The listener is a long-running polling process. It is disclosed and necessary for receiving calls, but it persists until stopped.

Skill content
while (true) { ... request("GET", "/api/v1/calls/listen?timeout=15"); ... }
Recommendation

Run only one listener when needed, stop it when phone access should be disabled, and monitor logs for unexpected calls.