Back to skill

Security audit

agent-orchestration

Security checks for vulnerabilities and agentic risk

Overview

This skill is mostly prompt and agent-management guidance, but it requires a third-party API key and shows sending full prompt messages to an external service without clear safeguards.

Review before installing if you work with private code, business documents, regulated data, or secrets. Treat the SkillBoss API section as optional remote routing, do not send sensitive prompts or workspace content to that endpoint without approval, and add your own confirmation/redaction rules before using the example code. The local tracking-note behavior is expected but may leave persistent records in your workspace.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:171
Finding

Unrestricted Third-Party Transmission of Complete LLM Messages

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 171–191
Vulnerability Type: Sensitive data exposure through an external API
Risk Level: Medium

Vulnerable Code

python
import requests, os

SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def call_llm(messages, prefer="balanced"):
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json={"type": "chat", "inputs": {"messages": messages}, "prefer": prefer},
        timeout=60,
    )
    return r.json()["result"]["choices"][0]["message"]["content"]

Technical Analysis

The example serializes and sends the complete caller-supplied messages collection to https://api.heybossai.com/v1/pilot. Agent messages may contain proprietary source code, private documents, personal information, credentials, or other sensitive workspace context.

The implementation provides no data classification, secret detection, field-level filtering, redaction, destination confirmation, or explicit user-consent step before transmission. It also does not document which data should never be submitted. Although HTTPS protects the request in transit, it does not prevent disclosure to or subsequent processing by the external service.

The API credential is read from its declared environment variable and sent only to the documented HTTPS endpoint. The reviewed material contains no evidence that the credential itself is stolen or sent to an unrelated destination.

This remote model-routing feature is not necessary for the Skill's core prompt-construction, agent-tracking, or local orchestration functionality. Declaring SKILLBOSS_API_KEY as a required environment variable therefore exceeds the minimum privileges and external-service access necessary for most of the declared functionality.

Attack Path

  1. A user supplies confidential material to an agent, such as source code, in ...[truncated 1455 chars]
Remediation
View remediation

Remediation Suggestions

  1. Make third-party model routing explicitly optional rather than foundational to the Skill.
  2. Remove SKILLBOSS_API_KEY from mandatory environment requirements unless the user enables remote routing.
  3. Obtain informed user consent immediately before sending content externally, clearly identifying:
    • The destination hostname
    • The exact classes of data being transmitted
    • Applicable retention and privacy implications
  4. Apply data minimization by sending only the fields required for the current task rather than the complete conversation history.
  5. Add preprocessing that detects and redacts common sensitive values, including API keys, access tokens, private keys, passwords, and connection strings.
  6. Reject transmission when known credential patterns or prohibited data classifications are detected, unless the user provides an explicit override.
  7. Provide an allowlist mechanism for approved external destinations and prevent runtime destination substitution.
  8. Offer a local or directly configured provider path for sensitive workloads.
  9. Document that users must not submit secrets, regulated data, or confidential workspace content without authorization.
  10. Add robust response validation and safe error handling without logging request bodies or authorization headers.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · README.md (reported line 3)May include surrounding context.

md
# agent-orchestration - OpenClaw Skill

Master the art of spawning and managing sub-agents. Write prompts that actually work, track running agents, and learn fr

## Installation

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The manifest description emphasizes spawning and managing sub-agents, tracking running agents, and learning from outcomes. However, the document is overwhelmingly a prompt-writing tutorial, and the only executable code shown is a generic call_llm helper for a remote chat API, with no corresponding implementation of sub-agent lifecycle management.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The documentation explicitly directs use of a third-party API endpoint for task routing, which increases the likelihood that users will transmit data externally as part of normal use. In the context of an orchestration skill, that can affect many downstream prompts and amplify accidental data disclosure.

Content

Scanner excerpt · SKILL.md (reported line 171)May include surrounding context.

md
**Prompt portability is a myth.**

Different tasks need different capabilities. With SkillBoss API Hub, you call a single endpoint (`https://api.heybossai.com/v1/pilot`) and use the `prefer` parameter to auto-route to the best available model for your task.

| Task Profile | prefer setting | Best For |
|-------------|---------------|----------|

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This finding is substantively the same external transmission issue: the function posts model inputs to api.heybossai.com with bearer authentication. The risk is not the presence of the API key alone, but that skill consumers may unknowingly exfiltrate sensitive workspace content through this integration.

Content

Scanner excerpt · SKILL.md (reported line 185)May include surrounding context.

md
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def call_llm(messages, prefer="balanced"):
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json={"type": "chat", "inputs": {"messages": messages}, "prefer": prefer},

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

This finding is substantively the same external transmission issue: the function posts model inputs to api.heybossai.com with bearer authentication. The risk is not the presence of the API key alone, but that skill consumers may unknowingly exfiltrate sensitive workspace content through this integration.

Content

Scanner excerpt · SKILL.md (reported line 185)May include surrounding context.

md
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def call_llm(messages, prefer="balanced"):
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json={"type": "chat", "inputs": {"messages": messages}, "prefer": prefer},

External Transmission

Medium
Category
Data Exfiltration
Confidence
92% confidence
Finding

The code example makes a direct outbound POST to https://api.heybossai.com/v1/pilot, operationalizing external data transfer rather than merely mentioning it. Because the skill is framed as reusable guidance, users may copy this pattern broadly, extending the risk of silent exfiltration to multiple workflows.

Content

Scanner excerpt · SKILL.md (reported line 186)May include surrounding context.

md
def call_llm(messages, prefer="balanced"):
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json={"type": "chat", "inputs": {"messages": messages}, "prefer": prefer},
        timeout=60,

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This template explicitly instructs a spawned agent to create or modify files and later to run code/scripts to verify success, but it provides no safety gates such as requiring explicit user confirmation, constraining writable paths, or warning about side effects. In an agent-orchestration context, that increases the chance of unintended filesystem changes or execution of unsafe code generated from ambiguous or adversarial input.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
75% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

Scanner excerpt · templates/builder-agent.md (reported line 223)May include surrounding context.

md
| No technical constraints | Agent might use incompatible tools |
| Missing output path | Files end up in wrong place |
| No Ralph mode for complex tasks | Agent gives up too early |
| No verification step | Agent declares done without testing |

---

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
75% confidence
Finding

The manifest describes spawning/managing agents, writing prompts, tracking running agents, and learning from outcomes at a high level. The body adds specific expectations to maintain local project files such as notes/areas/active-agents.md and LEARNINGS.md, which are concrete filesystem modification behaviors not disclosed in the manifest text.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill instructs the agent to maintain local files such as notes/areas/active-agents.md and LEARNINGS.md without warning the user that workspace files may be created or modified. In agent environments, silent file modification can surprise users, overwrite existing notes, or introduce persistent state that affects later runs.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.