Scan Report
20 /100
email-checker-for-mac
Automated email assistant for Apple Mail. Runs on a schedule, scores priority, drafts AI replies, sends reports.
A legitimate macOS email automation tool with AppleScript control of Mail.app. Shell execution via subprocess/osascript is documented in the os requirement and metadata but not explicitly declared as a SKILL.md allowed-tool, which is a minor doc-to-capability gap.
Safe to install
Add 'shell:WRITE' to the allowed-tools declaration in SKILL.md and explicitly document that the LLM API key is read from config/settings.json and transmitted to the configured LLM endpoint. These are legitimate behaviors that should be made transparent.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Low | Shell execution not declared as allowed-tool Doc Mismatch | SKILL.md:1 |
| Info | LLM API key transmission to external endpoint not documented Sensitive Access | scripts/email/checker.py:150 |
| Info | Crontab installation creates scheduled persistence Persistence | setup.sh:245 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | NONE | WRITE | ✓ Aligned | scripts/email/checker.py: subprocess.run(['osascript', ...]); scripts/email/send… |
| Filesystem | WRITE | WRITE | ✓ Aligned | setup.sh writes config/settings.json; checker.py reads it; logs/ and temp/ dirs … |
| Network | NONE | READ | ✓ Aligned | checker.py: urllib.request.urlopen() to LLM_BASE_URL; LLM API key transmitted in… |
| Environment | NONE | READ | ✓ Aligned | setup.sh passes LLM_API_KEY as env var during LLM test; checker.py reads config … |
| Skill Invoke | NONE | READ | ✓ Aligned | SKILL.md describes OpenClaw integration via Telegram/WhatsApp invoking checker.p… |
2 findings
Info Email 邮箱地址
[email protected] README.md:111 Info Email 邮箱地址
[email protected] README.md:122 File Tree
10 files · 59.0 KB · 1655 lines Python 3f · 796L
Shell 3f · 459L
Markdown 2f · 360L
JSON 2f · 40L
├─
▾
config
│ └─
settings.example.json
JSON
├─
▾
scripts
│ └─
▾
email
│ ├─
checker_wrapper.sh
Shell
│ ├─
checker.py
Python
│ ├─
send_reply.py
Python
│ ├─
template.py
Python
│ └─
template.sh
Shell
├─
_meta.json
JSON
├─
README.md
Markdown
├─
setup.sh
Shell
└─
SKILL.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
urllib | stdlib | python3 built-in | No | Standard library — no external dependency for HTTP calls |
subprocess | stdlib | python3 built-in | No | Standard library — used for osascript invocation, documented and necessary |
Security Positives
✓ No base64-encoded execution, no eval(), no obfuscated payloads
✓ No access to ~/.ssh, ~/.aws, .env, or other credential storage paths
✓ No direct IP connections to unknown external servers — only to user-configured LLM endpoints
✓ No data exfiltration observed — email content is processed locally and reports sent to the user's own configured email address
✓ API keys stored in config/settings.json (gitignored), not hardcoded
✓ AppleScript is the standard, documented macOS automation interface — not a custom shell escape
✓ LLM connection test in setup.sh is interactive and user-driven with visible output
✓ Settings.json validation is performed before writing