Back to skill

Security audit

prompt-version-control

Security checks for vulnerabilities and agentic risk

Overview

The skill appears purpose-built for prompt version tracking, but it needs review because its security and rollback claims do not match the actual file-writing CLI it ships.

Review this before installing if you plan to use it on shared or production prompts. Treat it as a local diff-and-registry helper only; do not rely on its claimed gate permissions, owner binding, or rollback protections unless those are separately implemented. Use an explicit registry path, keep backups, and require human approval before any rollback or active prompt replacement.

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
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Taint TrackingDirect Taint Flow, Variable-Mediated Taint Flow, Credential Exfiltration Chain
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (10)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The activation text includes broad user utterances like '提示改乱了回不去' and '不知道哪版提示效果更好', which could overlap with ordinary discussion about prompts rather than a clear request to invoke this specific skill. Although some concrete trigger terms are listed later, the file does not define exclusion conditions or clear scope boundaries for when the skill should not activate.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description says to use the skill when users say phrases like ‘提示改乱了回不去’ or ‘不知道哪版提示效果更好’, which are broad problem statements rather than narrowly scoped invocation phrases. Because the file does not provide exclusion conditions or negative examples, these triggers could cause unintended activation during normal discussion about prompt issues.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The risk rationale says the skill may call APIs, read/write files, and execute locally, while the declared permissions deny network, filesystem, and subprocess access. This inconsistency undermines trust in the security boundary and can lead reviewers or runtime policy engines to misclassify the skill's actual capabilities, which is dangerous in systems that rely on manifest accuracy for sandboxing or approval.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The manifest and prose describe rollback, version IDs, owner binding, and gate-enforced restoration of system configuration, but the declared interface only exposes old/new text, optional score, registry, and json. This mismatch can cause callers or orchestration layers to assume authorization and rollback protections exist when they are not actually represented or enforceable at the interface level, creating unsafe automation and misleading security expectations.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill describes rollback behavior that restores configuration without a prominent user warning about side effects, such as replacing active prompt state or reverting team changes. Even in documentation form, presenting rollback as a routine action without explicit confirmation requirements can normalize potentially disruptive operations and increase the chance of unsafe use in downstream implementations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The skill advertises invocation using broad, natural-language phrases such as common user complaints and general requests about prompt management. This can cause the agent to activate the skill in situations where the user did not explicitly intend to use it, increasing the chance of unintended workflow execution, context leakage into the skill, or inappropriate steering of the conversation.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

Natural-language text in the docstring, error messages, and output is exclusively Chinese, and the script provides no option for users to select another language or indication that the tool is intentionally locale-specific. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation.

Content

No source excerpt is available for this finding.

Tainted flow: 'reg' from pathlib.Path.read_text (line 22, file read) → pathlib.Path.write_text (file write)

Medium
Category
Data Flow
Confidence
65% confidence
Finding

Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.

Content

Scanner excerpt · scripts/prompt_vc.py (reported line 30)May include surrounding context.

python
"added": [l for l in diff if l.startswith("+") and not l.startswith("+++")],
        "removed": [l for l in diff if l.startswith("-") and not l.startswith("---")],
    })
    reg_path.write_text(json.dumps(reg, ensure_ascii=False, indent=2), encoding="utf-8")
    if a.json:
        print(json.dumps({"version": ver, "score": a.score, "diff_lines": len(diff)}, ensure_ascii=False, indent=2))
    else:

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
77% confidence
Finding

The document is structured as mandatory English and Chinese sections, presenting the skill in fixed languages rather than offering a user-selectable language or documenting a justified locale constraint. Under the policy criteria, forcing a specific language or locale without opt-in can be a natural-language policy violation.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

This code performs a file write to the path provided by --registry, which can modify existing data, but there is no confirmation prompt, warning comment/docstring about overwriting, or other user disclosure immediately associated with the operation. While the script prints after writing, that does not warn the user before the safety-relevant action occurs.

Content

No source excerpt is available for this finding.