Lp3
Medium
- Category
- MCP Least Privilege
- Confidence
- 70% confidence
- Finding
- Without declared permissions the skill's intent is opaque and cannot be validated.
Security audit
Security checks for vulnerabilities and agentic risk
This skill is a local notification filter that persistently stores triage state, with some documentation inconsistencies but no evidence of hidden exfiltration, credential use, or unrelated system access.
Install only if local persistence of notification content and metadata is acceptable. Review rules and dropped.json periodically, use --force for test classifications to avoid creating lasting source rules, and be careful with --rules clear, --rules remove, --seen --all, --send, and --digest because several mutate or clear local triage state without an enforced --force prompt.
Mitigation: Review `dropped.json` regularly. Any source in `rules.json` at `ignore` level should be re-evaluated periodically. ### 3. Destructive Operations Require `--force` The following operations are silently destructive — they mutate or clear state without confirmation. To prevent accidental data loss, they require the `--force` flag: | Operation | Effect | Force Required? | |-----------|--------|-----------------|
1. **Source-specific rules first** — If a rule exists for the source, use it immediately 2. **Keyword scoring** — Each urgent keyword +2, each batch keyword -1, time-sensitive +1 3. **Thresholds** — Score ≥ 3 = urgent, Score ≥ 1 = batch, else ignore 4. **Auto-rule creation** — First classification for a source saves its level as a persistent rule ---
Mitigation: Review `dropped.json` regularly. Any source in `rules.json` at `ignore` level should be re-evaluated periodically. ### 3. Destructive Operations Require `--force` The following operations are silently destructive — they mutate or clear state without confirmation. To prevent accidental data loss, they require the `--force` flag: | Operation | Effect | Force Required? | |-----------|--------|-----------------|
- `dropped.json` — silently-dropped notifications (**capped at 1000 entries**) - `digest.json` — digest store (**capped at 1000 entries**) All JSON writes are **atomic** (temp + rename) — a crash mid-write cannot corrupt the state files. Clear state by deleting files under `memory/notification-triage/`. ### 5. Digest vs. Batch — They're Separate `--digest` clears the `digest.json` store. It does **NOT** clear the `batch.json` queue. To clear the batch queue, flush with `--send` (all pending) or mark items as seen individually.
No suspicious patterns detected.