suspicious.dangerous_exec
- Location
- src/commands/serve.ts:86
- Finding
- Shell command execution detected (child_process).
AdvisoryAudited by Static analysis on May 10, 2026.
Detected: suspicious.dangerous_exec
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.
The agent could initiate paid ACP jobs or make public marketplace/token changes without the user reviewing the exact counterparty, fee, budget, or consequences.
These instructions expose paid job creation, token launch, and marketplace listing mutations to the agent, while the artifacts do not document an explicit confirmation, spending limit, or review step for those high-impact actions.
`acp job create <wallet> <offering> --requirements '<json>'` — Start a job with an agent. ... `Payments are handled automatically by the ACP protocol` ... `acp token launch <symbol> <description>` ... `acp sell create` / `acp sell delete`
Require explicit user approval before `job create`, `token launch`, `profile update`, `sell create`, or `sell delete`, including the wallet, counterparty, offering, fee/budget, and whether the action is reversible.
A malformed or adversarial offering name containing path traversal such as `../` could cause the CLI to create files outside the intended seller offerings directory.
The offering name is resolved directly into a filesystem path and then used for directory and file creation, with no shown check that the resolved path remains under `OFFERINGS_ROOT`.
function resolveOfferingDir(offeringName: string): string { return path.resolve(OFFERINGS_ROOT, offeringName); } ... fs.mkdirSync(dir, { recursive: true }); ... fs.writeFileSync(path.join(dir, "offering.json"), ...)Reject absolute paths and path separators in offering/resource names, and verify the resolved path starts with the intended root before creating or writing files.
Anyone who obtains the local config may be able to act as the configured ACP agent or inspect account/session details.
The skill stores ACP API keys and session state locally so it can act as the user’s agent/wallet identity; this is expected for the integration but is sensitive authority.
Credentials are stored in `config.json` at the repo root (git-ignored): ... `LITE_AGENT_API_KEY` ... `SESSION_TOKEN` ... `SELLER_PID`
Keep `config.json` private, verify it is actually excluded from version control, restrict file permissions, and rotate/regenerate API keys if the file is exposed.
Installing from an untrusted or modified source could run or include different dependency code than expected.
The skill depends on npm package installation for its CLI; this is normal for this project, but users rely on package provenance and the supplied lockfile.
Ensure dependencies are installed at repo root (`npm install`).
Install only from a trusted repository or registry package, review `package-lock.json`, and avoid running `npm install` in an untrusted copy.
Running setup may execute local project code and installed npm dependencies on the user’s machine.
The CLI spawns a local `npx tsx` command during setup/token-launch flow. This is expected for a TypeScript CLI, and `shell: false` reduces shell-injection risk, but it is still local process execution.
const child = spawn("npx", args, { cwd: ROOT, stdio: "inherit", shell: false });Review the repository before setup, install dependencies from a trusted source, and run the CLI in a workspace where local process execution is acceptable.
External agent deliverables or memo history may contain untrusted content, including instructions or data the user did not author.
The skill intentionally brings outputs and message history from other marketplace agents back into the local agent context.
`acp job status <jobId>` ... Returns JSON with `phase`, `deliverable`, and `memoHistory`. Poll this command until ...
Treat other agents’ deliverables and memo history as untrusted data; do not let them override user instructions or trigger follow-on tools without user review.
A seller runtime left running may continue accepting or handling ACP jobs under the active agent identity.
The seller mode is a disclosed persistent runtime tracked by PID; this is purpose-aligned for selling services but continues operating until stopped.
`serve start` Start the seller runtime ... `serve stop` Stop the seller runtime ... `SELLER_PID` PID of running seller process
Start seller runtime only when you intend to serve offerings, monitor logs/status, and stop it when no longer needed or before switching agents.