Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

Pop Pay Skill

v0.6.23

Your card stays on your PC — no SaaS, no login, no external account. Credentials inject directly, keeping them out of the AI's context window.

1· 130·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for tpemist/pop-pay-python.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Pop Pay Skill" (tpemist/pop-pay-python) from ClawHub.
Skill page: https://clawhub.ai/tpemist/pop-pay-python
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Required env vars: POP_ALLOWED_CATEGORIES, POP_MAX_AMOUNT_PER_TX, POP_MAX_DAILY_BUDGET, POP_AUTO_INJECT, POP_REQUIRE_HUMAN_APPROVAL, POP_GUARDRAIL_ENGINE
Required binaries: pop-pay
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install pop-pay-python

ClawHub CLI

Package manager switcher

npx clawhub@latest install pop-pay-python
Security Scan
Capability signals
CryptoCan make purchases
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
medium confidence
Purpose & Capability
The name/description (local card injection via a local 'pop-pay' binary) matches the declared required binary and the spend-policy env vars — those are appropriate for a local payment injector. However, the SKILL.md references additional runtime configuration (e.g., POP_LLM_API_KEY for optional LLM guardrails and POP_WEBHOOK_URL for notifications) and a spend-policy file at ~/.config/pop-pay/.env that are not listed in requires.env or required config paths in the registry metadata. The SKILL.md also instructs users to pip install pop-pay from PyPI (an external install step not captured in the skill registry).
!
Instruction Scope
The runtime instructions instruct the agent to call local tools (request_purchaser_info / request_virtual_card) and to pass 'reasoning' and page URLs. Those arguments could contain arbitrary agent context; the skill claims the card never appears in the agent context, but the protocol still exposes purchase metadata to the injector. SKILL.md expects a local keychain, a guardrail engine (keyword or optional LLM), and a local config file — yet the registry metadata omitted the config path and optional envs referenced in the docs. The instructions also direct the user to modify OpenClaw config to run a local MCP server for 'pop-pay', which is normal but increases the attack surface if the binary is untrusted.
!
Install Mechanism
This is an instruction-only skill with no registry install spec, but SKILL.md tells users to pip install pop-pay from PyPI. Relying on an external package from PyPI is a supply-chain risk; the registry should either include a vetted install spec or clearly document provenance and hashes. No code shipped with the skill means the registry cannot guarantee what the 'pop-pay' binary will do once installed.
!
Credentials
The declared required env vars (POP_ALLOWED_CATEGORIES, POP_MAX_AMOUNT_PER_TX, POP_MAX_DAILY_BUDGET, POP_AUTO_INJECT, POP_REQUIRE_HUMAN_APPROVAL, POP_GUARDRAIL_ENGINE) are appropriate for controlling spend policy. However, the SKILL.md references additional env/config items (POP_LLM_API_KEY, POP_WEBHOOK_URL) that are not declared in requires.env. POP_WEBHOOK_URL in particular could forward events to an external endpoint (possible exfiltration vector) if enabled by the user — the registry should have declared it. The skill requests no primary credential (card is in system keychain), which is coherent, but the number and sensitivity of envs plus the undocumented optional endpoints are concerning.
Persistence & Privilege
always:false (default) is appropriate. The skill is allowed to be invoked autonomously (disable-model-invocation:false) which is the platform default, but because this skill can cause real-world charges, autonomous invocation increases risk. Recommend enabling POP_REQUIRE_HUMAN_APPROVAL by default or disabling autonomous invocation for payment actions until the operator reviews the binary and config.
What to consider before installing
Things to check before installing/using this skill: - Do not pip install the package blindly. Inspect the pop-pay PyPI package source (or install from the GitHub repo) and verify the code that reads the keychain and performs CDP injection. Prefer installing in an isolated/testing environment first. - Ask the maintainer or registry to add an explicit install spec and a reproducible provenance (release tarball with checksum, signed release, or direct GitHub release URL). Registry metadata should list optional envs (POP_LLM_API_KEY, POP_WEBHOOK_URL) and the config path (~/.config/pop-pay/.env). - Treat POP_WEBHOOK_URL as dangerous unless you control the receiving endpoint. Keep webhooks disabled unless you explicitly need them. - Prefer POP_GUARDRAIL_ENGINE=keyword and set POP_REQUIRE_HUMAN_APPROVAL=true (manual confirmation) to avoid autonomous charges while you audit behavior. - Audit permissions: ensure the local system keychain access policy and the pop-pay binary’s access to it are acceptable; consider running pop-pay under a limited account. - If you rely on the optional LLM guardrail, keep your API key private and verify how/when it is used; the skill should document where that key is read (it currently does not list it in requires.env). - If uncertain, classify this skill as high-risk until you can review the installed binary/source code; the registry entry and SKILL.md contain inconsistent declarations that should be clarified.

Like a lobster shell, security has layers — review code before you run it.

Runtime requirements

Binspop-pay
EnvPOP_ALLOWED_CATEGORIES, POP_MAX_AMOUNT_PER_TX, POP_MAX_DAILY_BUDGET, POP_AUTO_INJECT, POP_REQUIRE_HUMAN_APPROVAL, POP_GUARDRAIL_ENGINE
latestvk979a364q6n46m9tm0d4daje6h846fck
130downloads
1stars
6versions
Updated 2w ago
v0.6.23
MIT-0

What This Skill Does

Gives your OpenClaw agent the ability to pay at any online store using your own existing credit card — no account to create, no SaaS subscription, no external service to trust.

Your card number is stored in your local system keychain and is never placed in the agent's context window. When payment is approved, credentials are injected directly into the browser's payment form via CDP (Chrome DevTools Protocol — an open protocol maintained by Google) in a separate process — the agent never sees them. If your agent is compromised by a prompt injection attack, the attacker cannot steal your card.


Privacy & Data Flow

All payment logic runs on your machine. There are no Point One Percent servers involved in the payment path.

ComponentDefaultData stays
Card credentialsLocal system keychainYour machine only
Spend policy~/.config/pop-pay/.envYour machine only
Guardrail enginekeyword mode (zero API calls)Your machine only
Guardrail engine (optional)llm mode — uses your own API keyYour API provider
Webhook notificationsDisabled by default — only active if POP_WEBHOOK_URL is setYour chosen endpoint

Keyword guardrail (default): evaluates transactions locally with no external calls. LLM guardrail (opt-in): uses your own POP_LLM_API_KEY — no data is sent to Point One Percent.


Setup (One Time)

# Install from PyPI (https://pypi.org/project/pop-pay/)
pip install pop-pay
pop-pay setup          # securely stores your card in the system keychain
pop-pay setup --profile   # stores billing info (name, address, email)

Then add to your OpenClaw config:

{
  "mcpServers": {
    "pop-pay": {
      "command": "pop-pay",
      "args": ["serve"]
    }
  }
}

Set your spend policy in ~/.config/pop-pay/.env:

POP_ALLOWED_CATEGORIES=["amazon","shopify","aws"]
POP_MAX_AMOUNT_PER_TX=100
POP_MAX_DAILY_BUDGET=300
POP_AUTO_INJECT=true          # set to false to review injections manually
POP_REQUIRE_HUMAN_APPROVAL=false  # set to true for manual confirmation on every payment

Tools

request_purchaser_info

When to call: You are on a contact/billing info page with fields for name, email, phone, or address — but no credit card fields are visible yet.

request_purchaser_info(
    target_vendor: str,   # e.g. "Amazon", "Shopify" — NOT a URL
    page_url: str,        # current browser page URL
    reasoning: str        # why you are filling this form
)
  • Injects name, email, phone, and address from the user's stored profile
  • Does NOT issue a card, does NOT charge anything, does NOT affect the budget
  • After this completes, navigate to the payment page and call request_virtual_card

request_virtual_card

When to call: You are on the checkout/payment page and credit card input fields are visible.

request_virtual_card(
    requested_amount: float,  # exact amount shown on screen
    target_vendor: str,       # e.g. "Amazon" — NOT a URL
    reasoning: str,           # explain why this purchase should happen
    page_url: str             # current checkout page URL
)
  • Evaluates the purchase against the user's spend policy (amount limits, allowlist)
  • Runs a guardrail check: evaluates whether this purchase should happen given the agent's current task context — not just whether it can (within budget)
  • Automatically scans the checkout page for prompt injection attacks before issuing the card
  • If approved, credentials are injected directly into the browser form via CDP — never passed to the agent
  • Returns: approved (with last 4 digits) or rejected (with reason)

After approval: Click the submit/pay button. The card has been filled automatically.


Usage Flow

Agent navigates to product page
  ↓
Agent clicks "Checkout" / "Proceed to payment"
  ↓
[If billing page appears first]
  → call request_purchaser_info(vendor, page_url, reasoning)
  → click Continue/Next
  ↓
[When payment/card fields are visible]
  → call request_virtual_card(amount, vendor, reasoning, page_url)
     (security scan runs automatically inside this call)
  ↓
[If approved]
  → click Submit / Place Order

Security Model

Propertypop-pay
Card number in agent contextNever
Stored locally (no external account)Yes — system keychain
Works with existing credit cardYes
Works with any merchantYes (any checkout form)
No SaaS / no login requiredYes
Guardrail (SHOULD vs CAN)Yes — keyword or LLM mode
Prompt injection scan on every paymentYes — automatic
Open source / auditableMIT

Prompt injection resistance: The card is injected by a separate local process (CDP injector) that activates only after guardrail approval. A malicious merchant cannot steal the card via hidden DOM instructions — the agent never had it.


Spend Policy Reference

Env varDefaultDescription
POP_ALLOWED_CATEGORIES[]JSON array of allowed vendor keywords
POP_MAX_AMOUNT_PER_TXrequiredMax per transaction (USD)
POP_MAX_DAILY_BUDGETrequiredMax total spend per day (USD)
POP_GUARDRAIL_ENGINEkeywordkeyword (local, zero API cost) or llm (semantic, needs API key)
POP_REQUIRE_HUMAN_APPROVALfalseAlways require human confirmation before payment
POP_AUTO_INJECTtrueEnable CDP auto-injection into checkout forms
POP_WEBHOOK_URL(disabled)Optional: POST notifications to Slack/Teams/PagerDuty

Example: Agent Buys Office Supplies on Amazon

# Agent has been asked: "Order a USB-C hub from Amazon, around $40"

# Step 1: Navigate to Amazon, find the product, add to cart, proceed to checkout

# Step 2: On billing info page
result = request_purchaser_info(
    target_vendor="Amazon",
    page_url="https://www.amazon.com/checkout/address",
    reasoning="Filling billing address for USB-C hub purchase as instructed by user"
)
# → Billing info injected. Click Continue.

# Step 3: On payment page — security scan runs automatically inside this call
result = request_virtual_card(
    requested_amount=43.99,
    target_vendor="Amazon",
    reasoning="Purchasing USB-C hub for home office setup as instructed by user",
    page_url="https://www.amazon.com/checkout/payment"
)
# → Approved. Card injected via CDP. Click "Place your order".

GitHub

github.com/TPEmist/Point-One-Percent

Comments

Loading comments...