Dangerous exec
- Finding
- Shell command execution detected (child_process).
Security checks across static analysis, malware telemetry, and agentic risk
The skill is a real Qwen CLI wrapper, but it encourages background auto-approved coding runs and includes persistent agent/skill management features that deserve review before installation.
Install only if you intentionally want an OpenClaw skill that can run Qwen Code against your projects. Keep it limited to a version-controlled workspace, avoid YOLO/auto-approve unless you explicitly want unattended changes, verify your Qwen credentials, and watch for any created skills, sessions, MCP servers, or extensions under your Qwen configuration.
65/65 vendors flagged this skill as clean.
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.
A Qwen process could make broad project changes in the background, and multiple such processes could run at once if the agent follows these instructions.
The skill encourages background Qwen execution with auto-approval and parallel runs, which can modify code or project files without step-by-step confirmation.
command:"qwen -p 'Refactor this function' -y" ... "YOLO mode for building" — `--yolo` auto-approves changes ... "Parallel is OK" — run many Qwen processes at once
Use YOLO mode only after explicit user approval and only in a disposable or version-controlled workspace; prefer review/dry-run modes for sensitive repositories.
Users may believe all file changes will be confirmed even when the skill's recommended workflow can auto-approve them.
The security note says modifications require confirmation, but the same artifact documents and recommends an auto-approve mode that bypasses that confirmation.
"All code generation and modifications require user confirmation" ... "YOLO mode (auto-approve)" ... `qwen -p 'Refactor this function' -y`
Update the documentation to state clearly that YOLO/`-y` bypasses confirmations and should never be used unless the user explicitly asks for it.
If untrusted text reaches these command arguments, it could cause unintended shell behavior beyond running the intended qwen subcommand.
The script constructs a shell command by joining arguments and passing them to execSync, which can interpret shell metacharacters if arguments are not tightly controlled.
execSync(`qwen ${mcpArgs.join(' ')}`, { stdio: 'inherit' });Use spawn or execFile with an argument array for all qwen invocations, and validate or escape any user-provided command arguments.
Installing or invoking this wrapper could lead to persistent agent/skill artifacts that remain available after the original task is finished.
The script can create persistent Qwen skill files in the user's home directory, which extends beyond one-off code review or task execution.
const SKILLS_DIR = path.join(process.env.HOME, '.qwen/skills'); ... fs.writeFileSync(path.join(skillDir, 'index.js'), `// ${skillName} Skill\nmodule.exports = { name: '${skillName}', execute: async (ctx) => {} };\n`);Require explicit user confirmation before creating skills, restrict skill names to safe path components, and document how to list and remove created files.
The skill uses the user's Qwen/DashScope account context, which may affect API usage, billing, and access to configured models.
The wrapper reads Qwen configuration and authentication state from the user's home directory to check whether OAuth or an API key is configured.
const SETTINGS_FILE = path.join(QWEN_DIR, 'settings.json'); ... settings.env?.BAILIAN_CODING_PLAN_API_KEY
Confirm which Qwen account and API key are configured before running the skill, and avoid using highly privileged credentials in shared workspaces.
Old project context or prompts may be reused in future runs, which can be helpful but may also carry stale or sensitive information.
The skill documents resuming previous Qwen sessions and identifies persistent local chat storage, so prior context may influence later tasks.
`--continue` - 恢复当前项目的最近会话 ... `--resume <id>` - 恢复指定会话 ID ... 会话数据: `~/.qwen/projects/<cwd>/chats`
Review or clear Qwen session history for sensitive projects, and avoid `--continue` or `--resume` unless you intend to reuse prior context.
Users rely on the current upstream Qwen package version and npm distribution integrity when following the setup instructions.
The external Qwen CLI install is expected for this wrapper, but using a global '@latest' package means the installed code can change over time.
npm install -g @qwen-code/qwen-code@latest
Install from a trusted source, consider pinning a known-good version, and review upstream Qwen CLI release notes before upgrading.