Back to skill

Security audit

Project Manager

Security checks for vulnerabilities and agentic risk

Overview

This project-management skill is mostly coherent, but it asks for persistent background conversation monitoring and broad local state retention that are not clearly bounded or consistently disclosed.

Review before installing. Use it only in workspaces where local project and memory files may contain conversation-derived summaries. Do not enable status synchronization, daily checks, conversation logs, or MemPalace archival unless you explicitly want ongoing retention; avoid pasting secrets into conversations that may be summarized or archived. Check for and remove any cron tasks if synchronization was enabled.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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
Findings (2)

T06 · System Persistence

Error
Location
SKILL.md:285
Finding

Persistent Cron Task for Conversation Monitoring and Workspace Modification

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 285-314
Vulnerability Type: Scheduled-task persistence
Risk Level: High

Relevant source excerpt, translated into English:

markdown
### 8. In-session state synchronization (opt-in, requires explicit activation)

When the user explicitly requests it, perform the following:

1. Create or update the checkpoint file `memory/pm-checkpoint.json`.

2. Create a cron task that runs every 60 minutes:
   - Read `pm-checkpoint.json` to obtain the previous checkpoint.
   - Read conversation content added after the checkpoint.
   - Analyze the new content for new topics, decisions, or requirements.
   - Compare it with index.md: update STATUS.md for related content,
     or mark unrelated content for confirmation.
   - Update `lastCheckedMsgId` and `lastCheckTime`.

Technical Analysis

The Skill directs the agent to install a recurring operating-system cron task. Unlike a session-local timer, a cron entry can survive the interaction and continue executing in later sessions.

Although activation is described as opt-in and the checkpoint includes an expiration timestamp, the instructions do not define how the cron entry must verify expiration or require its removal when synchronization expires, the user disables it, or the session disconnects. Merely setting expiresAt in a JSON file does not cause the operating system to remove or disable the scheduled task.

The recurring operation is instructed to read newly added conversation content and modify project files. Consequently, an orphaned or improperly scoped cron entry could continue accessing conversation-derived information and changing workspace state outside the initiating interaction.

Attack Path

  1. A user explicitly enables periodic state synchronization.
  2. The agent creates memory/pm-checkpoint.json.
  3. The agent installs a cron task that executes every 60 minutes.
  4. The sched ...[truncated 1330 chars]
Remediation
View remediation

Remediation Suggestions

  1. Replace operating-system cron with a session-scoped scheduler that is automatically destroyed when the session ends.
  2. If cron is unavoidable, require a separate, explicit confirmation that clearly states that a persistent operating-system task will be installed.
  3. Assign each task a deterministic, unique identifier and prevent duplicate registration.
  4. Require the task to check active and expiresAt before reading any conversation or project data.
  5. Define mandatory removal procedures for expiration, user disablement, session disconnection, project archival, and Skill uninstallation.
  6. Restrict the scheduled command to the minimum required files and prevent arbitrary path selection.
  7. Record installation, execution, failure, and deletion events in a local audit log without storing conversation contents.
  8. Provide a command that lists all installed tasks and allows the user to remove them immediately.
  9. Default synchronization to disabled and avoid interpreting unrelated requests as consent to install a scheduled task.

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:352
Finding

External Full-Conversation Archival Conflicts with Declared Privacy and Network Boundaries

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 352-389; clawhub.json, lines 39-50
Vulnerability Type: Undisclosed external data transfer and insecure privacy configuration
Risk Level: Medium

Relevant SKILL.md source excerpt, translated into English:

markdown
- Whenever STATUS.md is updated: if conversation logging is enabled,
  automatically append key content from the current session.
- When a project is archived: if conversation logging is enabled,
  package the project's complete conversation history.

Two-layer storage: the summary index is stored in a local file, while
complete conversations are recommended to be stored in MemPalace.

#### Complete conversation archival (recommended)

Recommended: save the complete original conversation to MemPalace
(wing={project_name}, room=conversations), while retaining only a summary
index locally. MemPalace supports semantic search across projects.

Conflicting clawhub.json declaration:

json
"security": {
  "type": "pure_markdown_skill_no_code",
  "network_access": "none",
  "third_party_services": "none"
},
"data_privacy": {
  "data_leaves_device": false,
  "project_data": "local filesystem only"
}

Technical Analysis

The Skill recommends storing complete, original conversation transcripts in a separately named service, MemPalace. However, the package metadata declares that the Skill has no network access, uses no third-party services, does not allow data to leave the device, and stores project data only on the local filesystem.

These claims are incompatible unless MemPalace is guaranteed to be a strictly local component, which the audited files do not establish. The Skill also fails to define:

  • Whether MemPalace is local or remote.
  • The destination endpoint and responsible data controller.
  • Authentication and transport-security requirements.
  • Secret detection or transcript redaction.

...[truncated 2196 chars]

Remediation
View remediation

Remediation Suggestions

  1. Remove the recommendation to export complete conversations unless external archival is essential.
  2. Clearly establish whether MemPalace is local or remote.
  3. If it can be remote, update clawhub.json to accurately declare network access, third-party service use, and off-device data transfer.
  4. Separate consent for local conversation logging from consent for external transcript export.
  5. Before every export, display the destination, data categories, project identifier, retention policy, and exact transcript scope.
  6. Require explicit confirmation immediately before transfer; do not infer consent from enabling local logging.
  7. Scan for and redact credentials, tokens, private keys, personal information, and other sensitive content.
  8. Use authenticated, encrypted transport and document credential-storage requirements.
  9. Provide retention limits, deletion procedures, and a way to verify that remote copies have been removed.
  10. Default to local summary-only storage and make complete transcript export a separately disabled option.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (17)

Vague Triggers

High
Category
Not specified by scanner
Confidence
95% confidence
Finding

The trigger phrases include broad, everyday language such as '接着来', '然后呢', and '先聊点别的', which can match ordinary conversation rather than intentional tool use. In a skill that reads and writes project files and may alter memory-like state, accidental activation can lead to unwanted context switching, file modification, or data retention.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill states session state synchronization is opt-in and never auto-activated, yet both new-project and resume workflows instruct automatic registration of synchronization. That contradiction can silently enable recurring monitoring and persistence of subsequent conversation data without the user explicitly turning it on.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The dialogue log feature directs preservation of key discussions and recommends archiving complete conversation history, including project-linked logs and searchable storage. This substantially increases privacy and data leakage risk because it centralizes potentially sensitive content, makes it easier to retrieve across contexts, and normalizes retention beyond what is necessary for project state.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The README advertises periodic automatic scanning of new conversations and persistence of project context, but it does not clearly warn users that their conversation content may be continuously inspected and stored. In a project-management skill, this can lead to unanticipated retention of sensitive prompts, credentials, business plans, or personal data, especially because the feature is framed as automatic and ongoing.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README describes a system that creates and updates project files such as STATUS.md and index.md, but it does not prominently warn that these files are automatically created and modified. That omission can cause users to unknowingly persist sensitive information to disk, where it may be exposed through backups, source control, or shared workspaces.

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 80)May include surrounding context.

md
## Installation

### nanobot
Copy `SKILL.md` to `~/.nanobot/workspace/skills/project-manager/SKILL.md`

### OpenClaw
Copy `SKILL.md` to `<workspace>/skills/project-manager/SKILL.md`

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 83)May include surrounding context.

md
## Installation

### nanobot
Copy `SKILL.md` to `~/.nanobot/workspace/skills/project-manager/SKILL.md`

### OpenClaw
Copy `SKILL.md` to `<workspace>/skills/project-manager/SKILL.md`

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The top-level description is presented entirely in Chinese and the listed trigger phrases are primarily Chinese, with no statement that language is user-selectable. This can imply a fixed language/locale behavior without offering opt-in or documenting a justified regional limitation.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill is designed to broadly retain and organize user conversation details across per-project status files, memory checkpoints, heartbeat mechanisms, and recommended full-conversation storage. Even if framed as productivity, this materially expands the amount of sensitive user content persisted and increases the risk of over-collection, cross-context leakage, and later misuse or exposure.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill says intent recognition is '自动激活' and relies on contextual inference, but the boundaries for activation are not tight enough for a stateful system with persistence side effects. Ambiguous auto-activation increases the chance that unrelated conversation will be treated as project management input, causing unintended reads, writes, or logging.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill claims end-of-session persistence should require user confirmation, but the workflow section directs automatic writes when certain signals are detected, including inferred conditions like inactivity or elapsed time. This can cause unintended persistence of conversation content and project state without an explicit, current user action, undermining consent and creating privacy and integrity risks.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The session sync workflow instructs the agent to periodically read newly added conversation content and persist extracted information into memory and project files. This creates a surveillance-like background collection pattern that can capture more than the user intended, especially when combined with ambiguous triggering and contradictory opt-in rules.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The trigger phrases include common natural-language commands such as “新建项目” and “回到项目”, which are broad enough to appear in ordinary conversation. This can cause unintended skill activation, leading the agent to read or write project state files when the user did not explicitly intend to invoke the skill.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The single-word trigger “甘特图” is highly generic and may occur in routine discussion about planning or documentation. In this skill’s context, accidental activation is more dangerous because the skill manages persistent project context and may update local status or checkpoint files based on incidental mentions.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

This markdown template is entirely written in Chinese and implicitly requires users to provide project status information in that language. Under the policy, forcing a specific language without user opt-in is a natural-language policy violation unless the locale constraint is explicitly justified, which is not present here.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
70% confidence
Finding

The file presents bilingual navigation but immediately continues with a Chinese section heading and Chinese explanatory text in the main body. For a natural-language policy review, this can be read as preferring a specific language in the default document flow without clearly instructing users how to choose their preferred language experience.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
94% confidence
Finding

This markdown template forces a specific language/locale for all headings and guidance text, which can violate a language-choice policy when no user opt-in or justification is provided. There is no indication that the template is intended only for a Chinese-speaking or region-specific context.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.