M365 Spam Manager
Analysis
This skill is mostly purpose-aligned, but it reuses Microsoft 365 token caches and can modify mailboxes without the confirmations promised in its instructions.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
const dryRun = getArg('dryRun', 'false') === 'true'; ... method: 'PATCH' ... body: JSON.stringify({ categories: newCats })The script defaults to making live Graph PATCH updates rather than dry-run mode, labeling messages as Spam or OK based on a heuristic threshold without a confirmation step.
Review mode (default) — user must approve each action ... Move a false positive to inbox (requires confirmation) ... the script always prompts for confirmation before moving emails.
The documentation promises confirmation for move actions, but the included move scripts directly call Microsoft Graph move endpoints without implementing a prompt.
node skills/m365-spam-manager/scripts/auto-clean.mjs --profile tom-business-mail --mailbox radman@e-ola.com --threshold 80
The automatic cleanup instructions reference auto-clean.mjs, but that file is not included in the provided manifest; this is a coherence/provenance gap rather than proof of hidden behavior.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
const cacheText = fs.readFileSync(cachePath, 'utf8'); ... if (raw && typeof raw === 'object' && raw.access_token) return raw.access_token;
The skill reads an existing Microsoft 365 token cache and reuses its access token for Graph calls, while the registry metadata declares no primary credential or required config paths.
