iResponder

PassAudited by VirusTotal on May 12, 2026.

Overview

Type: OpenClaw Skill Name: autoresponder Version: 1.0.1 The skill is classified as suspicious primarily due to its explicit requirement for 'Full Disk Access' for Terminal/iTerm, as stated in SKILL.md and README.md. While this permission might be necessary for iMessage automation on macOS, it grants extremely broad access to the user's entire file system, significantly increasing the attack surface for potential data exfiltration or unauthorized actions if the skill were compromised or exploited. Additionally, the skill utilizes `child_process.execSync` and `spawn` in `telegram-handler.js` and `watcher.js` to execute local scripts and make external API calls (e.g., to `https://api.openai.com/v1/chat/completions`), which, while plausible for its stated purpose, represents powerful capabilities that could be abused. The core function of automatically sending messages on the user's behalf is also inherently sensitive.

Findings (0)

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 autoresponder prompt, contact name, number, or management command could run arbitrary commands on the user's machine under the agent's account.

Why it was flagged

identifier, prompt, and name are user/Telegram-controlled command fields inserted into a shell string. Embedded quotes, command substitutions, or shell metacharacters could execute unintended local commands.

Skill content
execSync(`node "${MANAGE_SCRIPT}" add "${identifier}" "${prompt}" "${name}"`, { stdio: 'inherit' });
Recommendation

Replace execSync shell strings with spawn/execFile and an argument array, validate phone numbers and numeric fields, and never pass prompts or names through a shell.

What this means

The skill can consume the user's OpenAI credits and may expose API keys or message prompt contents to local process-inspection tools while curl is running.

Why it was flagged

The script reads local Clawdbot API credentials, including keys stored under other skill names, and passes the bearer token and prompt payload to curl as process arguments.

Skill content
const configPath = path.join(os.homedir(), '.clawdbot', 'clawdbot.json'); ... apiKey = config.skills?.['openai-whisper-api']?.apiKey || config.skills?.['openai-image-gen']?.apiKey; ... '-H', `Authorization: Bearer ${apiKey}`, '-d', payload
Recommendation

Declare a dedicated credential requirement, use a skill-specific API key, avoid borrowing keys from unrelated skills, and call the API through a library or stdin-based request path that does not expose secrets in command arguments.

What this means

Anyone who can issue commands through the connected Telegram control path may be able to change who receives auto-replies, inspect recent response history, or restart the background process.

Why it was flagged

Telegram management can add/remove contacts, edit prompts, view history, toggle the system, and restart the watcher, but the provided artifacts do not show an authorization or allowed-chat boundary for those remote commands.

Skill content
The auto-responder can be managed directly through Telegram using slash commands or natural language.
Recommendation

Require explicit Telegram chat/user allow-lists, role checks, and confirmations for history access, prompt changes, contact additions, bulk changes, and restarts.

What this means

Private conversation content from watched contacts may leave the device for AI processing, and sensitive details may also appear in local logs or generated-response history.

Why it was flagged

Recent iMessage/SMS conversation history is assembled into the model prompt and sent to OpenAI for response generation.

Skill content
const historyText = messageHistory.slice(0, 5) ... messages: [{ role: 'user', content: prompt }]
Recommendation

Use the smallest needed history window, disclose provider processing clearly, avoid watching sensitive contacts, redact secrets where possible, and review logs regularly.

What this means

A contact's message could try to manipulate the model into ignoring the user's intended prompt or sending an inappropriate response.

Why it was flagged

Untrusted text from a contact is placed directly into the model prompt that produces the outbound reply.

Skill content
Latest message from ${contact.name || contact.identifier}:\n${incomingMessage.text || '[attachment]'}\n\nGenerate a response now:
Recommendation

Treat incoming messages as untrusted data, separate system instructions from quoted conversation text, use conservative prompts, and enable keyword, time-window, daily-cap, or test-mode controls.

What this means

The auto-responder can continue monitoring and sending messages after the setup command completes.

Why it was flagged

The launcher starts a persistent background watcher and stores its PID for later status/stop operations.

Skill content
nohup node "$WATCHER_SCRIPT" >> "$LOG_FILE" 2>&1 &
echo $! > "$PID_FILE"
Recommendation

Start it only when intended, verify status regularly, know how to stop it, and consider launch-time confirmation before enabling background operation.

What this means

Users may not realize before installation that this skill requires sensitive local permissions and external tooling.

Why it was flagged

The registry metadata under-declares the actual documented environment needs, including macOS, imsg, OpenAI credentials, and Full Disk Access.

Skill content
No install spec — this is an instruction-only skill; Required binaries: none; Required env vars: none; Primary credential: none; OS restriction: none
Recommendation

Update metadata to declare macOS-only operation, imsg, Node script execution, OpenAI credential use, Messages/Full Disk Access permissions, and background-process behavior.