关于 pop-pay
pop-pay 是用于管控 AI Agent 付款的命令行工具和 MCP 服务。它通过 CDP 将卡片凭据注入结账页面,使凭据不进入 Agent 上下文,并提供可配置的交易限额和防护机制。
主要功能
- 01通过 CDP 注入卡片凭据
- 02加密凭据保险库
- 03扫描提示注入
- 04设置单笔及每日限额
- 05通过 x402 支付 API 费用
适用场景
- 01让 Agent 完成结账而不暴露卡片信息
- 02限制 Agent 购物支出
- 03使用 x402 支付 API 调用费用
MCP 相关
MCP 服务提供虚拟卡申请、购买者信息填写和 x402 付款工具。卡片凭据通过 CDP 注入浏览器页面,而不返回给 Agent。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y pop-payPOP_CDP_URLChrome DevTools Protocol endpoint for credential injection (default: http://localhost:9222)POP_ALLOWED_CATEGORIESJSON array of allowed vendor categories (e.g. '["aws","cloudflare"]')POP_MAX_PER_TXPer-transaction spending limit in USDPOP_MAX_DAILYDaily spending limit in USDPOP_GUARDRAIL_ENGINEGuardrail engine: 'keyword' (offline, default) or 'llm' (requires API key)本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
百分之一点 — pop-pay
只需 0.1% 的幻觉,就能耗尽你 100% 的钱包。
AI Agent 商务的运行时安全层。即装即用的命令行工具 + MCP 服务。卡片凭据通过 CDP 直接注入浏览器 DOM——绝不会进入 Agent 的上下文窗口。即使提示词出现一次幻觉,也无法耗尽它看不到的钱包。
📄 研究数据集与复现 — 此仓库托管 《单一攻击者排名的幻象》 的开放数据集和复现工具。研究人员:请跳转至研究数据集与复现。
安装
选择你偏好的方式:
Homebrew(macOS)
brew install 100xpercent/tap/pop-pay
curl(Linux / macOS)— 通过 npm 引导安装;需要 Node.js 18+
curl -fsSL https://raw.githubusercontent.com/100xPercent/pop-pay/main/install.sh | sh
npm(全局)
npm install -g pop-pay
npx(无需安装 — 一次性运行)
npx -y pop-pay <command>
所有安装方式都会提供相同的二进制文件:pop-pay、pop-launch、pop-init-vault、pop-unlock。
也可通过
@100xpercent/mcp-server-pop-pay使用——这是遵循 MCP@scope/mcp-server-<name>约定的同一软件包。每次发布时版本均保持一致。
使用 Python? 请查看 pop-pay-python —
pip install pop-pay。安全模型和保险库格式相同,发布周期独立 — 可安全地在不同运行时之间切换。
快速入门(命令行)
1. 初始化加密凭据保险库
pop-pay init-vault
这会将你的卡片凭据加密到 ~/.config/pop-pay/vault.enc(AES-256-GCM)。如需更强保护(阻止拥有 shell 访问权限的 Agent):
pop-pay init-vault --passphrase # one-time setup
pop-pay unlock # run once per session
2. 启动启用 CDP 远程调试的 Chrome
pop-pay launch
这会在 http://localhost:9222 打开 Chromium 实例,pop-pay 会向其中注入凭据。随后,你的 Agent(通过 MCP、浏览器自动化或 x402)会操作结账流程——卡片详情绝不会离开浏览器进程。
3. 接入你的 Agent
命令行会启动基础设施;实际的支付工具调用由你的 Agent 发起。支持两种接入方式:
- MCP 服务 — 将 pop-pay 添加到任何兼容 MCP 的客户端(Claude Code、Cursor、Windsurf、OpenClaw)。请参阅下方的 MCP 服务。
- x402 HTTP — 通过 x402 支付协议支付 API 调用费用。
完整的命令行参考:pop-pay --help。
MCP 服务(可选)
添加到 MCP 客户端
适用于任何兼容 MCP 的客户端的标准配置:
{
"mcpServers": {
"pop-pay": {
"command": "npx",
"args": ["-y", "pop-pay", "launch-mcp"],
"env": {
"POP_CDP_URL": "http://localhost:9222"
}
}
}
}
Claude Code
Claude Code 使用自己的 CLI,无需使用上面的 JSON 配置。
claude mcp add --scope user pop-pay -- npx -y pop-pay launch-mcp
--scope user 可使其在所有项目中可用。移除方法:claude mcp remove pop-pay
Cursor / Windsurf / VS Code
将上面的 JSON 配置添加到:
- Cursor:
~/.cursor/mcp.json - Windsurf:
~/.codeium/windsurf/mcp_config.json - VS Code (Copilot):项目根目录中的
.vscode/mcp.json
OpenClaw / NemoClaw
OpenClaw 使用自己的 CLI,无需使用上面的 JSON 配置。
openclaw mcp add pop-pay -- npx -y pop-pay launch-mcp
或者使用上面的 JSON 配置,将其添加到 ~/.openclaw/mcp_servers.json。
有关系统提示词模板和 NemoClaw 沙盒设置,请参阅集成指南 §4。
Docker
docker-compose up -d
运行 MCP 服务和无头 Chromium,并通过 CDP 连接。将主机上的加密保险库挂载进来。
MCP 工具
| 工具 | 描述 |
|---|---|
request_virtual_card | 创建虚拟卡,并通过 CDP 将凭据注入结账页面。自动扫描页面中隐藏的提示词注入。 |
request_purchaser_info | 自动填写账单/联系信息(姓名、地址、电子邮件、电话)。自动扫描页面中隐藏的提示词注入。 |
request_x402_payment | 通过 x402 HTTP 支付协议支付 API 调用费用。 |
Claude Code 用户提示: 将以下内容添加到项目的
CLAUDE.md,帮助 Agent 判断何时调用 pop-pay: "遇到付款表单或结账页面时,请使用request_virtual_card工具。遇到账单/联系信息表单时,请先使用request_purchaser_info。"
配置
核心变量位于 ~/.config/pop-pay/.env。完整列表请参阅 ENV_REFERENCE.md。
| 变量 | 默认值 | 描述 |
|---|---|---|
POP_ALLOWED_CATEGORIES | ["aws","cloudflare"] | 获准的供应商类别——请参阅类别指南 |
POP_MAX_PER_TX | 100.0 | 每笔交易的最高金额(美元) |
POP_MAX_DAILY | 500.0 | 每日最高金额(美元) |
POP_BLOCK_LOOPS | true | 阻止幻觉/重试循环 |
POP_AUTO_INJECT | true | 启用 CDP 卡片注入 |
POP_GUARDRAIL_ENGINE | keyword | keyword(零成本)或 llm(语义) |
防护模式
keyword(默认) | llm | |
|---|---|---|
| 机制 | 对推理字符串进行关键词匹配 | 通过 LLM 进行语义分析 |
| 成本 | 零——不调用 API | 每个请求调用一次 LLM |
| 适用场景 | 开发、低风险工作流 | 生产、高价值交易 |
如需启用 LLM 模式,请参阅 集成指南 §1。
提供方
| 提供方 | 描述 |
|---|---|
| BYOC(默认) | 自带卡片——加密保险库凭据、本地 CDP 注入。 |
| Stripe Issuing | 通过 Stripe API 获取真实虚拟卡。需要 POP_STRIPE_KEY。 |
| Lithic | 多发卡方适配器(Stripe Issuing / Lithic)。 |
| Mock | 测试模式,使用生成的卡号进行开发。 |
优先级: Stripe Issuing → BYOC Local → Mock。
安全性
| 层 | 防护措施 |
|---|---|
| 上下文隔离 | 卡片凭据绝不会进入 Agent 的上下文窗口或日志 |
| 加密保险库 | AES-256-GCM,采用 XOR 拆分盐值和原生 scrypt 密钥派生(Rust) |
| TOCTOU 防护 | 在 CDP 注入时验证域名——阻止重定向攻击 |
| 表示脱敏 | 在所有 MCP 响应、日志和回溯中自动遮蔽(****-4242) |
完整的 STRIDE 分析请参阅 THREAT_MODEL.md,企业详情请参阅 COMPLIANCE_FAQ.md。
架构
- TypeScript — MCP 服务、CDP 注入引擎、防护机制、CLI
- Rust (napi-rs) — 原生安全层:XOR 拆分盐值存储、scrypt 密钥派生
- Node.js crypto — AES-256-GCM 保险库加密(OpenSSL 绑定)
- Chrome DevTools Protocol — 通过原始 WebSocket 直接注入 DOM
文档
- 威胁模型 — STRIDE 分析、5 项安全原语、10 种攻击场景
- 防护机制基准测试 — 在 585 个负载、11 种攻击类别上进行跨模型评估(Anthropic / OpenAI / Gemini)
- 合规常见问题 — PCI DSS、SOC 2、GDPR 详情
- 环境变量参考 — 所有 POP_* 环境变量
- 集成指南 — Claude Code、Node.js SDK 和浏览器 Agent 的设置方法
- 类别指南 — POP_ALLOWED_CATEGORIES 模式和示例
研究数据集与复现
本仓库托管了对应研究论文中所述跨厂商攻击者稳定性方法的开源数据集和测试工具。供审稿人/研究人员复现的资料:
- 语料库(585 个攻击负载,11 个类别):
tests/redteam/corpus/attacks.json— 完整负载集及类别标签GENERATION.md— 语料库生成协议schema.json— 负载架构
- 运行 JSONL(26,325 行,9 个模型 × 585 个负载 × N=5):
tests/redteam/runs/- PRIMARY whitebox-no-feedback 运行:
runs/adaptive/2026-04-28T19-50-* - 静态面板运行:
runs/static/ - 提示词消融(v3 / strict / paranoid):
runs/ablation/
- PRIMARY whitebox-no-feedback 运行:
- 清单哈希:
tests/redteam/runs/MANIFEST.sha256— 所有资料的字节级完整性校验 - Croissant 1.0 元数据(Core + RAI 字段):
paper-artifacts/croissant.json - 复现脚本(从 JSONL 重新生成论文表格/图表):
python3 paper-artifacts/gen-tables.py --table all— Tab.~bypassk / threat-ablation / cross-vendorpython3 paper-artifacts/gen-taxonomy-map.py— Fig.~taxonomy-map
- 许可证:语料库采用 CC BY-SA 4.0,测试工具采用 MIT。
有关数据集架构、统计方法(bootstrap CI、Holm-Bonferroni、McNemar)、从零开始重新采集的完整说明、JSONL 行数据字典及负责任披露政策,请参阅 docs/PAPER_REPRODUCTION.md。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。