Claw Sync

WarnAudited by ClawScan on May 10, 2026.

Overview

Claw Sync appears to be a real backup tool, but it can upload broad private OpenClaw data and has unsafe or under-disclosed sync, restore, and auto-sync behavior.

Install only if you are comfortable backing up OpenClaw memory, profile, rules, tool configs, daily logs, and skills to a private repository. Use a dedicated empty private repo and a fine-grained token, run /sync --dry-run first, audit your skills directory for secrets, avoid /restore --force unless necessary, and do not enable the cron/auto-sync setup unless you want periodic background uploads.

Findings (7)

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

A malicious or copied repository URL could cause local shell commands to run when syncing.

Why it was flagged

The repository URL and token are loaded from local configuration and interpolated into a shell command string; URL validation checks host/protocol but does not shell-escape the repository path.

Skill content
const repoUrl = repo.replace('https://', `https://${token}@`); ... safeExec(`git push ${repoUrl} HEAD:main --force`, { stdio: 'pipe' });
Recommendation

Use only a verified private repository URL. The maintainer should replace execSync string commands with spawn/execFile argument arrays and strictly validate repository path characters.

What this means

A misconfigured backup repository could lose existing contents or history.

Why it was flagged

The sync operation force-pushes to the configured repository's main branch, which can overwrite remote branch history if BACKUP_REPO points at an existing or wrong repository.

Skill content
safeExec(`git push ${repoUrl} HEAD:main --force`, { stdio: 'pipe' });
Recommendation

Use a dedicated empty private repository only. The maintainer should avoid force-push by default or require an explicit warning/confirmation for destructive remote updates.

What this means

Private agent memory, custom skills, and any secrets stored inside skill folders may be persisted to the remote backup repository and its tags.

Why it was flagged

The implementation copies each skill directory recursively into the sync staging area, without visible filtering for .env files, embedded credentials, git metadata, or other private files inside skills.

Skill content
fs.cpSync(skillPath, destPath, { recursive: true });
Recommendation

Audit the skills directory before syncing, keep the backup repository private, and add explicit denylist/exclusion handling for .env, config, credentials, node_modules, and .git data.

What this means

Users may trust the 'secrets never leave' framing and sync more data than they intended.

Why it was flagged

The documentation makes broad safety claims, but the provided push code recursively copies whole skill folders, so secret files inside those folders may still be included.

Skill content
## NOT Synced (security) ... - `.env` - Contains secrets ... - 🔒 **Secure** - No config files synced, token sanitization
Recommendation

Treat the safety claim as incomplete. The maintainer should either implement recursive secret exclusions or narrow the documentation to exactly what is and is not filtered.

What this means

Sensitive memory and skill data could be uploaded periodically in the background after setup.

Why it was flagged

The setup script creates an enabled recurring agent-turn job that runs the sync script every 12 hours if activated or loaded.

Skill content
schedule: { kind: "every", everyMs: 12 * 60 * 60 * 1000 }, payload: { kind: "agentTurn", message: "exec: node skills/claw-sync/scripts/push.js" }, enabled: true
Recommendation

Do not enable auto-sync unless you want ongoing background backups. The maintainer should declare this capability prominently and require explicit activation/removal instructions.

What this means

Anyone who obtains the token may be able to read or modify the configured backup repository.

Why it was flagged

A Git provider token with repository contents read/write permission is expected for this backup use case, but it is still a sensitive delegated credential.

Skill content
# Required permissions: Contents (Read and Write) ... BACKUP_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
Recommendation

Use a fine-grained token limited to one dedicated private backup repository, rotate it if exposed, and avoid reusing a broader personal token.

What this means

Users may not see the credential and tooling requirements until after reading the skill files.

Why it was flagged

The registry metadata under-declares the actual Git/token setup and command execution requirements, although the included docs do describe them.

Skill content
Source: unknown; Homepage: none; Required env vars: none; Primary credential: none; Required binaries: none; No install spec
Recommendation

Publish clear source/homepage metadata and declare the Git/token requirements in registry metadata.