T09 · Insecure Skill Coding Practices
- Location
scripts/register.js:22- Finding
Undisclosed Transmission of Local Agent Metadata to a Configurable Third-Party Endpoint
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill mostly does agent registration, but it can read local identity metadata and send it to an under-disclosed backend that differs from the documented Clawl domain.
Review the generated metadata before running this skill, prefer --json if you only want a local manifest, and do not run the registration path unless you are comfortable with agent name, description, capabilities, and website metadata being sent to the configured backend rather than only the documented Clawl domain.
scripts/register.js:22Undisclosed Transmission of Local Agent Metadata to a Configurable Third-Party Endpoint
The documented purpose says the skill generates clawl.json and pings clawl.co.uk, but the described behavior and static findings indicate broader local data discovery, direct registration via a separate API path, and contact with a configurable backend defaulting to a different domain. That mismatch is dangerous because it undermines informed consent and could cause unintended disclosure of local metadata to an unexpected external service.
The script claims gateway URLs were removed for security, but later still references opts.gateway in the ping path. Even if parseArgs no longer sets it from CLI, a caller embedding this script or mutating argv/environment could still cause an arbitrary URL to be submitted for indexing, undermining the stated security control and creating SSRF-like or unintended remote-registration behavior.
The skill instructs execution of a local Node.js script and explicitly states it reads local config and identity files, but it does not declare any tool scope or permissions to bound that access. This creates an undeclared capability gap: an agent or user may invoke it without clear visibility that local environment and filesystem data will be accessed and a network request may follow.
The invocation guidance says to use the skill not only for registration but also when asked generally about Clawl, agent discovery, or clawl.json. Overbroad triggering increases the chance the skill will run in contexts where the user only wanted information, causing unnecessary local file inspection or outbound registration-related actions.
The skill omits a clear upfront privacy warning even though it states the script searches OpenClaw config, SOUL.md, IDENTITY.md, and installed skills to assemble metadata. Without prominent disclosure, users may unknowingly allow collection and external transmission of identity and capability information derived from local files.
The inline help advertises a --gateway <url> option and says --register-only uses API registration, but parseArgs() no longer accepts --gateway at all. This is an active contradiction between the file's documented interface and the implemented behavior, not just an omission, because users are explicitly told to use an option that the code ignores.
The script writes clawl.json to disk and sends discovered agent metadata to external APIs with no explicit consent prompt or clear disclosure at execution time. Because auto-detected fields may originate from local identity/config files, users can unintentionally disclose internal project names, descriptions, capabilities, or contact details to a third party.
The auto-detection routine scans local OpenClaw config, SOUL.md, IDENTITY.md, and the skills directory without an upfront notice or consent boundary. In the context of an agent skill, silent local file inspection is sensitive because these files can contain identity, capability, or environment information that users may not expect to be harvested for registration.
No suspicious patterns detected.