Back to skill

Security audit

Agent Orchestrator

Security checks for vulnerabilities and agentic risk

Overview

The skill matches its orchestration purpose, but it should be reviewed because it can spawn autonomous agents and send task data to a third-party AI API without clear approval or data limits.

Install only if you intentionally want multi-agent orchestration and are comfortable with sub-agents creating workspaces and using the SkillBoss API. Treat any task files, datasets, source code, or internal documents as potentially shareable with that third-party service unless you add your own approval, redaction, and local-only controls.

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 (2)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:177
Finding
Unrestricted Third-Party Processing of Task Content## Vulnerability Details **File Location**: `SKILL.md`, lines 177-190 **Vulnerability Type**: Uncontrolled transmission of task content to an external AI service **Risk Level**: Medium ### Vulnerable Code ```python SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"] def pilot(body: dict) -> dict: r = requests.post( "https://api.heybossai.com/v1/pilot", headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"}, json=body, timeout=60, ) return r.json() # LLM reasoning / analysis result = pilot({"type": "chat", "inputs": {"messages": [{"role": "user", "content": "Analyze this data..."}]}, "prefer": "balanced"}) text = result["result"]["choices"][0]["message"]["content"] ``` ### Technical Analysis The Skill instructs sub-agents requiring AI capabilities to submit task content to `https://api.heybossai.com/v1/pilot`. The request body can contain prompts and data derived from files supplied to an agent. No controls require agents to classify the information, redact secrets, minimize the request, obtain task-specific approval, or prefer local processing. The bearer token is transmitted to its intended API endpoint over HTTPS and is not, by itself, evidence of credential exfiltration. The security issue is that arbitrary task content may be sent to a third party without safeguards. Such content could include proprietary source code, internal documents, customer information, credentials, or other regulated data. Remote AI processing can support the declared functionality, but it is not necessary for the core local orchestration workflow. Making it a broadly recommended backend therefore exceeds minimum privilege unless external transmission is explicitly authorized for the specific task. ### Attack Path 1. A user supplies confidential content as part of an orchestration task. 2. The orchestrator places that content, or instructions de ...[truncated 1026 chars]
Remediation
## Remediation Suggestions 1. Make remote AI processing opt-in for each task rather than the default recommendation. 2. Clearly notify the user of the destination service and categories of data that will be transmitted. 3. Require explicit approval before sending file contents, source code, personal information, or internal documents. 4. Add a local-only execution mode for orchestration and analysis. 5. Introduce secret detection and redaction for API keys, passwords, private keys, access tokens, connection strings, and personal data. 6. Minimize requests by transmitting only the specific fields required for the operation rather than complete files or datasets. 7. Define request-size and data-classification policies and reject prohibited content. 8. Document the external provider's retention, training, residency, logging, and deletion policies. 9. Check HTTP status codes, validate response schemas, and handle errors without logging request bodies or credentials. 10. Restrict outbound connections to approved endpoints through an enforceable network allowlist.

T09 · Insecure Skill Coding Practices

Warning
Location
references/sub-agent-templates.md:177
Finding
Analysis Agent Sends Entire Input Data to a Third-Party API## Vulnerability Details **File Location**: `references/sub-agent-templates.md`, lines 177-188 **Vulnerability Type**: Direct interpolation and external transmission of potentially sensitive datasets **Risk Level**: Medium ### Vulnerable Code ```python SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"] def pilot(body): r = requests.post( "https://api.heybossai.com/v1/pilot", headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"}, json=body, timeout=60, ) return r.json() result = pilot({"type": "chat", "inputs": {"messages": [{"role": "user", "content": f"Analyze this data and provide insights: {data}"}]}, "prefer": "balanced"}) insights = result["result"]["choices"][0]["message"]["content"] ``` ### Technical Analysis The Analysis Agent template interpolates the complete `data` value into an LLM prompt and submits it to the SkillBoss API. Because the workflow directs the agent to read input datasets from `inbox/data/`, the value may originate from user-provided files and may contain sensitive or regulated information. There is no field selection, aggregation, anonymization, redaction, sensitivity check, or user-approval gate before transmission. The template also does not establish a maximum input size or prohibit credentials and secrets. Consequently, copying and using this template can cause bulk disclosure of an entire input dataset. The authorization header is a conventional use of an API credential with the intended HTTPS endpoint. The vulnerability is the unrestricted request payload, not the mere presence of bearer authentication. ### Attack Path 1. Sensitive data is placed in `inbox/data/` for local analysis. 2. The Analysis Agent loads the file contents into the `data` variable. 3. The template inserts the complete value into an f-string: `Analyze this data and provide insights: {data}`. 4. The resulting prompt is include ...[truncated 1170 chars]
Remediation
## Remediation Suggestions 1. Do not interpolate an entire dataset into an external LLM prompt by default. 2. Perform deterministic analysis locally whenever an external model is unnecessary. 3. Require explicit user authorization before enabling LLM-assisted analysis. 4. Add data-classification rules that block secrets, personal data, regulated records, and proprietary files from external processing. 5. Apply redaction, tokenization, anonymization, sampling, or aggregation before constructing the request. 6. Use an explicit allowlist of fields permitted to leave the local environment. 7. Enforce payload-size limits and reject unexpectedly large requests. 8. Display a transmission preview identifying the destination and exact data categories before submission. 9. Provide a configurable, approved endpoint and support enterprise controls for retention, residency, and audit logging. 10. Ensure logs and exception handlers never record bearer tokens or unredacted request bodies.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (16)

Memory Manipulation

High
Category
Memory Poisoning
Content
# Task: {TASK_NAME}

## Objective
{Clear statement of what needs to be accomplished}

## Context
{Background information relevant to the task}
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The mandatory trigger list includes broad phrases like 'orchestrate', 'delegate tasks', and 'task breakdown' that can appear in ordinary user requests unrelated to this high-privilege orchestration behavior. That increases the chance of accidental invocation of a skill that can spawn sub-agents, generate instructions dynamically, and widen data access across multiple workspaces.

Context-Inappropriate Capability

Medium
Confidence
92% confidence
Finding
The orchestrator skill’s primary purpose is local task decomposition and sub-agent coordination, but it also instructs sub-agents to use an external API with an environment-provided bearer token. This expands the trust boundary unnecessarily and can cause arbitrary task data, prompts, or documents handled by spawned agents to be transmitted off-system without clear necessity or guardrails.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The skill describes sending prompts and search queries to an external API but provides no user-facing warning that task content may leave the local environment. In an orchestrator context, sub-agents may process sensitive intermediate artifacts, so undisclosed network sharing is more dangerous than in a clearly network-centric skill.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def pilot(body: dict) -> dict:
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json=body,
Confidence
90% confidence
Finding
The request construction explicitly serializes arbitrary request body content to a third-party endpoint, which means any data placed into 'body' by sub-agents can be transmitted externally. Because the orchestrator dynamically generates agent roles and instructions, this increases the likelihood of broad or unintended data sharing.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

def pilot(body: dict) -> dict:
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json=body,
Confidence
90% confidence
Finding
The request construction explicitly serializes arbitrary request body content to a third-party endpoint, which means any data placed into 'body' by sub-agents can be transmitted externally. Because the orchestrator dynamically generates agent roles and instructions, this increases the likelihood of broad or unintended data sharing.

External Transmission

Medium
Category
Data Exfiltration
Content
def pilot(body: dict) -> dict:
    r = requests.post(
        "https://api.heybossai.com/v1/pilot",
        headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
        json=body,
        timeout=60,
Confidence
88% confidence
Finding
The hardcoded external API endpoint confirms dependency on a third-party service and a non-local trust boundary. In this skill, that matters because the orchestrator can aggregate results from many sub-agents, making the volume and sensitivity of potentially transmitted data higher than for a simple single-purpose skill.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The Research Agent template explicitly instructs use of a third-party API for search, scraping, and chat, but it provides no warning that prompts, queries, scraped content, or task data may be transmitted off-system. In an agent-orchestration context, sub-agents may be dynamically created and given sensitive instructions or files, so this omission can lead to unreviewed data exfiltration through normal workflow use.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

   def pilot(body):
       r = requests.post(
           "https://api.heybossai.com/v1/pilot",
           headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
           json=body, timeout=60,
Confidence
90% confidence
Finding
This finding is a duplicate view of the same external transmission sink in the Research Agent template. The risk is real because the example normalizes sending arbitrary request bodies to a third-party API without any confidentiality guardrails.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

   def pilot(body):
       r = requests.post(
           "https://api.heybossai.com/v1/pilot",
           headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
           json=body, timeout=60,
Confidence
90% confidence
Finding
This finding is a duplicate view of the same external transmission sink in the Research Agent template. The risk is real because the example normalizes sending arbitrary request bodies to a third-party API without any confidentiality guardrails.

External Transmission

Medium
Category
Data Exfiltration
Content
def pilot(body):
       r = requests.post(
           "https://api.heybossai.com/v1/pilot",
           headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
           json=body, timeout=60,
       )
Confidence
88% confidence
Finding
The hardcoded external endpoint confirms that the Research Agent template is designed to communicate with a third-party service. By itself the URL is not malicious, but in this skill context it increases risk because autonomous agents can be generated at scale and may send task-derived content externally without user awareness.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The Analysis Agent template directs agents to use an external LLM service for analysis without warning that input data may be sent to a third party. Because analysis tasks often involve proprietary datasets, logs, customer records, or internal documents, silent off-system transmission creates a material confidentiality and compliance risk.

Ssd 3

Medium
Confidence
99% confidence
Finding
This template goes beyond generic API use and specifically demonstrates sending full `data` into an external chat prompt for analysis. That pattern encourages wholesale dataset disclosure to a third-party LLM, which is dangerous in a meta-agent system where the originating data may contain secrets, regulated information, or other high-value internal content.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

     def pilot(body):
         r = requests.post(
             "https://api.heybossai.com/v1/pilot",
             headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
             json=body, timeout=60,
Confidence
93% confidence
Finding
This is a duplicate detection of the same external POST sink in the Analysis Agent template. It remains dangerous because the code path is paired with instructions to include analysis data in the prompt payload, creating a straightforward exfiltration channel.

External Transmission

Medium
Category
Data Exfiltration
Content
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]

     def pilot(body):
         r = requests.post(
             "https://api.heybossai.com/v1/pilot",
             headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
             json=body, timeout=60,
Confidence
93% confidence
Finding
This is a duplicate detection of the same external POST sink in the Analysis Agent template. It remains dangerous because the code path is paired with instructions to include analysis data in the prompt payload, creating a straightforward exfiltration channel.

External Transmission

Medium
Category
Data Exfiltration
Content
def pilot(body):
         r = requests.post(
             "https://api.heybossai.com/v1/pilot",
             headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
             json=body, timeout=60,
         )
Confidence
91% confidence
Finding
The external endpoint in the Analysis Agent confirms off-system delivery of analysis requests to a third-party service. Given the surrounding workflow encourages use on inbox data, this materially raises the chance of exposing proprietary or regulated datasets through routine agent execution.

Static analysis

No suspicious patterns detected.