Back to skill

Security audit

dev-coding-agent

Security checks for vulnerabilities and agentic risk

Overview

This skill is a straightforward OpenCode helper for user-directed coding work, with disclosed file-modifying behavior and no hidden persistence or exfiltration in the artifact.

Install only if you intend to let OpenCode make changes in your repositories. Prefer a reviewed or pinned OpenCode version, run it in a git repo or disposable workspace, monitor any background task, and inspect diffs before keeping generated changes.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:75
Finding
Unpinned Global Installation of a Third-Party CLI Package## Vulnerability Details **File Location**: `SKILL.md`, line 75 **Vulnerability Type**: Unpinned third-party dependency installed globally **Risk Level**: Medium **Complete Code Snippet**: ```markdown - OpenCode CLI installed (`npm install -g opencode`) ``` ### Technical Analysis The documented command installs the latest available release of the `opencode` npm package globally without pinning an exact version, validating package integrity, or identifying a reviewed package source. Consequently, the code installed and executed can change after this skill has been reviewed. npm installation may execute package lifecycle scripts with the installing user's privileges. A global installation also makes the resulting executable available outside an isolated project environment. The repository contains no lockfile, integrity value, or bundled implementation that establishes which package version and content users will receive. This is a supply-chain weakness rather than evidence that the current package is malicious. ### Attack Path 1. An attacker compromises the upstream package, a maintainer account, or a future package release. 2. The attacker publishes a malicious version under the package name referenced by the documentation. 3. A user follows the documented `npm install -g opencode` command. 4. npm resolves and downloads the attacker-controlled release because no exact version is pinned. 5. Malicious lifecycle code can execute during installation, or malicious behavior can execute later when the globally installed `opencode` command is invoked. 6. The payload operates with the permissions of the user performing the installation or running the CLI. ### Impact Assessment Successful exploitation could provide code execution with the installing user's privileges. Depending on that user's permissions and environment, the payload could access source repositories, modify project files, read user-accessible credentials or ...[truncated 369 chars]
Remediation
## Remediation Suggestions 1. Pin the dependency to an exact, reviewed version rather than resolving the latest release: ```bash npm install -g opencode@<reviewed-exact-version> ``` 2. Document the authoritative registry, publisher, and expected package identity so users can detect namespace confusion or package substitution. 3. Prefer a project-local or otherwise isolated installation over a global installation, and commit an appropriate lockfile when the surrounding workflow supports one. 4. Verify package provenance, signatures, and integrity metadata before installation. 5. Disable lifecycle scripts during installation when they are not required: ```bash npm install --ignore-scripts opencode@<reviewed-exact-version> ``` 6. If lifecycle scripts are necessary, audit them and their transitive dependencies before recommending installation. 7. Run the CLI with least privilege in a sandbox or disposable development environment, granting access only to the intended repository and required credentials. 8. Establish a controlled update process in which new versions are reviewed and tested before changing the documented pin.
Vulnerability Patterns
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (2)

YARA rule 'agent_skill_mcp_tool_poisoning_metadata': MCP/tool metadata poisoning indicators in tool schemas or skill manifests [agent_skills]

High
Category
YARA Match
Content
---
name: dev-coding-agent
description: 'Enhanced coding agent for development workflows. Optimized for building features, fixing bugs, and code refactoring with OpenCode integration.'
metadata:
  {
    "openclaw": { "emoji": "👨‍💻", "requires": { "anyBins": ["opencode"] } },
    "author": "Roger",
    "version": "1.0.0"
  }
---

# Development Coding Agent

Specialized coding agent skill optimized for software development tasks using OpenCode.

## Quick Start

### Basic Usage
```bash
# Simple task in your project
bash pty:true workdir:~/your-project command:"opencode run 'Add feature or fix bug'"

# Background ta
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The skill encourages running `opencode` to modify project code, including in `background:true` mode, without warning that these commands can change files, introduce unsafe code, or continue unattended. In an agent-skill context, this increases the chance of unintended repository modifications or unreviewed automated changes being applied in a user's workspace.

Static analysis

No suspicious patterns detected.