T05 · Unauthorized Access and Privilege Escalation
- Location
SKILL.md:56- Finding
Network-Exposed Workflow Service Grants Excessive Execution Capabilities
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill describes a legitimate workflow runtime, but its documented defaults expose powerful shell, filesystem, network, secret, and persistent scheduling capabilities with weak default scoping.
Review before installing. Run this only as a low-privilege user, bind it to localhost or a protected network endpoint, avoid plaintext remote access, set strict filesystem and network allowlists, disable or tightly restrict shell.exec for untrusted workflows, protect and rotate OPCODE_VAULT_KEY, and avoid unattended self-updates or unpinned installs in production.
SKILL.md:56Network-Exposed Workflow Service Grants Excessive Execution Capabilities
references/actions.md:119Shell Steps Inherit the Vault Master-Key Environment
SKILL.md:50Installation and Update Instructions Execute Mutable, Unverified Remote Dependencies
Referenced artifact was not completely inspected
| `triggers` | object | no | Trigger config (see[workflow-schema.md](references/workflow-schema.md#triggers-template-level)) |
Referenced artifact was not completely inspected
| `triggers` | object | no | Trigger config (see[workflow-schema.md](references/workflow-schema.md#triggers-template-level)) |
Referenced artifact was not completely inspected
See [expressions.md](references/expressions.md) for CEL, GoJQ, Expr engine details.
Referenced artifact was not completely inspected
See [actions.md](references/actions.md) for full parameter specs of all 26 actions.
Referenced artifact was not completely inspected
See [patterns.md](references/patterns.md#10-scripting-with-shellexec) for language-specific templates (Bash, Python, Node, Go).
Referenced artifact was not completely inspected
See [patterns.md](references/patterns.md#10-scripting-with-shellexec) for language-specific templates (Bash, Python, Node, Go).
Documenting a self-update capability that pulls from GitHub releases with a go install fallback highlights a supply-chain and integrity risk if updates are not authenticated and pinned. In an execution-layer service for agents, an unsafe update path can become remote code execution or persistence across restarts.
| `opcode` | Start SSE daemon (same as `opcode serve`) |
| `opcode serve` | Start SSE daemon explicitly |
| `opcode install` | Write settings.json, SIGHUP running server or start |
| `opcode update` | Self-update (GitHub releases -> `go install` fallback) |
| `opcode version` | Print embedded version (default `dev`) |
## Hot-Reload via SIGHUP
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
**Defaults are permissive** (no path deny-lists, no network restrictions). For production:
- Set `DenyPaths` for sensitive directories (`/etc/shadow`, `~/.ssh`)
- Set `WritablePaths` to constrain write scope
- Run the opcode process under a restricted OS user
- Use a network proxy/firewall for HTTP egress control
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
Registers a reusable workflow template. Version auto-increments (v1, v2, v3...).
| Param | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `name` | string | yes | Template name |
| `definition` | object | yes | Workflow definition (see below) |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| Param | Type | Required | Description |
| --------------- | ------ | -------- | ----------------------------------------------------------------------------------------------- |
| `name` | string | yes | Template name |
| `definition` | object | yes | Workflow definition (see below) |
| `agent_id` | string | yes | Defining agent ID |
| `description` | string | no | Template description |
The skill exposes powerful capabilities including filesystem modification, shell execution, workflow triggering, and HTTP actions, but the documentation does not prominently warn users that these can execute destructive operations or exfiltrate data. In an agent skill context, lack of explicit safety guidance increases the likelihood that an agent or operator will invoke dangerous actions without appropriate confirmation, sandboxing, or scope restrictions.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
## Built-in Actions
| Category | Actions |
| -------------- | ------------------------------------------------------------------------------------------------------- |
| **HTTP** | `http.request`, `http.get`, `http.post` |
| **Filesystem** | `fs.read`, `fs.write`, `fs.append`, `fs.delete`, `fs.list`, `fs.stat`, `fs.copy`, `fs.move` |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| -------------- | ------------------------------------------------------------------------------------------------------- |
| **HTTP** | `http.request`, `http.get`, `http.post` |
| **Filesystem** | `fs.read`, `fs.write`, `fs.append`, `fs.delete`, `fs.list`, `fs.stat`, `fs.copy`, `fs.move` |
| **Shell** | `shell.exec` |
| **Crypto** | `crypto.hash`, `crypto.hmac`, `crypto.uuid` |
| **Assert** | `assert.equals`, `assert.contains`, `assert.matches`, `assert.schema` |
| **Expression** | `expr.eval` |
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
| **Shell** | `shell.exec` |
| **Crypto** | `crypto.hash`, `crypto.hmac`, `crypto.uuid` |
| **Assert** | `assert.equals`, `assert.contains`, `assert.matches`, `assert.schema` |
| **Expression** | `expr.eval` |
| **Workflow** | `workflow.run`, `workflow.emit`, `workflow.context`, `workflow.fail`, `workflow.log`, `workflow.notify` |
**Quick reference** (most-used actions):
The HTTP action documentation describes arbitrary outbound requests, authentication headers, request bodies, redirects, and optional TLS verification bypass, but it does not warn that workflows may exfiltrate prompts, user data, secrets, or local file contents to external services. In an agent workflow product, missing this warning can cause operators to treat network actions as routine helpers rather than high-risk egress primitives, increasing the chance of unintended data disclosure.
The filesystem section documents write, append, delete, copy, and move capabilities without clearly warning that these actions can irreversibly modify or remove data. Although the file notes that isolator path validation exists, users may still underestimate the operational risk of destructive actions within allowed paths, leading to accidental corruption, overwrite, or deletion of important files.
The shell.exec action enables direct command execution, inherited environment access, custom environment variables, working-directory control, stdin input, and optional /bin/sh -c execution, yet the documentation lacks a strong warning about host impact and command injection risk. In the context of an agent execution layer that supports templating and workflow automation, this is especially dangerous because user-controlled or interpolated values may be routed into commands, resulting in arbitrary code execution, data theft, or system tampering.
The examples instruct users to connect with --allow-http or --insecure to a non-TLS SSE endpoint, but do not clearly warn that traffic and authentication data can be intercepted or modified. In an agent-control plane, integrity and confidentiality of workflow commands matter, so normalizing plaintext transport materially increases risk.
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.
Built-in actions respect `ResourceLimits` configured at startup:
| Control | Description |
| -------------- | ---------------------------------------------------------------------------------------------------------- |
| **Filesystem** | `DenyPaths` / `ReadOnlyPaths` / `WritablePaths` restrict file access. Symlink resolution prevents escapes. |
| **Shell** | Linux: cgroups v2 (memory, CPU, PID namespace). macOS: timeout-only fallback. |
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
{
"id": "fetch",
"action": "http.get",
"params": { "url": "https://api.example.com/data" }
},
{
"id": "notify-done",
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
{
"id": "fetch",
"action": "http.get",
"params": { "url": "https://api.example.com/data" }
},
{
"id": "notify-done",
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
{
"id": "fetch",
"action": "http.get",
"params": { "url": "https://api.example.com/data" }
},
{
"id": "notify-done",
The documentation uses a realistic vault passphrase example (my-passphrase) in copy-pasteable commands without an explicit warning to replace it. While likely illustrative, this can normalize weak/shared secrets and lead operators to deploy predictable credentials protecting the secret vault.
This markdown file documents workflow patterns that include http.get, http.post, fs.write, and shell.exec operations, but it does not include any user-facing warning that these examples may transmit data, modify files, or execute commands on the host. Under the markdown-file criteria, descriptions should warn when documented behaviors could affect user data, privacy, or system integrity.
This markdown section documents http.get calls and workflow.notify sending fetched step output to an agent, including ${{steps.fetch.output}}, but it does not include any warning that workflow data may be transmitted over the network or pushed to connected agents. For markdown files, SQP-2 applies when descriptions omit warnings about behaviors that could affect privacy or data handling.
No suspicious patterns detected.