Back to skill

Security audit

Legible Agent Output

Security checks for vulnerabilities and agentic risk

Overview

This text-only skill is not malicious, but it should be reviewed because it tells the agent to resist a user's explicit preference for technical wording.

Review this skill before installing if you often need exact technical output, raw errors, identifiers, paths, or strict output formats. It appears safe from code-execution and data-access risks, but its wording may cause an agent to push back instead of honoring requests to preserve technical terminology.

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
Findings (1)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:146
Finding

User Instructions Can Be Overridden by the Skill's Output Policy

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 146-153
Vulnerability Type: Instruction-precedence manipulation
Risk Level: High

Vulnerable Code

markdown
This skill shapes user-facing output of an agent — high-stakes because illegibility erodes user trust in the product, not just in the agent. Two failure modes that the skill must resist:

**Anti-fluency guard.** The skill's own examples and templates are plain language by construction. Do not "improve" the legibility of a status message by adding flowery prose, marketing-style adjectives, or "contextual embellishments" that obscure the underlying state. *Restraint is the rule.* A user who reads "We're working on it" is less informed than one who reads "Processed 23 of 100 files".

**Anti-sycophancy guard.** When a user pushes back on a legibility fix ("but the code is important", "we always use the term X"), do not capitulate. The user's domain expertise is real; their preferences about what users should see are the skill's job. Push back politely, cite law #1 or law #4 by name, and offer the parenthetical-ID compromise from Phase 4. If the user still insists, flag the trade-off explicitly ("This will make headlines harder to scan for the 80% of users who don't know the code") rather than silently agree.

**Faithfulness check.** If you find yourself rephrasing a legibility fix to make it shorter or smoother but losing the action verb or the error translation, stop. The skill is about *what the user can do with the information*, not about how the agent looks while saying it.

Technical Analysis

The anti-sycophancy rule instructs the agent not to comply when a user explicitly rejects the skill's preferred formatting. This elevates a skill-level presentation policy above subsequent user instructions and therefore alters instruction precedence in the current session.

The issue is broader than offering a recommended default. The phrases “do not capit ...[truncated 2146 chars]

Remediation
View remediation

Remediation Suggestions

  1. Replace the mandatory refusal language with a user-overridable default. For example:

    markdown
    Prefer plain-language labels by default. If the user explicitly requests raw technical terminology, preserve it or provide both forms. Follow the user's requested format unless it conflicts with higher-priority safety, privacy, or system instructions.
    
  2. Remove statements that assign control of user preferences to the skill, including “do not capitulate” and “their preferences about what users should see are the skill's job.”

  3. Add an explicit opt-out mechanism. A request such as “show the raw error,” “preserve identifiers,” or “disable plain-language rewriting” should suspend the relevant transformation.

  4. Separate presentation from fidelity. The skill may add a plain-language summary, but it should retain requested diagnostic data in a clearly labeled technical-details section.

  5. Restrict the skill to final user-facing prose by default. Do not rewrite sub-agent instructions, structured tool inputs, logs, or technical artifacts unless the user explicitly asks for that transformation.

  6. Add regression tests verifying that explicit user requests for raw terminology, exact error strings, paths, and identifiers are honored without weakening higher-priority safety or privacy controls.

Vulnerability Patterns
  • 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
  • Behavioral ASTexec() Call, eval() Call, Dynamic Import
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (10)

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · ATTRIBUTION.md (reported line 26)May include surrounding context.

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · ATTRIBUTION.md (reported line 89)May include surrounding context.

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

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

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

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

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

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

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

Memory Manipulation

High
Category
Memory Poisoning
Confidence
80% confidence
Finding

Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Content

Scanner excerpt · references/articles-sources.md (reported line 34)May include surrounding context.

md
- This skill's term *plain-language action preview* synthesizes the article's "Intent Preview".

**2. Hatchworks** — *Agent UX Patterns: Chat-First UX Fails. Use These Patterns Instead* (Mar 2026, Andy Smith)
- Source of the two failure modes *Invisible actions* and *Unclear state*. The article's
  direct quote *"users don't trust the agent — not because it's wrong, but because they
  can't see what it's doing"* anchors the anti-pattern section.
- This skill's term *legible agent state* synthesizes those two failure-mode labels.

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 · EVIDENCE.md (reported line 11)May include surrounding context.

md
## Setup

- **Producer (with-skill)**: loaded
  `skills/legible-agent-output/SKILL.md` and both `references/` files plus the
  `examples/` file before responding
- **Baseline (no-skill)**: same task, no skill loaded, used own PM/UX knowledge
- **Eval prompt identical for both** (see below)

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
78% confidence
Finding

The README states that every user-facing string must be forced into 'plain language' for a non-technical human, but it does not clarify that this should preserve the user's chosen language or locale. This can be read as a blanket language-policy constraint, which risks overriding user preference without opt-in.

Content

No source excerpt is available for this finding.

External Model or Provider Selection

Medium
Category
Excessive Agency
Confidence
90% confidence
Finding

Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.

Content

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

md
- debug dumps
    - system-to-system messages
license: MIT
model: "Claude Sonnet 4.5"
compatibility: |
  Tested with Claude Sonnet 4.5 (Mavis / Claude Code).
  Designed for Claude Code, Codex, VS Code, OpenCode, Cursor, GitHub Copilot.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest-style trigger 'on demand — when citing the literature or evaluating a quote' does not define clear invocation boundaries or specific trigger phrases. Terms like 'citing the literature' and 'evaluating a quote' are broad tasks that could overlap with many ordinary writing or analysis situations, increasing the risk of accidental skill use.

Content

No source excerpt is available for this finding.