Mediator

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

Mediator matches its stated communication-filtering purpose, but it needs review because it can monitor private messages on a schedule and uses hard-coded Gmail defaults plus undeclared helper/dependency behavior.

Review this skill carefully before installing. Only use it after removing the hard-coded Gmail accounts, explicitly configuring your own accounts and contacts, verifying the Gmail/iMessage helper tools, and deciding whether private messages may be sent to an LLM. Prefer assist/draft mode and avoid scheduled checks until you are comfortable with what it monitors and how to disable it.

Findings (6)

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.

What this means

The skill may try to monitor accounts that are not the installing user's intended accounts, and it is unclear which Gmail credentials the helper will use.

Why it was flagged

Email processing uses a local Gmail helper and falls back to hard-coded Gmail account identities instead of requiring explicit user account selection.

Skill content
GOG_SCRIPT = Path.home() / "clawd" / "scripts" / "gog-read.sh"
...
accounts = config.get("mediator", {}).get("gmail_accounts", [
        "dylan.turner22@gmail.com",
        "dylan@doxy.me"
    ])
Recommendation

Remove hard-coded personal account defaults, require the user to explicitly choose accounts, declare the Gmail credential/helper requirement, and show the selected account before reading mail.

What this means

Important context could be missed if originals are hidden, and automatic replies could be risky for legal, financial, family, or business messages.

Why it was flagged

The documented workflow includes hiding/archiving communications and exposes an automatic response mode, both of which are high-impact communication actions.

Skill content
- **intercept**: Archive/hide original, only show summary. User never sees raw emotional content.
...
- **auto**: Automatically respond (use with extreme caution).
Recommendation

Default to assist/draft mode, require explicit confirmation before archiving/marking read or sending, and add enforced exclusions for legal, financial, child-related, and business-critical messages.

What this means

Running the skill can install code from the Python package ecosystem without a clear install-time review step.

Why it was flagged

A runtime import failure triggers an unpinned package install even though no install spec or dependency requirement is declared.

Skill content
except ImportError:
    print("Installing PyYAML...")
    os.system(f"{sys.executable} -m pip install -q pyyaml")
Recommendation

Declare dependencies in the install metadata, pin package versions, avoid runtime auto-installation, and ask the user before installing anything.

What this means

Private emails or iMessages may be sent to an external LLM provider depending on the user's llm configuration.

Why it was flagged

Raw message content is passed to the local llm CLI for processing by a configured model/provider.

Skill content
["llm", "-m", "gpt-4o-mini", prompt, "--no-stream"],
            input=content,
Recommendation

Clearly disclose the LLM provider and privacy implications, offer a local/offline option, and let users opt out or redact sensitive content before processing.

NoteHigh Confidence
ASI10: Rogue Agents
What this means

Once configured, the skill can continue monitoring communications on a schedule until the user disables it.

Why it was flagged

The skill recommends recurring heartbeat or cron execution for ongoing message checks.

Skill content
# Process incoming (usually called by cron/heartbeat)
~/clawd/skills/mediator/scripts/mediator.sh check
...
*/5 9-18 * * 1-5 ~/clawd/skills/mediator/scripts/mediator.sh check
Recommendation

Use a clear opt-in setup step, document how to disable the schedule, and provide visible status/log review for all recurring checks.

What this means

A user expecting not to see raw emotional content may still be shown the original message text during fallback behavior.

Why it was flagged

If LLM processing fails, the fallback can return raw message text, which undermines the advertised emotion-stripping behavior.

Skill content
# Fallback: simple extraction without LLM
    return fallback_summarize(content, mode)
...
summary = content[:500] + "..." if len(content) > 500 else content
Recommendation

Disclose fallback behavior, or fail closed with a warning instead of showing raw content when filtering cannot be performed.