Heartbeat Manager
SuspiciousAudited by ClawScan on May 10, 2026.
Overview
This skill has a coherent heartbeat/task-monitoring purpose, but the shipped defaults and code can automatically push workspace data to Git and use a local OpenClaw Discord token/channel in ways that are not clearly disclosed.
Do not run this skill as-is unless you first inspect config/settings.yaml. Set git.enabled and git.auto_push to false unless you deliberately want automatic remote pushes, and remove or disable the Discord notification code/fallback unless you explicitly configure your own token and channel. Also review any heartbeat or cron setup because recurring execution can repeatedly publish or sync data.
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.
Workspace task/status files could be committed and pushed to whatever Git remote is configured, potentially exposing private activity data or mutating a remote repository.
The actual shipped configuration enables automatic Git commit and push. This is high-impact because the heartbeat flow includes Git sync and tools/git_ops.py performs git add/commit/push when enabled.
git: enabled: true # 本地 eva-shared-memory remote 已配置 auto_commit: true auto_push: true
Ship with git.enabled=false and git.auto_push=false, require explicit opt-in, and show/confirm the target remote before any push.
A user could install and run the heartbeat believing Git sync is off, while the packaged config is already set to push.
This safety claim is contradicted by the provided config/settings.yaml, where git.enabled and auto_push are already true. Users may trust the documentation and run the skill expecting no Git publishing.
**默认行为:Git 功能完全关闭(`git.enabled: false`)**,不会执行任何 git 操作,除非你在 `config/settings.yaml` 中显式开启。
Make the documentation and shipped config match; if Git push is possible, disclose the default clearly and require a user-controlled setup step.
The skill may use a Discord bot/account token that the user did not explicitly provide to this skill.
The main entry point contains a Discord notification routine that defaults enabled and falls back to reading a local OpenClaw profile token. The registry metadata declares no primary credential and only documents email/Canvas/FSP credentials.
discord_cfg = cfg.get("discord_notify", {})
if not discord_cfg.get("enabled", True):
return
...
oc_cfg_path = _Path.home() / ".openclaw" / "openclaw.json"
...
token = oc.get("channels", {}).get("discord", {}).get("token", "")Remove the implicit ~/.openclaw token fallback, default Discord notifications to disabled, and declare any Discord token/channel requirements explicitly.
Private task and schedule status could be posted to a Discord channel the user did not choose or expect.
The Discord routine uses a hard-coded default channel ID and posts heartbeat content containing health score, task counts, upcoming events, and alerts. Discord is not listed in the declared network side effects.
channel_id = discord_cfg.get("heartbeat_channel_id", "1476378850819575882")
...
"https://discord.com/api/v10/channels/{channel_id}/messages"
...
"-d", _json.dumps({"content": content})Remove the hard-coded channel default, require explicit channel configuration, disclose the exact data sent, and make Discord posting opt-in.
If scheduled, the skill can continue running periodically and repeatedly update files, send notifications, or sync data.
The skill is designed for recurring heartbeat execution. This is disclosed and aligned with the purpose, but users should notice it because recurring execution amplifies any enabled side effects.
"heartbeat": { "schedule": "*/15 * * * *", "command": "python tools/heartbeat_run.py beat" }Only add the cron/OpenClaw heartbeat hook after reviewing and disabling any sync or notification features you do not want.
