Back to skill
Skillv1.0.6
ClawScan security
Async Queue · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
SuspiciousMar 10, 2026, 8:58 PM
- Verdict
- suspicious
- Confidence
- medium
- Model
- gpt-5-mini
- Summary
- The skill's code and docs largely match the described purpose (a local file-backed delayed-task queue), but there are a few mismatches and assumptions (HTTP auth/port assumptions, a hard-coded default agent name, and a persistent launchd daemon) that need clarification before trusting it.
- Guidance
- This package appears to implement a local delayed-task queue as described, but review a few items before installing: - Authentication & port assumptions: daemon.js POSTs to 127.0.0.1:18789 with no auth headers while the plugin route declares auth: "plugin". Confirm how your OpenClaw gateway exposes plugin HTTP routes and whether unauthenticated localhost POSTs are accepted. If your gateway requires tokens, the daemon will fail unless adapted. - Port binding is assumed (18789). Verify your OpenClaw instance listens on that port or update daemon.js accordingly. - Persistent daemon: running the provided install.sh will copy files into ~/.openclaw and register+load a launchd job that auto-starts on login and restarts on crash. Only run the install script if you accept a persistent process running under your user account. - Files & permissions: the queue file (queue.json), history, and logs live in your home directory. Inspect their contents and set restrictive file permissions if needed to prevent other local users from inserting tasks. - Default agent name: push.js falls back to a hard-coded default agent 'marcus' if no config is present. If you don't specify --to and don't set config.json, queued tasks may target that account; consider editing config.json or the code to set the desired default. - Review the plugin code: it enqueues system events and calls requestHeartbeatNow to wake agents — this is needed for the feature but is a capability you should be comfortable granting. Ensure only trusted local processes can write to the queue.json or call the plugin endpoint. If you want to proceed safely: (1) audit the files in the package, (2) run the install.sh inside a controlled user account (not root), (3) verify the plugin endpoint and its auth model on your OpenClaw gateway, and (4) consider changing the default agent and tightening filesystem permissions on ~/.openclaw/queue.
Review Dimensions
- Purpose & Capability
- okName/description align with what the package installs: a file-backed queue, a daemon to poll queue.json, a push CLI, a queue-cli, and an OpenClaw plugin that wakes agents. The files present (daemon.js, push.js, plugin code) are consistent with the stated functionality.
- Instruction Scope
- concernThe runtime instructions and code assume the daemon can POST to an OpenClaw plugin HTTP endpoint at 127.0.0.1:18789 with no authentication headers; the plugin declares route auth: "plugin". It's unclear whether the OpenClaw HTTP layer will accept unauthenticated local posts or if additional auth tokens are required. The daemon also hard-codes port 18789 and expects the plugin to be reachable there — this is an external assumption not enforced in the plugin code. Also push.js falls back to a hard-coded default agent name ('marcus') if no config is present; that default may cause tasks to be directed to an unexpected agent if a user doesn't supply --to or a config.
- Install Mechanism
- okNo remote downloads or installers — install.sh copies packaged files into the user's home (~/.openclaw), writes a launchd plist, and runs launchctl load. All code is included in the skill bundle, which is the lowest-risk install type short of being instruction-only. The script does start the daemon immediately via launchctl when run.
- Credentials
- okThe skill requests no environment variables, credentials, or external services. Files are written under the user's home (~/.openclaw/queue and ~/.openclaw/extensions/queue-wake). No unrelated secrets or system credentials are requested.
- Persistence & Privilege
- noteThe install script installs a launchd job and loads it so the daemon runs persistently (RunAtLoad + KeepAlive). This is expected for a background queue, but installing a persistent daemon is a privileged change to the user's environment and should be done consciously. The skill is not force-included (always: false) and does not request elevated system-wide privileges beyond the user's own home directory and launchd entry.
