Back to skill

Security audit

RePrompter

Security checks for vulnerabilities and agentic risk

Overview

This is a disclosed prompt-improvement and multi-agent orchestration skill, but users should review it because installation and team execution grant broad agent authority with some under-scoped safeguards.

Install only from a pinned release or reviewed commit, not the README main-branch curl command. Before enabling Repromptception, understand that it can spawn multiple agent sessions, write files under /tmp, read their outputs, retry work, and persist Claude Code team settings in your home configuration. Use explicit trigger phrases and review generated scopes before letting agents modify a project.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (2)

T03 · Remote Payload Retrieval and Execution

Warning
Location
README.md:403
Finding

Mutable Remote Skill Archive Installed Without Integrity Verification

Content
View full analysis

Vulnerability Details

File Location: README.md:403-406
Vulnerability Type: Unverified remote payload retrieval through a mutable branch archive
Risk Level: Medium

Vulnerable Code

bash
mkdir -p skills/reprompter
curl -sL https://github.com/aytuncyildizli/reprompter/archive/main.tar.gz | \
  tar xz --strip-components=1 -C skills/reprompter

Technical Analysis

The documented installation command downloads an archive from the mutable main branch and extracts it directly into an active Skill directory. It does not pin a release tag or immutable commit and does not verify a checksum or cryptographic signature.

The archive is not directly piped to a shell, so extraction alone does not immediately execute a native binary. However, the extracted files include Agent-readable Skill instructions and potentially executable scripts. Claude Code subsequently auto-discovers skills/reprompter/SKILL.md, meaning changed upstream content can become effective Agent instructions after installation without receiving the same review as the audited version.

Use of HTTPS protects transport integrity but does not protect against compromise of the upstream account or repository, malicious upstream changes, or an unexpected force-push to the branch.

Attack Path

  1. An attacker compromises the upstream repository or maintainer account, or malicious content is committed to main.
  2. The attacker modifies SKILL.md, a reference template, or an included script.
  3. A user follows the documented installation command.
  4. curl retrieves the current, attacker-controlled main archive.
  5. tar extracts the unverified content directly into skills/reprompter.
  6. Claude Code auto-discovers and loads the altered Skill.
  7. Malicious instructions may then induce the Agent to invoke tools, disclose accessible information, modify files, or execute commands within the Agent's existing permissions.

Impact Ass

...[truncated 567 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the mutable main archive with a versioned release or immutable commit archive.
  2. Publish a SHA-256 checksum through an independently controlled release channel and verify it before extraction.
  3. Download the archive to a temporary file rather than streaming it directly to tar.
  4. List and validate archive entries before extraction, rejecting absolute paths, .. traversal components, and unexpected files.
  5. Extract into a newly created staging directory and move the validated contents into the final Skill directory.
  6. Prefer signed release artifacts or signed Git tags where available.
  7. Avoid curl -s, or use options such as --fail --show-error --location so HTTP and transport failures are visible.

Example hardened pattern:

bash
set -euo pipefail

version="v7.0.0"
expected_sha256="PUBLISH_AND_INSERT_VERIFIED_CHECKSUM"
archive="$(mktemp)"
staging="$(mktemp -d)"

curl --fail --show-error --location \
  "https://github.com/aytuncyildizli/reprompter/archive/refs/tags/${version}.tar.gz" \
  --output "$archive"

printf '%s  %s\n' "$expected_sha256" "$archive" | sha256sum --check -
tar tzf "$archive" | grep -Ev '(^/|(^|/)\.\.(/|$))' >/dev/null
tar xzf "$archive" --strip-components=1 -C "$staging"

mkdir -p skills/reprompter
cp -R "$staging"/. skills/reprompter/
rm -rf "$archive" "$staging"

T09 · Insecure Skill Coding Practices

Note
Location
SKILL.md:198
Finding

Predictable Agent Artifact Paths in Shared Temporary Directory

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:198-213 and SKILL.md:245-247
Vulnerability Type: Unsafe predictable temporary-file handling
Risk Level: Low

Vulnerable Code

markdown
4. **Write team brief** to `/tmp/rpt-brief-{taskname}.md` (use unique tasknames to avoid collisions between concurrent runs)
markdown
- `<output_format>`: Exact path `/tmp/rpt-{taskname}-{agent-domain}.md`, required sections
- `<success_criteria>`: Minimum N findings, file:line references, no hallucinated paths

**Score each prompt — target 8+/10.** If under 8, add more context/constraints.

Write all to `/tmp/rpt-agent-prompts-{taskname}.md`
bash
# 5. Verify outputs
ls -la /tmp/rpt-{taskname}-*.md

Technical Analysis

The orchestration workflow places briefs, generated prompts, and Agent reports at predictable, task-name-derived paths under the globally shared /tmp directory. Requiring a “unique taskname” reduces accidental collisions but does not provide secure creation, ownership verification, exclusive access, or protection against symbolic links.

On a multi-user host, another local process may predict or observe a task name and pre-create a matching regular file or symbolic link. Depending on how the Agent or tool opens the path, this can cause output replacement, report spoofing, unintended truncation, or writes to a different file accessible to the victim process.

Reading results through a wildcard also does not verify that every matching file belongs to the current run. An attacker-created matching report could therefore be included in evaluation or synthesis.

Attack Path

  1. A local attacker predicts or observes the task name used by a Repromptception run.
  2. The attacker creates files or symbolic links such as /tmp/rpt-example-security.md or /tmp/rpt-agent-prompts-example.md.
  3. The victim starts the multi-agent workflow with the corresponding task name.
  4. An A ...[truncated 849 chars]
Remediation
View remediation

Remediation Suggestions

  1. Create one private directory per orchestration run with mktemp -d.
  2. Set a restrictive umask and directory permissions, such as umask 077 and mode 0700.
  3. Store every brief, prompt, report, and synthesis file inside that private directory.
  4. Pass exact output paths to Agents instead of discovering outputs with a broad /tmp wildcard.
  5. Before consuming an output, reject symbolic links and verify that the file is a regular file owned by the current user.
  6. Use exclusive file creation where supported and fail if an expected output already exists.
  7. Register cleanup with a shell trap and remove the private directory after completion.
  8. If artifacts must be retained, move them to a user-owned project directory after validation rather than leaving them in shared temporary storage.

Example orchestration setup:

bash
set -euo pipefail
umask 077

RUN_DIR="$(mktemp -d "${TMPDIR:-/tmp}/reprompter.XXXXXXXX")"
chmod 700 "$RUN_DIR"
trap 'rm -rf -- "$RUN_DIR"' EXIT

BRIEF="$RUN_DIR/team-brief.md"
PROMPTS="$RUN_DIR/agent-prompts.md"
SECURITY_REPORT="$RUN_DIR/security-report.md"
FINAL_REPORT="$RUN_DIR/final-report.md"

Before reading an Agent result, validate it explicitly:

bash
if [[ -L "$SECURITY_REPORT" || ! -f "$SECURITY_REPORT" || ! -O "$SECURITY_REPORT" ]]; then
  echo "Invalid or untrusted Agent output" &gt;&amp;2
  exit 1
fi
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (17)

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
90% confidence
Finding

The README explicitly instructs an auditing agent to inspect ~/.claude/settings.json, which may contain deny-list rules, environment variables, or other sensitive local configuration. In a skill context, directing access to user home configuration expands the trust boundary beyond project files and could expose secrets or security controls to the model and downstream outputs.

Content

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

md
<context>
- OpenClaw config: openclaw.json + .openclaw/ directory
- Claude Code settings: ~/.claude/settings.json (deny list, env vars)
- Safety rules in SOUL.md (8 hard rules — but are they mechanically enforced?)
- .gitignore recently expanded but may still miss sensitive paths
- Other agents: SecurityAuditor (#1), TokenCostAuditor (#2), MemoryBloatAuditor (#4)

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description is about transforming prompts into structured prompts for agent workflows. The supplied code does something entirely different: it automates creation of GitHub Releases from a changelog and existing git tags. This is a materially different primary purpose and introduces undeclared repository/GitHub automation capabilities and resource access (git repo state, changelog file, GitHub CLI). There is no evident functionality related to prompt cleanup, XML/Markdown prompt generation, quality scoring, or multi-agent prompt creation.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
99% confidence
Finding

The declared description says the skill's purpose is prompt improvement and structuring for single- or multi-agent use. However, the supplied code chunk does not implement any prompt transformation, scoring, XML/Markdown generation, agent-team briefing, or execution logic related to reprompting. Instead, it performs release/package automation by zipping repository contents and excluding selected files. That is a materially different primary purpose and involves undeclared file packaging capabilities unrelated to the described skill behavior.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
98% confidence
Finding

The declared description says the skill actively rewrites/structures prompts and may generate team-oriented prompt artifacts. The actual code does none of that. Instead, it validates existing Markdown template files in a local directory by checking for required tags such as , , and . This is a materially different primary purpose: repository template linting/validation rather than prompt transformation. The file-system access to docs/references is consistent with validation tooling, not with the described end-user prompt-cleanup behavior. Therefore this is a clear description-behavior mismatch.

Content

No source excerpt is available for this finding.

Agent Config Directory Access

High
Category
Agent Snooping
Confidence
90% confidence
Finding

The skill instructs users to modify ~/.claude/settings.json, which touches a sensitive agent configuration location in the user's home directory. Although presented as setup guidance, encouraging access to and modification of global config can be risky because it may alter execution defaults across projects, enable experimental features broadly, and normalize interaction with privileged local configuration files.

Content

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

Note: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS is an experimental flag that may change in future Claude Code versions. Check Claude Code docs for current status.

In ~/.claude/settings.json:

json
{
  "env": {

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/logo.svg (reported line 9)May include surrounding context.

text
</linearGradient>
  </defs>
  
  <!-- Icon: Terminal bracket with transform arrow -->
  <g transform="translate(10, 10)">
    <!-- Terminal window frame -->
    <rect x="0" y="0" width="100" height="100" rx="12" fill="#1a1b26" stroke="url(#grad1)" stroke-width="2.5"/>

Hidden Instructions

High
Category
Prompt Injection
Confidence
70% confidence
Finding

Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Content

Scanner excerpt · assets/social-preview.svg (reported line 15)May include surrounding context.

text
<rect width="1280" height="640" fill="url(#bg)"/>
  
  <!-- Subtle grid pattern -->
  <g opacity="0.03">
    <line x1="0" y1="80" x2="1280" y2="80" stroke="#fff" stroke-width="1"/>
    <line x1="0" y1="160" x2="1280" y2="160" stroke="#fff" stroke-width="1"/>

YARA rule 'agent_skill_prompt_injection_hidden_instructions': Prompt injection or hidden instructions embedded in AI agent skill text [agent_skills]

High
Category
YARA Match
Confidence
80% confidence
Finding

YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

Content

Scanner excerpt · docs/references/security-template.md (reported line 20)May include surrounding context.

ening.

Template

xml
<role>
{Security engineer specializing in [detected framework/language] security, OWASP guidelines, and secure coding practices}
</role>

<context>
- Application: {framework and type}
- Scope: {what to audit/secure}
- Auth system: {authentication method}
- Data sensitivity: {type of data handled}
- Compliance: {GDPR, HIPAA, SOC2, etc. if applicable}
</context>

<threat_model>
Consider these threat vectors:
- {Threat 1}: {description}
- {Threat 2}: {description}
- {Threat 3}: {description}
</threat_model>

<task>
{Audit/implement/fix} security for {scope} focusing on {specific concerns}.
</task>

<motivation>
{Threat severity, compliance requirements, exposure window}
</motivation>

<requirements>
1. **Input validation**: {sanitization requirements}
2. **Authentication**: {auth requirements}
3. **Authorization**: {access control requirements}
4. **Data protection**: {encryption, masking, etc.}
</requirements>

<constraints>
- Follow OWASP Top 10 guidelines
-

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest positions this skill as transforming messy prompts into structured prompts, optionally for multi-agent use. However, the README says v7 'merges single-prompt and team orchestration into one skill' and later describes detecting complexity, selecting execution mode, running team workflows, evaluating outputs, and retrying agents, which expands from prompt authoring into workflow orchestration/execution.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

tar xz --strip-components=1 -C skills/reprompter

text

Claude Code auto-discovers `skills/reprompter/SKILL.md`.

### OpenClaw

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

Overly broad trigger phrases can cause unintended invocation of team/orchestration behavior during ordinary requests, expanding scope and potentially increasing access to files, configs, or multi-agent workflows without clear user intent. In an agent environment, ambiguous activation raises the risk of surprise actions, excess context exposure, and unsafe task routing.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The manifest outputs are structured prompts, quality scores, optional team briefs, per-agent sub-prompts, and agent team output files. In contrast, the README describes a '4-phase loop' of Team Plan → Repromptception → Execute → Evaluate+Retry and says the skill has 'closed-loop quality' with retries, which is materially broader than merely producing prompts and artifacts.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

md
<p align="center">
  <a href="https://www.star-history.com/#AytuncYildizli/reprompter&Date">
    <img src="https://api.star-history.com/svg?repos=AytuncYildizli/reprompter&type=Date" alt="Star History Chart" width="600">
  </a>
</p>

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger phrases are very broad, including terms like 'audit', 'parallel work', and 'anything going to agent teams', which can cause the skill to activate in contexts the user did not clearly intend. In a security-sensitive environment, accidental invocation can route tasks into more powerful workflows, including filesystem inspection and tmux-based multi-agent execution guidance, increasing the chance of unintended actions or over-collection of context.

Content

No source excerpt is available for this finding.

Vague Triggers

Low
Category
Not specified by scanner
Confidence
81% confidence
Finding

Mixing exact trigger phrases with vague auto-activation language makes invocation scope unclear and can lead to accidental skill activation. While lower severity than direct exfiltration, this ambiguity is unsafe in agent systems because it weakens user control over when broader workflows engage.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The template hard-codes output paths under /tmp for team briefs and per-agent artifacts without requiring user confirmation, uniqueness safeguards, or overwrite protections. In an agent-execution context, this can cause unintended local file creation, collisions with existing files, or clobbering of prior artifacts, especially when task names are reused or attacker-influenced.

Content

No source excerpt is available for this finding.

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

The note instructs execution to write a brief to disk and return the file path, but it does not warn about local side effects or specify safe file-creation behavior. Because this skill is meant to orchestrate multi-agent work and produce artifacts automatically, the omission increases the chance of silent writes, overwrites, or path misuse during execution.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.