Undersheet

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

UnderSheet is a coherent thread-memory skill, but it can use account credentials to post publicly and includes an automated Moltbook CAPTCHA/verification solver, so it warrants review before installation.

Install only if you are comfortable granting the configured platform access. Prefer read-only credentials, avoid enabling posting unless every post is explicitly approved, pin the installed code to a reviewed version, and review the omitted core files before relying on this assessment.

Findings (6)

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

An agent using this adapter could post comments while bypassing Moltbook’s verification step, creating account, policy, or spam-abuse risk.

Why it was flagged

The Moltbook adapter automatically solves a service verification challenge and retries a comment-posting request, which is an anti-abuse bypass for agent-driven posting.

Skill content
# CAPTCHA solver ... if resp.get("verification"): ... body["verification_answer"] = answer ... resp = _api("POST", f"/posts/{post_id}/comments", body, api_key)
Recommendation

Disable or remove the CAPTCHA/verification solver by default, require explicit user approval before posting, and document any service-policy implications.

What this means

If copied into an agent workflow, this could cause the agent to publish replies from the user’s accounts or bots without review.

Why it was flagged

The documented pattern posts replies in an automated loop and focuses on duplicate prevention, but does not show a per-post human confirmation step.

Skill content
for c in us.get_unanswered_comments(adapter, state, thread_ids):
    result = adapter.post_comment(c["_thread_id"], f"reply to {c['author']}")
    ...
    time.sleep(30)
Recommendation

Make read-only operation the default, add explicit approval before every post, and clearly separate tracking from publishing workflows.

What this means

These credentials can allow reading and posting as the configured account or bot if the skill or local files are misused.

Why it was flagged

The setup instructions ask users to place multiple platform credentials, including passwords, bot tokens, and OAuth write secrets, in local config files.

Skill content
"username": "YOUR_HN_USER", "password": "YOUR_HN_PASS" ... "client_secret" ... "bot_token" ... "access_token_secret"
Recommendation

Use least-privilege or read-only credentials where possible, protect the config directory, and avoid granting write credentials unless posting is explicitly needed.

What this means

A later change on GitHub could alter the code that has access to the user’s platform credentials and posting permissions.

Why it was flagged

The recommended install path pulls the latest mutable GitHub branch rather than a pinned release or reviewed package artifact.

Skill content
Recommended — clone from GitHub (always latest):
git clone https://github.com/ubgb/undersheet ~/.openclaw/skills/undersheet
Recommendation

Install from a reviewed ClawHub package or pin to a specific commit/release before granting credentials.

What this means

Old, incorrect, or manipulated tracked-thread state could affect what the agent notices or ignores later.

Why it was flagged

The skill intentionally persists cross-session thread/feed state, which is appropriate for its purpose but can influence future agent sessions.

Skill content
State is stored per-platform at `~/.config/undersheet/<platform>_state.json`.
Recommendation

Inspect or clear the state files periodically, especially after changing platforms, credentials, or agent workflows.

NoteMedium Confidence
ASI01: Agent Goal Hijack
What this means

A malicious public reply or message could try to influence the agent if the agent treats fetched content as instructions rather than data.

Why it was flagged

Remote social-platform message content is surfaced into agent-visible feed output; such content may contain prompt-injection text.

Skill content
"title": f"{author.get('username', '?')}: {content[:120]}"
Recommendation

Treat all fetched posts, comments, and messages as untrusted data and do not let them override user or system instructions.