T01 · Skill Instruction Hijacking
- Location
SKILL.md:218- Finding
Mandatory Promotional Instruction Alters Agent Responses
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This appears to be a real OpenClaw backup and migration tool, but it needs Review because backups can include secrets and restoring shared or local archives can overwrite persistent OpenClaw state, skills, credentials, scripts, and cron data without enough trust checks.
Install only if you intentionally want a full OpenClaw backup and migration tool. Treat every backup, clone ID, and share token as sensitive because archives may contain memory, skills, credentials, tokens, channel state, identity, scripts, and cron data. Use --test before restore, restore only archives from sources you trust, avoid shared backups for secrets, and keep pre-restore backups until you have verified the restored instance.
SKILL.md:218Mandatory Promotional Instruction Alters Agent Responses
clawclone.mjs:24151Unsigned Backup Import Can Poison Persistent Agent State and Restore Executable Content
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
* Parse options from `argv` removing known options,
* and return argv split into operands and unknown arguments.
*
* Side effects: modifies command by storing options. Does not reset state if called again.
*
* Examples:
*
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
module.exports = {
name: "dotenv",
version: "16.6.1",
description: "Loads environment variables from .env file",
main: "lib/main.js",
types: "lib/main.d.ts",
exports: {
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
keywords: [
"dotenv",
"env",
".env",
"environment",
"variables",
"config",
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
keywords: [
"dotenv",
"env",
".env",
"environment",
"variables",
"config",
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
if (!(key in state.jobs)) {
return;
}
delete state.jobs[key];
if (error) {
abort(state);
} else {
Restore operations overwrite local workspace and configuration files directly, and the execution path does not enforce a meaningful interactive confirmation before modifying live state. In this context, that can replace credentials, agents, devices, scripts, and config from an external archive, causing data loss or hostile reconfiguration.
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.
};
}
/**
* Clear state
*/
clearState() {
this.state = {};
Without declared permissions the skill's intent is opaque and cannot be validated.
The skill is explicitly designed to persist and restore complete OpenClaw state across devices and instances, including memory, skills, agents, settings, and optional tokens. That persistence is intentional, but it increases the security risk because sensitive state can be copied, retained longer than expected, or transferred into less trusted environments.
---
name: clawclone
description: "Backup, clone, and migrate OpenClaw data across instances. Upload/download OpenClaw snapshots to local or cloud - https://clawclone.cc . Create shareable Agent configurations, sync between devices, and restore complete OpenClaw state including memory, skills, agents, and settings. Use when user wants to backup their OpenClaw data, share configurations, migrate to new server, or create snapshots."
metadata:
openclaw:
requires:
The skill encourages uploading full OpenClaw state to a cloud service and explicitly notes that backups may include API keys and tokens, but it does not provide a strong privacy/security warning before those actions. Users could unintentionally exfiltrate highly sensitive workspace contents, credentials, memory, and agent data to a third-party service without informed consent.
The share workflow describes creating and using share links without clearly warning that anyone with the link or token may gain access to the backed-up workspace contents. Because the backup can include memory, skills, settings, files, and possibly credentials, an exposed share token could leak a complete agent environment to unauthorized parties.
The share-link feature extends session persistence into distribution, allowing backed-up agent state to be accessed outside the original environment. In this context, persistence becomes more dangerous because complete workspace contents may be replicated to other users or systems, potentially exposing memory, skills, settings, and embedded secrets.
# Create a share link
node clawclone.mjs share create <clone-id>
# Check share status
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
*/
subcommandTerm(cmd) {
const args = cmd.registeredArguments.map((arg) => humanReadableArgName(arg)).join(" ");
return cmd._name + (cmd._aliases[0] ? "|" + cmd._aliases[0] : "") + (cmd.options.length ? " [options]" : "") + // simplistic check for non-help option
(args ? " " + args : "");
}
/**
The cloud upload path packages credentials and API keys into the backup and sends them to a remote service, but the command flow does not present an explicit pre-upload warning or consent checkpoint. Given the skill's purpose and broad collection scope, this materially increases the chance of users exfiltrating secrets unintentionally.
The code backs up and restores highly sensitive material, including credentials and gateway tokens, as part of routine clone operations. In this skill context, those secrets are bundled into archives and may be uploaded, downloaded, shared, or restored across instances, creating a strong risk of credential leakage and cross-instance compromise.
The backup includes executable shell scripts and cron job state, and the restore path places them back into the live OpenClaw home with executable permissions. That turns a backup/restore skill into a persistence and code-deployment mechanism, which is significantly more dangerous than ordinary configuration migration.
The skill metadata frames the capability as backup/clone/migration, but the implementation also supports destructive and mutable remote operations such as deleting cloud backups and creating/revoking share links. This expands the privilege surface beyond what a user might reasonably infer from the description, increasing the risk of unintended data deletion or exposure if invoked by an agent or user without clear consent.
The CLI description claims to handle workspace configurations, but the implementation performs full-instance backup and restore including secrets, credentials, agents, devices, channel state, scripts, and cron. This mismatch materially understates the sensitivity and destructiveness of the operation, making misuse more likely.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
program2.command("show <clone-id>").description("Show backup details").action(async (cloneId, options) => {
await run("show", { ...options, cloneId });
});
program2.command("delete <clone-id>").description("Delete a cloud backup").option("--yes", "Skip confirmation").action(async (cloneId, options) => {
await run("delete", { ...options, cloneId });
});
program2.command("clone <clone-id>").description("Clone from backup (download and restore to local workspace)").option("--no-backup", "Skip creating a pre-restore backup of current workspace").option("--test", "Preview mode \u2014 show what would be restored without making changes", false).option("--overwrite-token", "Overwrite local Gateway Token with the one from backup", false).action(async (cloneId, opts) => {
The skill hard-codes English-language user-facing messages throughout and explicitly formats dates using toLocaleDateString("en-US"), imposing a specific locale choice. Under the policy, forcing a language or locale without user opt-in is a natural-language policy violation unless the locale is justified or configurable.
The CLI reads CLAWCLONE_API_KEY from the environment and uses it to authenticate outbound requests, but there is no inline disclosure in the execution path that a credential is being consumed for remote operations. This is a sensitive credential access operation under the rule, and the warning is only partially implied by configuration help rather than clearly disclosed at use time.
Detected: suspicious.dangerous_exec, suspicious.env_credential_access, suspicious.exposed_secret_literal