Back to skill

Security audit

CHAT—Logger

Security checks for vulnerabilities and agentic risk

Overview

The skill openly logs conversations, but it automatically preserves every user and assistant message in plaintext files without clear opt-in, redaction, access, or retention controls.

Install only if every user of the workspace understands that conversations may be saved verbatim to local Markdown files. Avoid using it for secrets, credentials, regulated data, confidential business work, or shared/synced workspaces unless you add opt-in controls, redaction, restrictive permissions, encryption, and retention/deletion rules.

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

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:51
Finding
Unfiltered Plaintext Storage of Conversation Data## Vulnerability Details **File Location**: `SKILL.md:51-64` (behavior is also specified in `SKILL.md:5-7`, `SKILL.md:91-94`, and `README.md:5`, `README.md:56-61`) **Vulnerability Type**: Plaintext storage of potentially sensitive conversation data **Risk Level**: Medium ### Vulnerable Code ```javascript // Format log entry const userMsg = /* get user message */; const assistantMsg = /* get assistant reply */; let logEntry = `\n[${timeStr}]\n`; if (userMsg) { logEntry += `User: ${userMsg}\n`; } if (assistantMsg) { logEntry += `Assistant: ${assistantMsg}\n`; } // Append to file fs.appendFileSync(logFile, logEntry); ``` ### Technical Analysis The skill instructs the agent to append complete user messages and assistant replies verbatim to a predictable daily Markdown file. No controls are provided for user consent, sensitive-data detection, credential redaction, file permissions, encryption, retention, or secure deletion. Conversation content can contain passwords, API tokens, personal information, proprietary data, or secrets returned by tools. Writing this content directly to the workspace creates a persistent plaintext copy that may be available to other local users, processes, backup systems, synchronization services, or anyone with access to a shared workspace. The Markdown log format also fails to escape or structurally encode untrusted multiline messages. A crafted message can inject apparent timestamps, `User:` fields, or `Assistant:` fields, allowing an attacker to forge misleading log records and undermine the integrity of an audit trail. ### Attack Path 1. A user, external prompt, document, or tool response introduces sensitive information or crafted multiline log syntax into a conversation. 2. The agent follows the skill instructions and assigns the untrusted content directly to `userMsg` or `assistantMsg`. 3. `fs.appendFileSync` stores the content verbatim in `workspace/chat/YYYY-MM-DD.m ...[truncated 807 chars]
Remediation
## Remediation Suggestions 1. Require explicit, informed user opt-in before enabling conversation logging, and provide a clear per-session disable mechanism. 2. Redact passwords, API keys, access tokens, authorization headers, private keys, personal identifiers, and other configured sensitive patterns before writing any entry. 3. Allow users to exclude individual messages, tool outputs, attachments, and designated sensitive conversations from logging. 4. Store records using a structured format such as JSON Lines, with untrusted fields encoded by a standard serializer rather than interpolated into Markdown. 5. If Markdown remains necessary, escape or delimit multiline message content so it cannot create forged timestamps or speaker records. 6. Create the log directory and files with restrictive permissions appropriate to the operating system, such as owner-only access where supported. 7. Encrypt logs at rest when conversations may contain confidential information, with encryption keys stored separately from the logs. 8. Implement configurable retention limits, secure deletion, log rotation, and a documented process for users to inspect and remove stored data. 9. Avoid placing logs in automatically synchronized or shared workspace locations unless users explicitly approve that exposure. 10. Handle filesystem failures safely and document that append-only behavior does not provide tamper resistance or a trustworthy compliance audit trail.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (9)

Context Leakage

High
Category
Data Exfiltration
Content
## Use Cases

- **Conversation Backup** - Keep a history of all chats
- **Audit Trail** - Record all interactions for compliance
- **Personal Journal** - Use as a daily conversation journal
- **Debugging** - Review past conversations for troubleshooting
Confidence
88% confidence
Finding
The use case 'Record all interactions for compliance' reinforces comprehensive context retention, which can leak sensitive prompts, responses, and operational details if the logs are accessed by unauthorized parties. In this skill's context, the danger is elevated because the entire purpose is broad transcript collection, and there is no mention of scope limitation, least-privilege access, encryption, or compliance controls.

Missing User Warnings

High
Confidence
97% confidence
Finding
The skill explicitly instructs persistent logging of every user and assistant message to daily files without any consent, minimization, redaction, retention limit, or sensitivity checks. This creates a strong risk of capturing secrets, credentials, personal data, and confidential outputs in plaintext logs that may later be accessed, exfiltrated, or mishandled.

Ae1

High
Category
analysis-evasion
Content
- `SKILL.md` - This file
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Ssd 3

Medium
Confidence
95% confidence
Finding
The skill is designed to persist every user message and assistant reply to local files with no mention of consent, minimization, filtering, or access restrictions. This creates a durable record of potentially sensitive conversations and increases the risk of later disclosure through local compromise, backups, shared workspaces, or accidental publication.

Missing User Warnings

Medium
Confidence
93% confidence
Finding
The README explicitly describes automatic logging of every conversation to disk, but it does not provide any warning about privacy implications, consent, retention, or handling of sensitive content. In an agent skill context, silently persisting all user/assistant exchanges can capture credentials, personal data, and proprietary information, making this a real privacy/security weakness rather than a harmless documentation detail.

Ssd 3

Medium
Confidence
94% confidence
Finding
The documented log format stores raw user messages and assistant replies verbatim, which means any sensitive content present in the conversation will be preserved exactly as entered. Verbatim logging is especially risky for agent systems because users may share passwords, tokens, API keys, health data, or internal business information during normal use.

Ssd 3

Medium
Confidence
93% confidence
Finding
The workflow instructs appending each conversation turn to a daily file after every response, creating continuous accumulation of interaction history without safeguards. Ongoing collection amplifies exposure because even a single weakly protected log file can become a comprehensive archive of sensitive activity over time.

Ssd 3

Medium
Confidence
95% confidence
Finding
Recording all conversation content by default creates a natural-language data retention issue because sensitive user prompts and assistant responses may be permanently stored beyond their operational need. Even without active exfiltration, plaintext accumulation of full transcripts increases breach impact and secondary disclosure risk.

Ssd 3

Medium
Confidence
96% confidence
Finding
The manual workflow directs the agent to append the full user message and assistant reply after each turn, which operationalizes indiscriminate capture of conversational data. In practice, this can store passwords, tokens, personal information, proprietary material, or regulated data in local markdown files with no screening or safeguards.

Static analysis

No suspicious patterns detected.