Toggle

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill largely matches its stated purpose, but its memory-saving mode has unsafe file-write bugs that can corrupt or unexpectedly write local memory files while handling sensitive activity history.

Install only if you are comfortable giving the agent access to your ToggleX activity history. Avoid the `--persist` and cron modes until the file-write bugs are fixed; if you do use them later, back up your memory folder, limit date ranges, and keep the Toggle API key revocable.

Findings (5)

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

Your agent may retain and reuse detailed records of what you worked on, which sites were involved, and related project context.

Why it was flagged

The skill intentionally retrieves detailed personal/work activity and can store raw results in the agent memory area for later reuse.

Skill content
ToggleX captures the user's work sessions, projects, focus scores, and context switches across the web ... Fetch + save to memory | `python3 {baseDir}/scripts/toggle.py --persist {baseDir}/../../memory`
Recommendation

Use persistence only if you want this activity history stored in agent memory; prefer limited date ranges and periodically review or delete saved memory files.

What this means

Anyone with access to this environment variable may be able to fetch your Toggle activity data.

Why it was flagged

The script uses a Toggle API key as delegated access to the ToggleX service; the code sends it to the disclosed Toggle endpoint and does not show hardcoded or logged secrets.

Skill content
api_key = os.environ.get("TOGGLE_API_KEY") ... "x-openclaw-api-key": api_key
Recommendation

Use a revocable, least-privileged API key if available, keep it out of chat, and rotate it if exposed.

What this means

If enabled, Toggle data may be fetched and saved on a recurring schedule rather than only when you ask.

Why it was flagged

The script checks for a recurring OpenClaw cron job and guides the agent to ask the user about scheduled refreshes; it does not create the cron job by itself.

Skill content
CRON_JOBS_PATH = os.path.expanduser("~/.openclaw/cron/jobs.json") ... "Ask the user: \"How often do you want to refresh your Toggle data? (default: every hour)\"
Recommendation

Only enable scheduled sync if you want ongoing collection; set `cron_disabled: true` or remove the cron job if you prefer manual use.

What this means

A repeated `--persist` run, especially from cron, could damage daily memory notes or create very large files.

Why it was flagged

The empty start/end markers make the replacement regex match far too broadly, potentially inserting the Toggle section many times and corrupting or massively expanding existing memory files.

Skill content
TOGGLE_START = ""
TOGGLE_END = ""
...
pattern = re.compile(rf"{re.escape(TOGGLE_START)}.*?{re.escape(TOGGLE_END)}", re.DOTALL)
...
content = pattern.sub(lambda _: section, content)
Recommendation

Do not use `--persist` or scheduled sync until this is fixed; the script should use non-empty sentinel markers, atomic writes, backups, and tests for existing-file updates.

What this means

A bad or compromised API response could cause unexpected local file writes within the user's permissions.

Why it was flagged

The local output filename is derived directly from API response keys without validating that `day` is a safe YYYY-MM-DD basename, so malformed response data could write outside the intended memory directory.

Skill content
workflows_by_date = data.get("workflowsByDate", {})
for day, workflows in workflows_by_date.items():
    persist_day(memory_dir, day, workflows)
...
path = os.path.join(memory_dir, f"{day}.md")
Recommendation

Validate `day` with a strict date regex, resolve the final path, and reject writes that escape the chosen memory directory.