Scan Report
5 /100
grocery-checklist
Persistent pantry-backed grocery checklist for OpenClaw, with Telegram inline buttons for marking items bought.
Legitimate pantry-state skill with fully declared permissions; subprocess is limited to openclaw CLI, network is Telegram-only, and all file I/O is scoped to ~/.openclaw paths.
Safe to install
No action needed. The skill is clean.
Findings 1 items
| Severity | Finding | Location |
|---|---|---|
| Low | Bash/python3/openclaw bin declarations not explicitly linked to subprocess Doc Mismatch | SKILL.md:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | WRITE | WRITE | ✓ Aligned | scripts/grocery.py:state_path() writes ~/.openclaw/data/grocery-checklist/state.… |
| Filesystem | READ | READ | ✓ Aligned | scripts/grocery.py:openclaw_config_path() reads ~/.openclaw/openclaw.json |
| Network | READ | READ | ✓ Aligned | scripts/grocery.py:telegram_api() POSTs only to https://api.telegram.org/ |
| Shell | WRITE | WRITE | ✓ Aligned | scripts/grocery.py:run_openclaw() runs 'openclaw' binary; scripts/telegram_bot.p… |
| Environment | READ | READ | ✓ Aligned | scripts/grocery.py:state_path() reads GROCERY_STATE_FILE env var |
1 findings
Medium External URL 外部 URL
https://api.telegram.org/bot scripts/grocery.py:394 File Tree
7 files · 41.5 KB · 1285 lines Python 2f · 1069L
Markdown 4f · 211L
Shell 1f · 5L
├─
▾
scripts
│ ├─
grocery.py
Python
│ ├─
grocery.sh
Shell
│ └─
telegram_bot.py
Python
├─
AGENTS.md
Markdown
├─
README.md
Markdown
├─
SETUP.md
Markdown
└─
SKILL.md
Markdown
Dependencies 2 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
stdlib | bundled with python3 | stdlib | No | No external dependencies; only urllib (stdlib) and subprocess (stdlib) used |
openclaw | unspecified | external binary | No | Declared required binary; invoked via subprocess with fixed args |
Security Positives
✓ All file I/O is scoped to declared ~/.openclaw paths only
✓ Network activity is limited to Telegram Bot API (api.telegram.org) using the configured bot token
✓ No credential harvesting: bot token is used only to call Telegram API, never exfiltrated
✓ No base64, no eval, no obfuscation, no IP hardcoding
✓ No access to sensitive paths (~/.ssh, ~/.aws, .env)
✓ Subprocess is constrained to a single known binary (openclaw) with fixed argument structure
✓ User allowlist enforced in telegram_bot.py polling loop
✓ No remote script download (curl|bash, wget|sh)
✓ No hidden HTML comments or prompt injection payloads