Back to plugin

Security audit

@openclaw/imessage

Security checks across malware telemetry and agentic risk

Overview

This is a coherent iMessage/SMS integration, but it grants OpenClaw access to read, watch, and send Messages data on a configured Mac.

Install only on a Mac and Messages account you control. Keep DM pairing or allowlists enabled, avoid broad group access unless intended, and treat history/search/watch results and attachments as sensitive personal communications.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (1)

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The skill explicitly enables reading, searching, and watching local Messages history and notes Full Disk Access requirements, but it does not clearly foreground the privacy sensitivity of message content, attachments, and metadata or instruct the agent to obtain explicit user consent before surveillance-like actions. In this context, omission matters because the skill supports persistent monitoring (`watch`) and broad local history access, which can expose highly sensitive personal communications if invoked too casually.

VirusTotal

32/32 vendors flagged this plugin as clean.

View on VirusTotal

Static analysis

Detected: suspicious.dangerous_exec, suspicious.env_credential_access

Shell command execution detected (child_process).

Critical
Code
suspicious.dangerous_exec
Location
dist/sanitize-outbound-DKRlFQoD.js:401
Evidence
const child = spawn(this.cliPath, args, { stdio: [

Environment variable access combined with network send.

Critical
Code
suspicious.env_credential_access
Location
dist/monitor-CSTZ-GFU.js:3073
Evidence
const storeAllowFrom = await readChannelAllowFromStore("imessage", process.env, accountInfo.accountId).catch(() => []);