Calendar Reminders (gcalcli + CalDAV)

PassAudited by VirusTotal on May 12, 2026.

Overview

Type: OpenClaw Skill Name: calendar-reminders Version: 0.1.1 The skill is classified as suspicious due to its reliance on executing external binaries (`gcalcli`, `khal`, and potentially `vdirsyncer`) whose paths are configurable in `~/.config/openclaw/calendar.json`. This introduces a Remote Code Execution (RCE) vulnerability if an attacker can modify the configuration file to point to arbitrary executables. While the `SKILL.md` documentation explicitly warns the agent/user about this risk and advises on secure practices (e.g., 'Only point `gcalcliPath` / `khalBin` to **trusted binaries**'), the inherent capability to execute user-defined binary paths makes it a significant security concern. The Python script `scripts/calendar_reminder_plan.py` does correctly use `subprocess.check_output` with argument lists (defaulting to `shell=False`), mitigating shell injection from event data, and the example config provides `vdirsyncerSyncCommand` as a safe argument list.

Findings (0)

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

Installing and wiring this skill may expose calendar event details to the local planner and any reminder-scheduling workflow you build around it.

Why it was flagged

The skill is expected to use Google Calendar OAuth and optional CalDAV tooling, which means it can access private calendar data through the user's configured calendar accounts.

Skill content
`gcalcli` requires OAuth. ... Optional (for CalDAV/iCloud): `vdirsyncer`, `khal`
Recommendation

Use only the calendars you actually want reminders for, keep the config private, and review any OAuth/CalDAV permissions granted to the underlying tools.

What this means

A bad or unexpected binary path in the config could cause the scheduler to run the wrong local program.

Why it was flagged

The planner executes a configured local gcalcli binary, and similar code executes khal when CalDAV is enabled. This is central to the skill's purpose and uses argument-list subprocess calls, but the configured paths must be trusted.

Skill content
gcalcli = os.path.expanduser(google.get("gcalcliPath") or "gcalcli") ... out = subprocess.check_output(cmd, text=True, env=env)
Recommendation

Set gcalcliPath and khalBin to trusted, preferably absolute, binary paths and avoid running configs from untrusted sources.

What this means

Calendar event titles from invitations or shared calendars could later appear in agent context as reminder text.

Why it was flagged

The script's reminder message includes the calendar event title, so external calendar text can be persisted into future reminder context if the suggested systemEvent wiring is used.

Skill content
For each planned reminder, creates a one-shot OpenClaw `systemEvent` reminder at `reminderAtUtc`.
Recommendation

Treat calendar titles as untrusted data in reminder messages, and consider quoting, prefixing, or sanitizing titles so they are not interpreted as agent instructions.

What this means

If configured, the workflow may keep running daily and create reminders automatically.

Why it was flagged

The suggested cron/state-file workflow is persistent automation. It is disclosed and user-directed, not hidden, but it should be reviewed before enabling.

Skill content
Create a daily cron job ... runs `scripts/calendar_reminder_plan.py` ... creates a one-shot OpenClaw `systemEvent` reminder ... Writes a small state file so you don’t schedule duplicates.
Recommendation

Enable cron or agent scheduling only after reviewing the exact command, state-file path, calendars, and duplicate-prevention behavior.

What this means

Users may need to manually discover and install the required calendar tools, and one advertised wrapper file is not present in the supplied manifest.

Why it was flagged

The registry metadata does not declare the binaries that SKILL.md says are required, and the manifest does not include the `scripts/calendar` wrapper mentioned in SKILL.md. This is a packaging/setup clarity issue rather than evidence of malicious behavior.

Skill content
Required binaries (all must exist): none ... File manifest ... SKILL.md ... references/openclaw-calendar.example.json ... scripts/calendar_reminder_plan.py
Recommendation

Before installing, confirm that python3, gcalcli, and any optional CalDAV tools are installed from trusted sources, and do not rely on missing files that are not included in the package.