Back to skill

Security audit

MacPilot : Control macOS using CLI

Security checks for vulnerabilities and agentic risk

Overview

The skill is a disclosed macOS automation toolkit, but it grants very broad control over apps, shell commands, screen contents, dialogs, and clipboard history with limited safety boundaries.

Review carefully before installing. Prefer manual or version-pinned installation, keep it project-scoped when possible, and only grant Accessibility or Screen Recording if you are comfortable with an agent controlling visible apps and reading screen content. Avoid enabling clipboard history or auto-clicking Allow/Confirm/Replace unless you explicitly requested that action and have verified the dialog or data involved.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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)

T08 · Insecure Dependencies

Warning
Location
README.md:8
Finding
Unpinned npm CLI Package Is Downloaded and Executed During Installation## Vulnerability Details **File Locations**: - `README.md:8-13` - `README.md:32-35` - `SKILL.md:8-13` - `SKILL.md:32-35` **Vulnerability Type**: Unpinned third-party package execution **Risk Level**: Medium ### Vulnerable Code The installation instructions in both `README.md` and the root `SKILL.md` contain the following command: ```markdown ## Install ```bash npx skills add adhikjoshi/macpilot-skills ``` This uses the [skills](https://github.com/vercel-labs/skills) CLI to install skills into your agent of choice. ``` The command is repeated in the quick-start section: ```bash # Install MacPilot skills into Claude Code npx skills add adhikjoshi/macpilot-skills ``` ### Technical Analysis The command invokes the npm package named `skills` through `npx` without specifying an exact package version or integrity value. If the package is not already available locally, `npx` can retrieve and execute the version currently resolved by the npm registry. Consequently, the executed installer is not fully represented by or immutable relative to the audited repository. Its behavior may change after this repository has been reviewed. Exploitation would require compromise of the relevant npm package, its publisher account, registry resolution, or another part of the package distribution chain. No evidence that the currently published package is malicious was identified during this audit. This is an insecure dependency and supply-chain pattern rather than evidence of an embedded malicious payload in the project itself. ### Attack Path 1. An attacker compromises the `skills` npm package, its publisher credentials, or its distribution path. 2. The attacker publishes a modified version containing malicious installation or runtime behavior. 3. A user follows the documented command without an explicit version: `npx skills add adhikjoshi/macpilot-skills`. 4. `npx` resolves, downloads, and executes the attacke ...[truncated 906 chars]
Remediation
## Remediation Suggestions 1. Pin the CLI to an explicitly reviewed version: ```bash npx --yes skills@<reviewed-version> add adhikjoshi/macpilot-skills ``` 2. Record and verify the expected package publisher, version, and package integrity hash before execution. 3. Prefer a lockfile-backed installation process where practical, with dependency updates handled through review. 4. Disable or separately review dependency lifecycle scripts when they are not required. 5. Retain and prominently document the manual installation method for security-sensitive environments, because copying the reviewed `SKILL.md` files avoids executing a remotely resolved installer. 6. Apply the same corrected instructions to both `README.md` and the root `SKILL.md` so the duplicated documentation remains consistent.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (30)

Ae1

High
Category
analysis-evasion
Content
If you prefer not to use `npx skills`, copy any `SKILL.md` file to your agent's skills directory:
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Memory Manipulation

High
Category
Memory Poisoning
Content
macpilot clipboard history stop --json     # Stop tracking
macpilot clipboard history list --json     # Show history
macpilot clipboard history search "text"   # Search history
macpilot clipboard history clear --json    # Delete history
```

### Shell Commands
Confidence
80% confidence
Finding
Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.

Self-Modification

High
Category
Rogue Agent
Content
macpilot dialog select "readme.md" --confirm
```

### Handle "Replace Existing File" Confirmation
```bash
macpilot dialog click-button "Save"
macpilot wait seconds 0.5
Confidence
85% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The README advertises broad macOS automation through Accessibility APIs, including interacting with apps, windows, dialogs, and screenshots, but does not prominently warn that these capabilities can change system state and act on sensitive UI. In agent-assisted contexts, such capabilities can amplify harmful or mistaken actions because the user may not appreciate the scope of control being granted.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Rp1

Medium
Category
MCP Rug Pull
Confidence
70% confidence
Finding
npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.

Missing User Warnings

Medium
Confidence
88% confidence
Finding
Mentioning clipboard history/search and shell capabilities without any warning is more dangerous than generic automation because both can expose secrets or execute impactful commands. In the context of an agent skill set, these features materially increase the risk of credential leakage, data exfiltration, and unintended system modification if misused.

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
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.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding
The documentation instructs users to run `npx skills add adhikjoshi/macpilot-skills` without pinning a specific version. This can lead to supply-chain risk because the package resolved by `npx` may change over time, and users may unknowingly install a newer or compromised release. The risk is amplified because the installed skills enable broad macOS automation with Accessibility and shell capabilities.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The skill descriptions advertise broad automation features including shell, system controls, clipboard access, UI interaction, and file-dialog handling, but do not include an explicit warning about their ability to affect user data or system integrity. In this context, omission matters because users may underestimate the privilege and potential destructiveness of these capabilities once granted Accessibility and related permissions.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding
The quick-start section again uses `npx skills add adhikjoshi/macpilot-skills` without a pinned version, creating a repeatable supply-chain exposure. If the referenced package or its dependencies are updated maliciously or unexpectedly, users may install altered automation instructions with elevated local capabilities.

Rp1

Medium
Category
MCP Rug Pull
Confidence
84% confidence
Finding
The manual install section references `npx skills` conceptually without a pinned version, preserving the same package-resolution risk elsewhere in the file. Because this skill set is meant for automation agents that can control UI, clipboard, shell, and windows, a compromised install path could have meaningful local impact.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
Confidence
85% 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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
Confidence
85% 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.

Session Persistence

Medium
Category
Rogue Agent
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
Confidence
72% confidence
Finding
The manual installation instructions copy the skill into persistent project or global agent skill directories, causing the automation capability to survive across sessions. Persistence is not inherently malicious here, but it does increase risk because future agent runs may automatically have access to high-privilege macOS automation behaviors without renewed scrutiny.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
```bash
# Claude Code (project scope)
mkdir -p .claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md ~/.claude/skills/macpilot-automation/
```
Confidence
85% 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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
cp skills/macpilot-automation/SKILL.md .claude/skills/macpilot-automation/

# Claude Code (global scope)
mkdir -p ~/.claude/skills/macpilot-automation
cp skills/macpilot-automation/SKILL.md ~/.claude/skills/macpilot-automation/
```
Confidence
85% 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.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
This skill advertises broad UI automation, keyboard/mouse control, app control, and shell execution, all of which can perform destructive or privacy-invasive actions on the host system. Presenting these capabilities as standard usage without a prominent safety warning or authorization boundary makes unsafe execution more likely, especially in an agentic context where commands may be chained autonomously.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The skill explicitly documents starting a background clipboard history daemon that captures and retains clipboard contents, but provides no warning about the privacy implications or need for user consent. Because clipboard data often contains passwords, tokens, PII, and sensitive business text, normalizing this capability without guardrails increases the risk of covert collection and later exfiltration.

Missing User Warnings

Medium
Confidence
97% confidence
Finding
The skill recommends using `click-primary` to automatically accept the default button, and notes fallback labels such as OK, Allow, Open, Save, Continue, Yes, and Confirm. In native macOS dialogs across arbitrary applications, this can approve sensitive, destructive, or security-relevant actions without validating the dialog content or user intent.

Static analysis

No suspicious patterns detected.