Back to skill

Security audit

Key Tracker

Security checks for vulnerabilities and agentic risk

Overview

This skill is a local memory tracker, but it automatically saves conversation and report excerpts in plaintext across sessions without clear consent, deletion, or redaction controls.

Install only if you want a Chinese-language memory skill that can automatically keep long-lived local records of work conversations and reports. Treat the .keyrecords directory as sensitive, review it regularly, avoid using the skill around secrets or regulated data, and add your own deletion/redaction and file-permission practices if you proceed.

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:181
Finding
Automatic Plaintext Persistence of Conversation Content## Vulnerability Details **File Location**: `SKILL.md:181-194` **Vulnerability Type**: Plaintext storage of potentially sensitive conversation and report content **Risk Level**: Medium ### Vulnerable Code Snippet ```json { "id": "KR-20260312-001", "type": "deadline", "title": "项目交付", "context": "讨论项目进度时确定", "source": "conversation", "source_text": "项目要在3月20日前完成", "datetime": "2026-03-20T18:00:00+08:00", "status": "pending", "priority": "high", "logged_at": "2026-03-12T14:00:00+08:00" } ``` The storage location and directory-creation instruction are also documented at `SKILL.md:102-106`: ```bash mkdir -p ~/.openclaw/workspace/.keyrecords/{时间类,问题类,决策类,承诺类,过程类,知识类,人物类} ``` ### Technical Analysis The Skill is designed to automatically extract information from conversations and reports and persist it in JSON records. The documented schema retains the original input in the `source_text` field and also stores contextual information. The detection patterns cover broad categories such as stakeholders, commitments, operational problems, resources, and decision context. No consent gate, sensitive-data filtering, secret redaction, encryption, restrictive file-permission requirement, retention limit, or deletion workflow is specified. Consequently, confidential business information, personal data, internal operational details, or credential-adjacent content may be retained in plaintext without the user making a deliberate per-record storage decision. The package contains documentation rather than an executable implementation, so the finding applies to the behavior explicitly prescribed by the Skill. There is no evidence that these records are transmitted to an external party. ### Attack Path 1. A user discusses confidential or personal information in a conversation or supplies it in a report. 2. One of the Skill's broad detection rules classifies the content as a deadline, stakeholder, commitment, issue, context item, or another supported recor ...[truncated 1216 chars]
Remediation
## Remediation Suggestions 1. Require explicit user opt-in before enabling automatic persistence and provide per-record confirmation for sensitive categories. 2. Do not retain raw `source_text` by default. Store a minimal summary, or make raw-source retention an explicit option. 3. Redact credentials, API keys, tokens, private keys, personal data, financial information, and other sensitive patterns before writing records. 4. Create the storage directory and files with owner-only permissions, such as directory mode `0700` and file mode `0600`, rather than relying on the environment's default `umask`. 5. Encrypt records at rest using a key managed separately from the record directory when sensitive content must be retained. 6. Add configurable retention periods, automatic expiration, record deletion, complete data export, and secure purge controls. 7. Allow users to exclude conversations, sources, topics, and record categories from collection. 8. Document the precise storage behavior, threat model, backup implications, and access-control requirements before activation. 9. Add tests verifying secret redaction, permission enforcement, retention behavior, and suppression of records when consent has not been granted.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (13)

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The README explicitly promotes automatic capture of key information from conversations and reports, but it does not warn users that this may include sensitive personal, business, or confidential content. Because the feature is framed as an always-on 'external brain,' users may not realize their data is being retained beyond the immediate interaction.

Ssd 3

Medium
Confidence
95% confidence
Finding
The skill's core behavior is to automatically extract and retain 'everything the brain should remember' from user conversations, which is effectively a semantic logging mechanism. In context, this increases the chance of collecting secrets, internal decisions, personal data, or regulated information without clear scope boundaries, consent, or minimization safeguards.

Session Persistence

Medium
Category
Rogue Agent
Content
git clone https://github.com/vincentlau2046-sudo/key-tracker.git ~/.openclaw/workspace/skills/key-tracker

# 创建记录目录
mkdir -p ~/.openclaw/workspace/.keyrecords/{时间类,问题类,决策类,承诺类,过程类,知识类,人物类}
```

---
Confidence
81% confidence
Finding
The documented setup creates a persistent directory under the agent workspace for saved records, indicating cross-session state retention. In this skill's context, persistence is not inherently malicious, but it becomes security-relevant because the retained state consists of user-derived conversation summaries and potentially sensitive operational notes.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The storage section documents persistent local saving of extracted conversation content to disk, but it does not warn that sensitive material may be written to a long-lived repository. This creates a realistic confidentiality risk if the host is shared, backed up, synced, or later inspected by other tools or users.

Ssd 3

Medium
Confidence
96% confidence
Finding
Persistently storing extracted conversation artifacts in a dedicated records repository reinforces a durable data-retention pattern that can expose sensitive content over time. The danger is amplified because the repository appears intended for ongoing accumulation across interactions, with no documented safeguards such as encryption, access controls, or expiration.

Vague Triggers

Medium
Confidence
94% confidence
Finding
The skill description says key information is captured automatically from conversations and reports, but does not define activation boundaries, exclusions, or consent requirements. Because the skill operates on broad natural-language inputs, this ambiguity can cause over-collection of unrelated or sensitive content, especially in mixed-purpose conversations.

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill explicitly promises automatic capture of key information from conversations and reports, but it provides no warning that sensitive content may be stored locally and retained over time. In this context, the skill’s core function is persistence of potentially confidential meeting notes, commitments, risks, and decisions, so missing privacy and retention disclosure materially increases the chance of accidental collection and exposure.

Session Persistence

Medium
Category
Rogue Agent
Content
### 创建记录目录

```bash
mkdir -p ~/.openclaw/workspace/.keyrecords/{时间类,问题类,决策类,承诺类,过程类,知识类,人物类}
```

---
Confidence
93% confidence
Finding
The skill instructs creation of a persistent directory under the user workspace for storing captured records, which establishes session-to-session retention of potentially sensitive conversation-derived data. Persistence is central to the feature set here, so the risk is not the directory creation itself but the ongoing accumulation of confidential content without documented safeguards such as permissions, encryption, or retention limits.

Vague Triggers

Medium
Confidence
95% confidence
Finding
The automatic trigger model is based on generic keyword detection in dialogue, which is prone to false positives and can silently activate on ordinary conversation. In a note-taking skill that writes records to persistent storage, ambiguous triggering increases the risk of capturing sensitive or irrelevant statements without user intent.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The documented schema persists raw `source_text`, meaning original user utterances may be written verbatim to disk. That can capture secrets, personal data, internal project details, or regulated information without the user realizing the exact scope of storage, making local compromise or unintended sharing more damaging.

Natural-Language Policy Violations

Medium
Confidence
89% confidence
Finding
This markdown file presents the skill content entirely in Chinese, beginning with a Chinese title and description, with no indication that users may choose another language or that the locale restriction is intentional. Under the policy, a skill that effectively requires a specific language without user opt-in can be a natural-language policy violation.

Natural-Language Policy Violations

Low
Confidence
88% confidence
Finding
The skill documentation appears to require Chinese comprehension, but there is no opt-in, alternative language, or explicit statement that the skill is intended only for a Chinese-language audience. This can constitute a language/locale policy issue when a skill effectively forces a specific language without user choice.

Natural-Language Policy Violations

Low
Confidence
82% confidence
Finding
The manifest description and the operational examples are entirely in Chinese, and the detection rules and usage patterns assume Chinese-language input. Under the policy, forcing a specific language without opt-in can be a natural-language policy issue unless the locale limitation is clearly documented and justified.

Static analysis

No suspicious patterns detected.