Back to skill

Security audit

Acpx

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent guide for using acpx, but it encourages high-trust agent execution with unpinned npm packages, auto-approval modes, and persistent local session and credential storage without enough guardrails.

Review this carefully before installing. Use pinned, vetted package versions where possible, avoid approve-all except in isolated disposable environments, prefer approve-reads or deny-all for untrusted repositories, and treat ~/.acpx config, session history, and auth entries as sensitive local data.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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
Findings (2)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:38
Finding

Unpinned Third-Party Packages Are Installed and Executed

Content
View full analysis
`npx @zed-industries/codex-acp` - `claude` -> `npx @zed-industries/claude-agent-acp` - `gemini` -> `gemini` - `opencode` -> `npx opencode-ai` - `pi` -> `npx pi-acp` ``` ### Technical Analysis The installation instructions globally install `acpx` without pinning a reviewed version. Several built-in agent definitions also invoke npm packages through `npx` without explicit versions, lockfiles, or integrity hashes. Because dependency resolution can select releases published after this skill was reviewed, the effective code executed on a user's system is mutable. The skill package does not include the dependency source, a lockfile, or cryptographic integrity information that would allow the executed package contents to be verified against an audited release. This creates a supply-chain exposure: compromise of a referenced package, its publisher account, or a later package release could cause arbitrary package installation hooks or runtime code to execute under the invoking user's account. ### Attack Path 1. An attacker compromises a referenced npm package, its publisher account, or the package distribution process. 2. The attacker publishes a malicious version under the package name referenced by the skill. 3. A user follows the documented global installation command or starts an agent whose registry entry uses unversioned `npx`. 4. npm resolves and downloads the mutable package release. 5. Malicious installation hooks or package runtime code execute with the privileges of the user running `npm`, `npx`, or `acpx`. 6. The malicious code can access resources available to that user, subject to operating-system controls. ### Impact Assessment Successful exploitation could provide arbitrary code execution with the invoking user's pri ...[truncated 546 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:317
Finding

Documented Workflow Automatically Approves All Agent Permission Requests

Content
View full analysis
`: raw ACP agent command (escape hatch) - `--cwd `: working directory for session scope (default: current directory) - `--approve-all`: auto-approve all permission requests - `--approve-reads`: auto-approve reads/searches, prompt for writes (default mode) - `--deny-all`: deny all permission requests ``` ```markdown - `--approve-all`: no interactive permission prompts - `--approve-reads` (default): approve reads/searches, prompt for writes - `--deny-all`: deny all permission requests If every permission request is denied/cancelled and none approved, `acpx` exits with permission-denied status. ``` ```markdown Repo-scoped review with permissive mode: ```bash acpx --cwd ~/repos/shop --approve-all codex -s pr-842 \ 'review PR #842 for regressions and propose minimal patch' ``` ``` ### Technical Analysis The documented repository-review workflow uses `--approve-all`, which removes interactive authorization for every permission request made by the selected agent. Reviewing a repository and proposing a patch does not inherently require unrestricted approval of all operations, so this example violates least-privilege principles. The risk is amplified because the CLI can launch external adapters, including raw commands through `--agent`, and agents may process attacker-controlled repository files or instructions. If an adapter is compromised, behaves incorrectly, or follows malicious content from a repository, automatic approval removes the user confirmation boundary that would otherwise restrict sensitive writes or command execution. The flag is an explicit feature rather than a hidden escalation mechanism. Nevertheless, presenting it as a practical review workflow can encourage users to grant authority be ...[truncated 1375 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (9)

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The skill documents npx @zed-industries/codex-acp as a runtime-resolved package without pinning a specific version. Because npx fetches the latest package at execution time, a compromised publisher account, typosquat, or malicious upstream update could cause arbitrary code execution on the user's machine when the referenced agent is launched.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
94% confidence
Finding

The documented command npx @zed-industries/claude-agent-acp pulls and executes remote code without version pinning. In this skill's context, that code is an ACP agent process with filesystem and terminal interaction capabilities, so an unsafe upstream update could materially expand impact beyond a simple package install.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The skill maps opencode to npx opencode-ai without a pinned version, meaning the executed agent binary is selected at runtime from the npm registry. Since this tool is intended for agent-to-agent automation and may be run non-interactively, supply-chain compromise could lead to silent arbitrary code execution in automated environments.

Content

No source excerpt is available for this finding.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding

The reference npx pi-acp is unpinned and therefore trusts the latest registry state at execution time. Because the skill presents this as a built-in agent option, users may treat it as trusted infrastructure even though it is effectively remote code execution from an external package source.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

--approve-all enables the agent to proceed without human approval for permission-gated actions, which is a real security concern in an automation CLI. While the feature is likely intentional rather than malicious, it increases the blast radius of prompt injection, agent misbehavior, or unsafe tool use by removing a key control point.

Content

Scanner excerpt · SKILL.md (reported line 181)May include surrounding context.

md
- `--agent <command>`: raw ACP agent command (escape hatch)
- `--cwd <dir>`: working directory for session scope (default: current directory)
- `--approve-all`: auto-approve all permission requests
- `--approve-reads`: auto-approve reads/searches, prompt for writes (default mode)
- `--deny-all`: deny all permission requests
- `--format <fmt>`: output format (`text`, `json`, `quiet`)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The documentation exposes --approve-all as a normal option without a clear caution that it disables interactive permission checks. In this skill's context, the flag can enable autonomous filesystem or terminal actions by an agent process, making accidental misuse materially more dangerous than a generic convenience option.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

--approve-reads automatically approves read/search actions, which still constitutes autonomous decision-making over potentially sensitive repository contents. In an agent communication tool with persistent sessions and structured automation, silent read approval can expose secrets, credentials, or proprietary code to an agent or downstream adapter without deliberate user review.

Content

Scanner excerpt · SKILL.md (reported line 182)May include surrounding context.

md
- `--agent <command>`: raw ACP agent command (escape hatch)
- `--cwd <dir>`: working directory for session scope (default: current directory)
- `--approve-all`: auto-approve all permission requests
- `--approve-reads`: auto-approve reads/searches, prompt for writes (default mode)
- `--deny-all`: deny all permission requests
- `--format <fmt>`: output format (`text`, `json`, `quiet`)
- `--timeout <seconds>`: max wait time (positive number)

Session Persistence

Medium
Category
Rogue Agent
Confidence
89% confidence
Finding

The skill explicitly documents persistent session storage under ~/.acpx/sessions/*.json, including metadata and history previews, which creates a real data-retention and disclosure risk. In this context, persistent agent prompts may contain source code, secrets, operational details, or user instructions, and the documentation does not describe encryption, redaction, retention limits, or access protections.

Content

Scanner excerpt · SKILL.md (reported line 208)May include surrounding context.

md
- `agents` map (`name -> { command }`)
- `auth` map (`authMethodId -> credential`)

Use `acpx config show` to inspect the resolved config and `acpx config init` to create the global template.

## Session behavior

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
84% confidence
Finding

The skill describes authentication via environment/config credentials and persistent storage of session/config data, but it does not explicitly warn users that prompts, metadata, history, and credentials may contain sensitive information. In an agent orchestration tool, omission of that warning increases the likelihood that secrets or regulated data will be stored on disk or exposed via inspection commands unintentionally.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.