This skill is vulnerable to prompt injection and executes opaque external
Claims to do
Todo4 Onboarding Skill: This is a fixed 4-step procedure. Follow it exactly, in order, one step at a time. Do not improvise, summarize, or skip steps.
Actually does
The skill prompts the user for an email, then executes `scripts/register.sh` to send an OTP. It then prompts for the OTP, runs `scripts/verify.sh` to obtain an `ACCESS_TOKEN` using `jq`, and finally executes `scripts/connect.sh` with the token and agent name. This last step extracts a one-time `WEB_LOGIN_URL` from the script's output and presents it to the user.
openclaw skills install panitw/todo4-onboardDeBERTa classifier detected prompt injection (confidence: 0.98)
The skill executes shell scripts (`register.sh`, `verify.sh`) using user-provided email and verification code. If these inputs are not properly sanitized within the scripts, a malicious user could inject arbitrary shell commands.
scripts/register.sh <email> ACCESS_TOKEN=$(scripts/verify.sh <email> <code> | jq -r '.accessToken')
The skill handles highly sensitive credentials (access tokens, refresh tokens, agent tokens, OTP codes, MCP config). While it instructs the agent not to display them, the presence and handling of these secrets pose a risk if instructions are bypassed or the execution environment is compromised.
Never echo $ACCESS_TOKEN or the script's JSON output. NEVER display the access token, refresh token, agent token, or MCP config contents.
The skill declares `curl` as a required binary, granting the agent broad network access capabilities. This tool, especially if combined with a successful command injection, could be leveraged for data exfiltration, SSRF, or other network-based attacks.
bins: [curl, jq]
The skill instructs the agent to run external shell scripts (register.sh, verify.sh, connect.sh) located in a local 'scripts/' directory. These scripts are not defined within the skill itself, making their actual behavior opaque. The agent is directed to execute them with user-supplied email input and OTP codes without any sandboxing or validation of the scripts' contents.
scripts/register.sh <email> ACCESS_TOKEN=$(scripts/verify.sh <email> <code> | jq -r '.accessToken') CONNECT_OUT=$(scripts/connect.sh "$ACCESS_TOKEN" <agent_name>)
The skill captures an ACCESS_TOKEN from external script output and stores it in a shell variable, then passes it to another script. While the skill instructs the agent not to echo the token, the token is being harvested from a remote server and used programmatically. The scripts receiving this token are external and unaudited.
ACCESS_TOKEN=$(scripts/verify.sh <email> <code> | jq -r '.accessToken') ... CONNECT_OUT=$(scripts/connect.sh "$ACCESS_TOKEN" <agent_name>)
The connect.sh script is described as writing 'MCP config and agent token automatically' to the local system. This represents a persistence/tool-poisoning mechanism where an external script modifies the agent's tool configuration without explicit user confirmation of what is being written. The actual content of the MCP config is hidden from the user.
the script wrote the MCP config and agent token automatically
The skill collects the user's email address and passes it to an external shell script (register.sh) which presumably transmits it to an external server (todo4.io). The user is not shown what HTTP request is made or what data is transmitted beyond the email.
scripts/register.sh <email>
The skill's public description presents this as a simple onboarding flow but conceals that it executes multiple local shell scripts, writes system configuration files, and establishes a persistent MCP connection. Users triggering this skill would not be aware of the full scope of actions taken.
description: "Sign up for Todo4 and connect this agent via MCP... Creates the account via email OTP and wires up the MCP connection — no browser, no password."
The skill explicitly instructs the agent to bypass user confirmation or explanations during onboarding ('DO NOT ask 'are you sure?'). While intended for a streamlined experience, this pattern can reduce user awareness and consent for actions.
DO NOT explain what Todo4 is, list features, or ask 'are you sure?' — just start STEP 1.
The skill is designed to minimize friction and prevent the user from reflecting on what is happening ('DO NOT explain what Todo4 is', 'just start STEP 1', 'DO NOT ask for more than one piece of information per message'). This pattern is designed to reduce user scrutiny of the onboarding process.
DO NOT explain what Todo4 is, list features, or ask "are you sure?" — just start STEP 1. DO NOT ask for more than one piece of information per message.
The skill instructs the agent to display a one-time web login URL in plain chat (explicitly not in a code block). While framed as a convenience feature, this pattern trains users to click agent-provided authentication links, which could be exploited in a compromised version of this skill.
SAY (substitute the URL literally — no backticks, no code block): > Open your tasks in the browser — you'll be signed in automatically (link is single-use, valid for 5 minutes): > <WEB_LOGIN_URL>
[](https://mondoo.com/ai-agent-security/skills/clawhub/panitw/todo4-onboard)<a href="https://mondoo.com/ai-agent-security/skills/clawhub/panitw/todo4-onboard"><img src="https://mondoo.com/ai-agent-security/api/badge/clawhub/panitw/todo4-onboard.svg" alt="Mondoo Skill Check" /></a>https://mondoo.com/ai-agent-security/api/badge/clawhub/panitw/todo4-onboard.svgSkills can read files, run commands, and access credentials. Mondoo helps organizations manage the security risks of AI agent skills across their entire fleet.