Back to skill
Skillv0.1.0
ClawScan security
Generic Mail Client · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
BenignMar 8, 2026, 3:21 AM
- Verdict
- benign
- Confidence
- high
- Model
- gpt-5-mini
- Summary
- The skill's code, config, and runtime instructions are consistent with a generic IMAP/POP3+SMTP mail client; nothing in the package indicates hidden exfiltration or unrelated capabilities, but you should protect the config file and be aware of privacy implications of returning message contents to the agent/LLM.
- Guidance
- This skill appears to do what it says: send and receive email via SMTP/IMAP using credentials stored in config.yaml. Before installing, consider the following: - Protect config.yaml: it contains account usernames and plaintext passwords. Store it securely, restrict filesystem permissions, or use application-specific passwords rather than personal account passwords. - Understand data flow: getMessage returns message body text (and could be extended to return attachments). If your agent/LLM invokes the handlers, email contents will be visible to that agent. Do not load personal/private inboxes unless you trust the host and agent. - Rate limiting / abuse: SKILL.md mentions send limits, but the code does not implement rate limiting. Ensure your host enforces sending limits and monitors for abuse to avoid accidental spamming. - Dependency review: the package uses common npm libraries (imapflow, nodemailer). If your environment enforces supply-chain policies, vet those packages and the lockfile source mirrors. - Operational: the skill will throw an error if config.yaml is missing; follow the SKILL.md instructions to populate config.yaml on the host side. If you want stronger safety, use robot/service accounts or app-specific passwords, keep the config in a secrets manager and inject at runtime, and confirm which components (LLM, human UI, logs) will receive handler responses containing email bodies.
Review Dimensions
- Purpose & Capability
- okName/description match the code: the implementation uses nodemailer for SMTP and imapflow for IMAP, supports multi-account config, attachments, listing and fetching messages, and marking/moving via IMAP. The required resources (a config.yaml with account credentials) are appropriate for the stated purpose.
- Instruction Scope
- noteSKILL.md instructs the host to store mail credentials in config.yaml (not exposed to the LLM). The code reads that file and exports handlers for send/list/get/update operations. The skill returns message bodies (m.source is returned as bodyText) and attachment metadata; that means email content can flow back through the handler responses to whichever component invokes the skill (including an LLM). The README's logging/privacy promises are host-side policy statements rather than enforced by code. There are no instructions or code that read other unrelated files or contact external endpoints beyond configured mail servers.
- Install Mechanism
- okNo install spec is declared (instruction-only from platform perspective), and all code is bundled in the package. Dependencies are standard npm packages (imapflow, nodemailer, js-yaml) and package-lock references npm mirrors; there are no downloads from arbitrary URLs or extraction steps in the manifest.
- Credentials
- noteNo environment variables are requested; instead credentials are expected in config.yaml (username/password per account). That is proportionate to an email client, but storing plaintext credentials in a config file requires host-side protection (file permissions, secret storage, or app-specific passwords). The number and type of secrets requested is minimal and appropriate for the function.
- Persistence & Privilege
- okThe skill is not always-enabled and does not request system-wide persistence or modify other skills. It exposes handlers for the platform to call; autonomous invocation is allowed by default but is not combined here with other elevated privileges.
