Obsidian Sync
Analysis
The skill appears to provide the stated Obsidian sync server, but it gives a token-protected service read/write access to notes and agent memory, which deserves careful review before installation.
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.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
const { content, expectedHash } = data; ... if (expectedHash) { ... } ... await fs.writeFile(validation.path, content, 'utf-8');The write endpoint accepts arbitrary string content and only performs conflict detection when the client supplies expectedHash, so a token-bearing client can overwrite files in allowed paths without a mandatory version check.
systemctl --user enable --now openclaw-sync loginctl enable-linger $USER # Start on boot
The documentation includes a persistent user service that starts the sync server automatically.
Install the plugin via [BRAT](https://github.com/TfTHacker/obsidian42-brat) using: `AndyBold/obsidian-openclaw`
The main Obsidian-side client is an external BRAT-installed repository that is not included in the reviewed artifacts.
Checks whether tool use, credentials, dependencies, identity, account access, or inter-agent boundaries are broader than the stated purpose.
SYNC_TOKEN="your-gateway-token" node scripts/sync-server.mjs ... `SYNC_TOKEN` | (required) | Auth token (use Gateway token)
The documented bearer secret is a Gateway token rather than a clearly scoped sync-only token.
Checks for exposed credentials, poisoned memory or context, unclear communication boundaries, or sensitive data that could leave the user's control.
allowedPaths: (process.env.SYNC_ALLOWED_PATHS || 'notes,memory')... if (req.method === 'POST' && endpoint === '/sync/write') ... await fs.writeFile(validation.path, content, 'utf-8');
The default sync scope includes a directory named 'memory', and the write endpoint can create or overwrite files in allowed paths.
