imap-smtp-email@1.0.0
CAUTION· static onlyPublisher claims: "Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Sup..." Observed in sandbox: static analysis only — behavior not yet observed.
Coverage
Static only; nothing was run yet.The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.
Is [email protected] safe to install?
KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-12 and scored it 60/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: static analysis only — behavior not yet observed.
Behavior trace
Queued for honeypot run · static analysis onlyThis version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.
Static findings
Or manually add prefixed variables to `~/.config/mail-skills/.env`:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const SHARED_ENV_PATH = path.join(os.homedir(), '.config', 'mail-skills', '.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.throw new Error('ALLOWED_READ_DIRS not set in .env. File read operations are disabled.');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.throw new Error('ALLOWED_WRITE_DIRS not set in .env. Attachment download is disabled.');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.…npm install --production ``` Configuration is stored at `~/.config/mail-skills/.env` (shared with caldav-sync skill, survives skill updates). If no shared config i…Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.error(`Error: Account "${accountName}" not found. Check ~/.config/imap-smtp-email/.env or ~/.config/mail-skills/.env`);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Writes to shared config: ~/.config/mail-skills/.envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.console.error(`Error: Account "${prefix.toLowerCase()}" not found in config. Check ~/.config/imap-smtp-email/.env`);Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const LEGACY_ENV_PATH = path.join(os.homedir(), '.config', 'imap-smtp-email', '.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.SHARED_CONFIG_FILE="$SHARED_CONFIG_DIR/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.const FALLBACK_ENV_PATH = path.resolve(__dirname, '../.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.throw new Error('Missing SMTP configuration. Check your config at ~/.config/imap-smtp-email/.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.throw new Error('Missing IMAP user or password. Check your config at ~/.config/imap-smtp-email/.env');Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.If you have an existing `~/.config/imap-smtp-email/.env`, it takes priority over the shared config. The format is:Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.LEGACY_CONFIG_FILE="$LEGACY_CONFIG_DIR/.env"Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.chmod 600 "$CONFIG_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.npx skills add https://github.com/gzlicanyi/mail-skills -s caldav-syncFix: Pin versions and sources; vendor anything fetched at install time.chmod 600 "$SHARED_CONFIG_FILE"Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# Source the legacy .env to get variablesFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.
What would make this Verified
20 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Unclaimed publisher≈ +8 on the totalClaim wangchenyu8: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- npx invocation of non-well-known package≈ +2 on the totalPin versions and sources; vendor anything fetched at install time.