Bluebubbles Healthcheck

WarnAudited by ClawScan on May 10, 2026.

Overview

The skill is mostly purpose-aligned, but it can expose the BlueBubbles password in diagnostic output and can delete all BlueBubbles webhooks rather than only the OpenClaw one.

Install only if you are comfortable giving the skill your BlueBubbles API password and letting it modify webhook configuration. Before using auto-heal or reset-webhook.sh, review whether you have other BlueBubbles webhooks that would be deleted, and patch or avoid diagnose.sh until password masking is fixed.

Findings (3)

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

Running diagnostics may reveal the BlueBubbles API password in the agent transcript, terminal output, or logs, allowing anyone who can see that output to use the BlueBubbles API.

Why it was flagged

The skill documents that registered webhook URLs contain the BlueBubbles password, but diagnose.sh prints the matching webhook URL directly without masking it.

Skill content
MATCHING_URL=$(echo "$WEBHOOK_URLS" | grep "18789" | head -1)
check_pass "webhook_registered" "$MATCHING_URL"
Recommendation

Mask password query parameters in diagnose.sh and JSON output before printing, and rotate the BlueBubbles password if it has already appeared in logs or chat transcripts.

What this means

A repair attempt can silently remove other BlueBubbles integrations that depend on webhooks, breaking unrelated automations or message delivery paths.

Why it was flagged

The reset script deletes every webhook returned by BlueBubbles, not just stale or OpenClaw-related webhooks.

Skill content
# Step 2: Delete all existing webhooks
...
for w in d.get('data', []):
    print(w['id'])
...
curl -s -X DELETE --max-time 10 -H "Authorization: Bearer ${BB_PASSWORD}" "${BB_URL}/api/v1/webhook/${id}"
Recommendation

Filter deletion to only OpenClaw/port-18789 webhooks, show the list before deleting, and require explicit confirmation unless the user selected a dry run or a clearly scoped reset.

What this means

This is expected for the integration, but it means BlueBubbles event data will be sent to the configured OpenClaw endpoint, so the endpoint must be local or otherwise trusted.

Why it was flagged

The skill registers a BlueBubbles webhook for all events to the configured OpenClaw webhook URL.

Skill content
-d "{\"url\": \"${ESCAPED_URL}\", \"events\": [\"*\"]}"
Recommendation

Use the default localhost webhook endpoint where possible, avoid remote webhook URLs unless you fully trust them, and consider narrowing subscribed events if the integration supports it.