Scan Report
5 /100
virtuals-protocol-acp
Agent Commerce Protocol (ACP) CLI — wallet, marketplace, token, and seller runtime for AI agents
This is a legitimate Agent Commerce Protocol CLI for the Virtuals Protocol. It provides marketplace job management, agent token launching, and a seller runtime. All observed behavior is declared in SKILL.md and matches the implementation.
Safe to install
This skill is safe to use. No security issues detected.
Findings 1 items
| Severity | Finding | Location |
|---|---|---|
| Low | Dependencies use unpinned caret ranges Supply Chain | package.json:1 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | WRITE | WRITE | ✓ Aligned | src/lib/config.ts writes config.json; src/commands/sell.ts creates offering.json… |
| Network | READ | READ | ✓ Aligned | src/lib/client.ts makes HTTPS calls to claw-api.virtuals.io; src/seller/runtime/… |
| Shell | WRITE | WRITE | ✓ Aligned | src/lib/open.ts uses exec() to open OAuth browser URL (declared in SKILL.md setu… |
| Environment | READ | READ | ✓ Aligned | src/lib/config.ts loadApiKey() reads LITE_AGENT_API_KEY from process.env for leg… |
| Skill Invoke | NONE | NONE | — | No skill invocation capabilities observed |
| Clipboard | NONE | NONE | — | No clipboard access observed |
| Browser | NONE | NONE | — | No browser automation observed |
| Database | NONE | NONE | — | No direct database access observed |
11 findings
Medium External URL 外部 URL
https://app.virtuals.io/acp README.md:3 Medium External URL 外部 URL
https://virtuals.io README.md:3 Medium External URL 外部 URL
https://app.virtuals.io SKILL.md:5 Medium External URL 外部 URL
https://dotenvx.com package-lock.json:548 Medium Wallet Address 加密货币钱包地址
0x1234567890123456789012345678901234567890 references/agent-wallet.md:23 Medium Wallet Address 加密货币钱包地址
0x833589fcd6edb6e08f4c7c32d4f71b54bda02913 references/agent-wallet.md:73 Medium External URL 外部 URL
https://api.example.com/market-data references/seller.md:448 Medium External URL 外部 URL
https://api.example.com/endpoint src/commands/sell.ts:658 Medium External URL 外部 URL
https://app.virtuals.io/prototypes/$ src/commands/token.ts:74 Medium External URL 外部 URL
https://acpx.virtuals.io src/lib/auth.ts:16 Medium External URL 外部 URL
https://claw-api.virtuals.io src/lib/client.ts:15 File Tree
34 files · 200.3 KB · 6494 lines TypeScript 23f · 3873L
Markdown 6f · 1354L
JSON 4f · 1033L
Shell 1f · 234L
├─
▾
bin
│ └─
acp.ts
TypeScript
├─
▾
references
│ ├─
acp-job.md
Markdown
│ ├─
agent-token.md
⚠
Markdown
│ ├─
agent-wallet.md
Markdown
│ └─
seller.md
Markdown
├─
▾
src
│ ├─
▾
commands
│ │ ├─
agent.ts
TypeScript
│ │ ├─
browse.ts
TypeScript
│ │ ├─
job.ts
TypeScript
│ │ ├─
profile.ts
TypeScript
│ │ ├─
sell.ts
TypeScript
│ │ ├─
serve.ts
TypeScript
│ │ ├─
setup.ts
TypeScript
│ │ ├─
token.ts
⚠
TypeScript
│ │ └─
wallet.ts
TypeScript
│ ├─
▾
lib
│ │ ├─
api.ts
TypeScript
│ │ ├─
auth.ts
TypeScript
│ │ ├─
client.ts
TypeScript
│ │ ├─
config.ts
TypeScript
│ │ ├─
open.ts
TypeScript
│ │ ├─
output.ts
TypeScript
│ │ └─
wallet.ts
TypeScript
│ └─
▾
seller
│ └─
▾
runtime
│ ├─
acpSocket.ts
TypeScript
│ ├─
offerings.ts
TypeScript
│ ├─
offeringTypes.ts
TypeScript
│ ├─
seller.ts
TypeScript
│ ├─
sellerApi.ts
TypeScript
│ └─
types.ts
TypeScript
├─
_meta.json
JSON
├─
package-lock.json
JSON
├─
package.json
JSON
├─
README.md
Markdown
├─
SKILL.md
Markdown
├─
test-cli.sh
Shell
└─
tsconfig.json
JSON
Dependencies 3 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
axios | ^1.13.4 | npm | No | Caret range — consider pinning |
dotenv | ^16.4.5 | npm | No | Caret range — consider pinning |
socket.io-client | ^4.8.1 | npm | No | Caret range — consider pinning |
Security Positives
✓ SKILL.md accurately documents all commands and capabilities — no doc-to-code mismatch
✓ API keys are stored in config.json and redacted in CLI output (redactApiKey function)
✓ No base64-encoded execution, eval(), or obfuscation observed
✓ No access to sensitive paths (~/.ssh, ~/.aws, .env) — filesystem access is scoped to repo root only
✓ No credential harvesting or data exfiltration — only reads LITE_AGENT_API_KEY for its own authentication
✓ OAuth browser flow is standard and declared for user-interactive login
✓ Seller runtime executes user-authored handlers only for registered job offerings on ACP
✓ All network traffic targets declared Virtuals Protocol endpoints (claw-api.virtuals.io, acpx.virtuals.io, app.virtuals.io)
✓ WebSocket socket.io-client is used for legitimate real-time job dispatch from ACP network
✓ process.kill(pid, 'SIGTERM') used only for stopping the seller's own daemon process