Back to skill

Security audit

Vibe Prompt Compiler Portable

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed prompt-compilation helper with optional local scripts and repo-rule extraction, with no evidence of hidden exfiltration, destructive behavior, or persistence.

Before installing, be aware that this package adds local executable Python helpers and can optionally read common repository files to infer coding rules. Review generated handoff prompts before pasting them into another coding agent, especially when using repo-aware mode.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (45)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

If the skill also serves as a regression or integration harness while claiming to only transform user requests, it may trigger script execution and file access unexpectedly. That makes the context more dangerous because the skill is designed for automatic use on vague requests, lowering the threshold for unintended activation.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/extract_repo_rules.py (reported line 65)May include surrounding context.

python
else:
            scan_text(candidate.read_text(encoding="utf-8"), rules)

    return rules

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

This markdown file states that a Chinese-first language preset and Chinese templates were added, which indicates a language preference being enforced or prioritized. Under the policy rule, forcing or defaulting to a specific language without explicit user opt-in is a natural-language policy concern, and the changelog text does not mention any opt-in, choice, or regional justification.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding

The skill advertises and encourages execution of local scripts and repository inspection, but it does not declare any explicit tool scope or allowed-tools boundary. That creates an authorization gap where an agent may invoke shell, file-read, or potentially network-capable actions without the skill clearly constraining them, increasing the chance of over-privileged execution.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The instruction to 'use this skill automatically when a user gives a vague coding request' is overly broad and can trigger repository-aware analysis or script-oriented workflows without clear user consent. Automatic activation is especially risky here because the skill includes optional shell and repo-analysis pathways that exceed simple prompt rewriting.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The phrase 'Chinese-first output' indicates a default language or locale preference. The file does not clearly state that this language behavior is optional or only used when the user explicitly requests it, which can violate language/locale choice policy.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
80% 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 · references/auto-mode.md (reported line 7)May include surrounding context.

md
## Core Rule

When this skill is triggered by a rough coding request, do not ask the user to run scripts first.

Instead:

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The general template is a catch-all prompt that can be invoked for vague or everyday requests, which increases the chance the skill is applied outside its intended coding-brief compilation context. In an agent system, overly broad triggers can cause inappropriate auto-selection, letting untrusted user input steer downstream coding or planning behavior without sufficient scoping.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The file defines a chinese-first language preset alongside english-first, and later logic uses that preset to generate fully localized Chinese prompts. This creates a built-in path for forcing a specific language/locale choice without any documented user opt-in, which matches the language-policy violation criteria.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

These lines choose Chinese templates or apply Chinese localization whenever language_preset is chinese-first, but the file contains no safeguard ensuring that this locale was explicitly requested by the end user. Because the policy forbids forcing a specific language without user opt-in, this natural-language behavior is noncompliant.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The file defines a chinese-first language preset alongside english-first, and later uses that preset to generate the handoff entirely in Chinese. This is a natural-language locale constraint that can be imposed by the caller, but the file contains no user-choice safeguard or justification for why a non-default language should be forced.

Content

No source excerpt is available for this finding.

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/create_handoff.py (reported line 41)May include surrounding context.

python
cmd += ["--repo-root", repo_root]
    if auto_repo_rules:
        cmd += ["--auto-repo-rules"]
    result = subprocess.run(cmd, capture_output=True, text=True, check=True)
    return json.loads(result.stdout)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/prompt_lint.py (reported line 50)May include surrounding context.

python
cmd += ["--repo-root", repo_root]
    if auto_repo_rules:
        cmd += ["--auto-repo-rules"]
    result = subprocess.run(cmd, capture_output=True, text=True, check=True)
    return json.loads(result.stdout)

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_extract_repo_rules.py (reported line 17)May include surrounding context.

python
def run_case(repo_root: str) -> dict:
    result = subprocess.run(
        [sys.executable, str(SCRIPT), "--repo-root", repo_root],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_golden_outputs.py (reported line 17)May include surrounding context.

python
def run_script(script_name: str, args: list[str]) -> dict:
    script_path = ROOT / script_name
    result = subprocess.run(
        [sys.executable, str(script_path), *args],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_language_presets.py (reported line 18)May include surrounding context.

python
def run_script(script_name: str, args: list[str]) -> dict:
    script_path = ROOT / script_name
    result = subprocess.run(
        [sys.executable, str(script_path), *args],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_rulesets.py (reported line 17)May include surrounding context.

python
def run_script(script_name: str, args: list[str]) -> dict:
    script_path = ROOT / script_name
    result = subprocess.run(
        [sys.executable, str(script_path), *args],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_prompt_lint.py (reported line 18)May include surrounding context.

python
def run_case(args: list[str]) -> dict:
    result = subprocess.run(
        [sys.executable, str(SCRIPT), *args],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_tool_presets.py (reported line 18)May include surrounding context.

python
def run_case(args: list[str]) -> dict:
    result = subprocess.run(
        [sys.executable, str(SCRIPT), *args],
        capture_output=True,
        text=True,

subprocess module call

Medium
Category
Dangerous Code Execution
Confidence
70% confidence
Finding

subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Content

Scanner excerpt · scripts/test_handoff.py (reported line 42)May include surrounding context.

python
def compile_request(request: str) -> dict:
    result = subprocess.run(
        [sys.executable, str(SCRIPT), "--request", request, "--output", "json"],
        capture_output=True,
        text=True,