Back to skill

Security audit

Live Task Pulse

Security checks for vulnerabilities and agentic risk

Overview

This task-tracking skill has a coherent purpose, but it automatically pushes task details to chat, persists and deletes local task records, and contains an unsafe task-file access bug.

Install only if you want automatic progress tracking and chat notifications, and avoid including secrets, credentials, private file contents, or sensitive error details in task names or messages. Do not add the HEARTBEAT.md cleanup rule unless you understand which task directory it will delete from. The task-ID path handling should be fixed before use in shared or sensitive environments.

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
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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 (3)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:3
Finding

Automatic Agent Activation and Unsolicited Message-Tool Use

Content
View full analysis
30s or >2 tool calls). Activate automatically — do not wait for user to request it. Unique dual-layer architecture — file persistence for crash recovery + message tool push for real-time updates. Features step-based progress, stall detection (3min), auto-cleanup, and a Python CLI. Also triggers when user asks "what's running" / "task status" / "任务进度". ``` ```markdown ### Create task → push start notification ```bash TASK_ID=$(python3 scripts/task_pulse.py create "任务名" "步骤1" "步骤2" "步骤3") ``` Then immediately call `message` tool: ``` message(action="send", message="🚀 开始【任务名】\n📋 步骤1 → 步骤2 → 步骤3\n🔄 当前: 步骤1") ``` ### Advance to next step → push progress ```bash python3 scripts/task_pulse.py next "$TASK_ID" "抓取了25条数据" ``` Then push: `message(action="send", message="✅ [1/3] 步骤1完成(抓取了25条数据)\n🔄 → 步骤2")` ``` The mandatory rules additionally state: ```markdown 1. **Always push after file update** — file update alone is invisible to users 2. **Push format**: emoji + `[done/total]` + current step + one-line info (≤3 lines) 3. **Push frequency**: every step transition; long steps max once per 30s ``` ### Technical Analysis The skill declares itself mandatory for every multi-step or sufficiently long task and explicitly tells the agent to activate it without waiting for a user request. It then requires repeated use of the `message` tool after local state updates. These instructions alter the behavior of the agent across otherwise unrelated tasks. Task names, individual steps, progress messages, errors, and results can contain operational or sensitive information. Automatically forwarding this content to the active messaging channel exceeds the behavior needed for ...[truncated 1494 chars]
Remediation
View remediation

T02 · Agent Memory Poisoning

Warning
Location
references/integration-guide.md:22
Finding

Persistent Modification of Agent Heartbeat Instructions

Content
View full analysis
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Error
Location
scripts/task_pulse.py:43
Finding

Task Identifier Path Traversal Allows Out-of-Directory JSON Access

Content
View full analysis
Remediation
View remediation
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
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (13)

Tp4

High
Category
MCP Tool Poisoning
Confidence
94% confidence
Finding

The skill claims mandatory live push notifications, automatic activation, status-trigger behavior, and a dual-layer architecture, but the content only documents manual CLI commands and suggested message calls. This mismatch is dangerous because operators may rely on progress visibility, notification, or recovery guarantees that are not actually enforced, causing silent failures, missed status reporting, or unsafe assumptions about task monitoring.

Content

No source excerpt is available for this finding.

Vague Triggers

High
Category
Not specified by scanner
Confidence
94% confidence
Finding

Triggering on broad phrases like 'what's running', 'task status', or '任务进度' without stronger scoping can cause unintended invocation during normal conversation. In a shared or multi-context environment, this may surface or modify task-tracking state for the wrong workflow, confusing users and potentially exposing metadata about active work.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest describes live push notifications via a message tool plus file persistence for crash recovery, but this script implements only a local CLI that reads and writes task JSON files and prints to stdout. There is no code for any messaging/push channel, so a central claimed behavior of the skill is absent from the implementation.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
84% confidence
Finding

The skill describes behavior that relies on writing JSON state to disk and potentially interacting with execution tooling, but it does not declare any explicit tool scope or permissions boundaries. That creates an authorization ambiguity where a host may allow broader capabilities than users or reviewers expect, increasing the risk of unintended file persistence or access to environment-backed execution context.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

Triggering on broad phrases like 'what's running', 'task status', or '任务进度' without stronger scoping can cause unintended invocation during normal conversation. In a shared or multi-context environment, this may surface or modify task-tracking state for the wrong workflow, confusing users and potentially exposing metadata about active work.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill promotes persistent JSON storage and live message pushes, but it does not provide an explicit warning or consent model for storing task details or sending outbound notifications. Task names, progress notes, links, and errors can contain sensitive business or personal information, so silent persistence and broadcasting increase privacy and data leakage risk.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The examples and prescribed push formats hard-code Chinese notification text such as '开始', '当前', '失败', and '登录过期' without indicating that language should match the user's preference. This creates a language policy concern because the skill appears to enforce a specific locale rather than offering a choice.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · references/integration-guide.md (reported line 9)May include surrounding context.

text
# In cron task message:
1. python3 task_pulse.py create "日报发布" "抓取" "筛选" "写稿" "封面" "发布" "通知"
2. After each step: task_pulse.py next + message push
3. On success: task_pulse.py done + message push  
4. On failure: task_pulse.py error + message push

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The message templates in the Start, Progress, Complete, Error, and Stall Alert sections are written exclusively in Chinese. The policy requires avoiding forced language or locale choices unless the skill offers opt-in or clearly documents a justified regional constraint, which this file does not do.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
66% confidence
Finding

This tool persists task names, step descriptions, status messages, results, and errors as JSON under a user-home directory by default, creating durable local records of potentially sensitive workflow content. In an agent context, these fields can easily contain secrets, internal filenames, investigation details, or user data, so persistence increases exposure to local users, backups, and forensic recovery if file permissions or retention are not tightly controlled.

Content

Scanner excerpt · scripts/task_pulse.py (reported line 6)May include surrounding context.

python
Live Task Pulse — CLI for real-time task tracking.

Usage:
  task_pulse.py create <name> <step1> [step2] ...   → prints taskId
  task_pulse.py next <taskId> [message]              → advance step
  task_pulse.py heartbeat <taskId> [message]         → update current step
  task_pulse.py done <taskId> [result]               → mark complete

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

This code file performs irreversible file deletion via the cleanup command, but the only disclosure is a brief usage line saying it will 'remove old completed tasks'. There is no confirmation prompt and no stronger user-facing warning near the deletion logic or command implementation to highlight that task JSON files will be permanently deleted.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The description says the skill is mandatory for long or multi-tool tasks and should activate automatically, including when users ask for running-task status. This file exposes only manual subcommands invoked via CLI arguments and contains no logic for detecting task duration/tool-call thresholds or natural-language trigger handling.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

Several user-visible status messages are hard-coded in Chinese, such as completion, no-task, running-state, error, and cleanup outputs. This imposes a specific language/locale on all users without opt-in or documented justification, which matches the language-policy violation criteria.

Content

No source excerpt is available for this finding.