Openclaw Team

WarnAudited by ClawScan on May 10, 2026.

Overview

This skill is review-worthy because it exposes a LAN web server with hardcoded OpenClaw gateway credentials, unsafe file/path handling, and security claims that are stronger than the code supports.

Do not install this as-is for a real team. If you still want to test it, run only on a trusted local machine, change the invite code, remove and rotate the hardcoded gateway token, restrict network exposure, disable or fix uploads, and treat the current zero-knowledge/encryption claims as unproven until the code is corrected.

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

Anyone who can access or copy this skill source may obtain a token intended to authorize OpenClaw gateway access, and all web users share that same authority.

Why it was flagged

A bearer token for the OpenClaw gateway is embedded directly in the shipped source even though the registry declares no primary credential.

Skill content
GATEWAY_TOKEN = "9d2a452dbb739cbf940a5794181a280453dda9ed99367b6a" ... headers={"Authorization": f"Bearer {GATEWAY_TOKEN}"
Recommendation

Remove the hardcoded token, rotate it if real, require it through a user-controlled secret or environment variable, and declare the credential requirement in metadata.

What this means

A registered LAN user may be able to operate the host's OpenClaw agent under the host's gateway privileges, not just within their own isolated chat history.

Why it was flagged

Each user's chat context is forwarded to the same local OpenClaw gateway/model using one shared token, with no artifact evidence of per-user gateway identity, tool scope, or action containment.

Skill content
requests.post(f"{GATEWAY_URL}/v1/chat/completions", ... json={"model": "openclaw:main", "messages": messages, "stream": False}
Recommendation

Use per-user authorization or a tightly scoped gateway token, document exactly what OpenClaw capabilities are exposed, and require approval for any high-impact agent/tool actions.

What this means

Uploaded private files may be reachable by other people on the LAN if they know or discover the URL, and unsafe filenames increase filesystem-write risk.

Why it was flagged

Uploaded filenames are not sanitized, files are saved in plaintext, and uploaded files are served back over an unauthenticated URL.

Skill content
safe_filename = f"{timestamp}_{file.filename}" ... file.save(file_path) ... @app.route('/uploads/<username>/<filename>') ... return send_from_directory(...)
Recommendation

Require authentication and ownership checks for downloads, sanitize filenames with a safe basename, restrict file types/sizes, and encrypt uploads if they are part of the promised isolated user data.

What this means

A user with the invite code could create or write skill files outside the intended ~/Desktop/alldata directory under the server user's permissions.

Why it was flagged

Username validation only checks length and spaces; path separators such as ../ are not blocked before creating user directories and files.

Skill content
def get_user_dir(username: str) -> str:
    safe_name = username.replace(" ", "_")
    return os.path.join(DATA_DIR, safe_name) ... if len(username) > 15 or not username:
Recommendation

Validate usernames with a strict allowlist such as letters, numbers, underscore, and hyphen; reject path separators; and verify resolved paths stay inside DATA_DIR.

What this means

If an encrypted history file is tampered with or crafted, opening a chat could execute Python code in the server process.

Why it was flagged

Persistent chat history is parsed with Python eval instead of a safe data parser.

Skill content
decrypted = decrypt_data(f.read(), password)
history = eval(decrypted)
Recommendation

Store history as JSON and parse it with json.loads; never use eval on persisted or user-influenced data.

What this means

Users may believe passwords, chat content, and uploads have stronger protection than they actually do on the local network and at rest.

Why it was flagged

The documentation claims end-to-end/in-transit encryption and PBKDF2, while the documented access URL is plain HTTP and the code derives keys directly with SHA-256.

Skill content
🛡️ **端到端加密**:所有用户数据...在传输和存储全程加密 ... 访问: `http://<你的IP>:8888` ... PBKDF2 key derivation
Recommendation

Correct the security claims, use HTTPS for network access, implement a salted password KDF such as PBKDF2/Argon2, and clearly state which data is not encrypted.

What this means

Prior messages can influence future assistant responses and remain on disk until removed, which is expected for chat continuity but important for privacy.

Why it was flagged

The skill intentionally persists recent chat history and reuses it in later gateway calls.

Skill content
history.append({"role": "user", "content": user_message}) ... history = history[-40:] ... f.write(encrypt_data(str(history), password))
Recommendation

Provide clear controls to view, export, clear, and limit retained history, and avoid placing sensitive instructions in persistent chat history.