Back to skill

Security audit

verification-before-completion

Security checks for vulnerabilities and agentic risk

Overview

This skill is a verification checklist and helper script that can run user-configured local checks before claiming work is done.

Install only if you want an agent to be stricter about proving work is complete. Before running the helper script, review any verify.json because its commands execute locally and its evidence file may contain command output that should not include secrets.

Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Output HandlingUnvalidated Output Injection, Cross-Context Output, Unbounded Output
  • 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 (6)

subprocess module call

Medium
Category
Dangerous Code Execution
Content
print(f"== {name} ==  $ {cmd['run']}")
        import shlex
        argv = shlex.split(cmd["run"])
        proc = subprocess.run(argv, capture_output=True, text=True)
        ok = proc.returncode == 0
        overall = overall and ok
        if proc.stdout.strip():
Confidence
70% confidence
Finding
subprocess module calls execute external commands. Without careful input validation, this enables command injection.

Lp3

Medium
Category
MCP Least Privilege
Confidence
70% confidence
Finding
Without declared permissions the skill's intent is opaque and cannot be validated.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The trigger engine says the skill activates whenever the user requests something that matches the description above, but the description itself is high-level and broad ('verification pekerjaan ... selesai sebelum klaim sukses'). This does not provide specific trigger phrases, boundaries, or concrete exclusion examples beyond a generic 'di luar scope deskripsi,' so it could be invoked in many ordinary completion-related conversations.

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The skill description is written as a directive in Indonesian ('Gunakan saat user minta...') and the document consistently presents operational instructions only in that language, with no indication that language choice is optional or user-selected. This can violate language/locale policy when a skill imposes one language without opt-in or justification.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
- Using "should", "probably", "seems to"
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
- About to commit/push/PR without verification
- Trusting agent success reports
- Relying on partial verification
- Thinking "just this once"
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.

Unvalidated Output Injection

High
Category
Output Handling
Content
print(f"== {name} ==  $ {cmd['run']}")
        import shlex
        argv = shlex.split(cmd["run"])
        proc = subprocess.run(argv, capture_output=True, text=True)
        ok = proc.returncode == 0
        overall = overall and ok
        if proc.stdout.strip():
Confidence
95% confidence
Finding
Model output is used without validation or sanitization. Unvalidated output injected into downstream contexts (SQL, shell, HTML) enables injection attacks and arbitrary code execution.

Static analysis

No suspicious patterns detected.