Back to skill

Security audit

JPMorgan Claw - Give your Claw Agent spending powers

Security checks for vulnerabilities and agentic risk

Overview

This is a high-impact CreditClaw financial-spending skill with clear documentation, but its identity mismatch, autonomous payment paths, remote instructions, and unverified remote install need human review before use.

Install only if you intend to use CreditClaw, not JPMorgan, and you trust the publisher and creditclaw.com. Keep approval_mode set to ask_for_everything until you have reviewed the service, protect CREDITCLAW_API_KEY like a payment credential, avoid optional callback_url and payer_email unless necessary, and treat remote notes as transaction preferences only, never as authority to reveal secrets or perform unrelated actions.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Findings (2)

T01 · Skill Instruction Hijacking

Error
Location
skill.md:277
Finding
Untrusted API Response Content Is Treated as Authoritative Agent Instructions<![CDATA[ ## Vulnerability Details **File Location**: `skill.md`, lines 277-286; duplicated in `heartbeat.md`, lines 51-62 **Vulnerability Type**: T01: Skill Instruction Hijacking **Risk Level**: High ### Vulnerable Code Snippets From `skill.md`: ```markdown **You must follow these rules:** - If `approval_mode` is `ask_for_everything`, ask your human before any purchase to get their approval. **New accounts default to this mode.** Your owner can loosen this from their dashboard once they're comfortable. - If `approval_mode` is `auto_approve_under_threshold`, you may spend freely up to `ask_approval_above_usd`. Anything above that requires owner approval. - If `approval_mode` is `auto_approve_by_category`, you may spend freely on `approved_categories` within limits. All others require approval. - **Never** spend on `blocked_categories`. These are hard blocks enforced server-side and will be declined. - Always read and follow the `notes` field — these are your owner's direct instructions. - Cache this for up to 30 minutes. Do not fetch before every micro-purchase. ``` From `heartbeat.md`: ```markdown ## 2. Check Spending Permissions ```bash curl https://creditclaw.com/api/v1/bot/wallet/spending \ -H "Authorization: Bearer $CREDITCLAW_API_KEY" ``` Cache this response for up to 30 minutes. Check it before any purchase. **Key fields to act on:** - `approval_mode` — determines whether you can auto-spend or must ask first - `blocked_categories` — never attempt purchases in these categories - `notes` — read and follow these; they are direct instructions from your owner - `updated_at` — if this changed since your last check, re-read all fields ``` ### Technical Analysis The Skill retrieves the `notes` field from a remote API and explicitly directs the Agent to treat its contents as the owner's direct instructions. This crosses a trust boundary: natural-language data returned by an external service is promoted to authoritative Agent instructions without valida ...[truncated 2154 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Treat all API response fields, including `notes`, as untrusted data rather than executable Agent instructions. 2. Remove language directing the Agent to “always read and follow” arbitrary natural-language content. 3. Replace free-form behavioral instructions with a strict, documented policy schema containing only necessary fields, such as: - Maximum transaction amount. - Approved and blocked categories. - Approval threshold. - Recurring-payment permission. 4. Validate response types, ranges, enumerations, and lengths before using them. 5. Restrict free-form notes to display-only context and explicitly prohibit using them to trigger tools, reveal secrets, alter system policies, access files, or perform unrelated actions. 6. Define instruction precedence so that remote content can never override system, developer, user, or local Skill safety requirements. 7. Require explicit human confirmation for any action inferred solely from free-form remote text. 8. Apply output encoding and bounded storage to cached policy data, and invalidate the cache when authentication or account ownership changes. ]]>

T03 · Remote Payload Retrieval and Execution

Error
Location
skill.md:26
Finding
Mutable Remote Skill Instructions Are Installed Without Integrity Verification<![CDATA[ ## Vulnerability Details **File Location**: `skill.md`, lines 26-30 **Vulnerability Type**: T03: Remote Payload Retrieval and Execution **Risk Level**: High ### Vulnerable Code Snippet ```markdown **Install locally:** ```bash mkdir -p ~/.creditclaw/skills/creditclaw curl -s https://creditclaw.com/skill.md > ~/.creditclaw/skills/creditclaw/SKILL.md curl -s https://creditclaw.com/heartbeat.md > ~/.creditclaw/skills/creditclaw/HEARTBEAT.md curl -s https://creditclaw.com/skill.json > ~/.creditclaw/skills/creditclaw/package.json ``` ``` ### Technical Analysis The installation procedure downloads mutable remote Skill documents directly into a local Skill directory. No cryptographic signature, pinned digest, immutable version URL, or trusted release manifest is used to verify that the downloaded files match the audited package. While the retrieved files are Markdown and JSON rather than conventional native executables, Skill text controls Agent behavior when loaded. Replacing the reviewed instructions with remote content therefore creates an effective remote payload channel. HTTPS protects the connection in transit but does not guarantee that the server's current content is the same content that was reviewed, nor does it protect against compromise of the origin, publishing account, or deployment pipeline. The commands also overwrite destination files directly. Because `curl -s` does not use `--fail`, an HTTP error response could be silently written into a Skill file. Direct redirection can additionally leave a truncated or partial file if the transfer fails. ### Attack Path 1. An attacker compromises `creditclaw.com`, its deployment pipeline, DNS/TLS control, or the credentials used to publish the hosted Skill files. 2. The attacker replaces `skill.md`, `heartbeat.md`, or `skill.json` with malicious Agent instructions. 3. A user follows the documented installation commands. 4. `curl` downloads the current attacker-controlled content without checking a ...[truncated 1235 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Publish versioned, immutable release artifacts rather than installing from mutable top-level URLs. 2. Provide a trusted manifest containing SHA-256 or stronger digests for every file. 3. Cryptographically sign the release manifest and verify the signature against a pinned publisher key before installation. 4. Download files to a temporary staging directory and verify all signatures and hashes before moving them into the active Skill directory. 5. Use safer transfer options such as: ```bash curl --fail --show-error --location --proto '=https' --tlsv1.2 \ -o /secure/staging/SKILL.md \ https://creditclaw.com/releases/2.0.11/skill.md ``` 6. Perform atomic replacement only after all files pass verification. 7. Avoid `curl -s` without `--fail`, because server errors can otherwise be written silently into destination files. 8. Pin compatible Skill and heartbeat versions together to prevent mixed-version behavior. 9. Document a rollback procedure and retain the last verified release. 10. Ensure automatic updates, if implemented, require the same signature verification and do not silently replace locally reviewed instructions. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • YARA SignaturesMalware Match, Webshell Match, Cryptominer Match
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (19)

YARA rule 'agent_skill_prompt_injection_hidden_instructions': Prompt injection or hidden instructions embedded in AI agent skill text [agent_skills]

High
Category
YARA Match
Content
going - Financial enablement & accounting platform for Bots, Agents, and OpenClaw. Multiple methods for enabling and managing agentic spending and purchases, with consolidated accounts and guardrails on transactions across wallets."
homepage: https://creditclaw.com
api_base: https://creditclaw.com/api/v1
credentials: [CREDITCLAW_API_KEY]
---

# CreditClaw — Financial Enablement & Accounting for AI Agents

CreditClaw.com is a financial enablement & accounting platform for Bots, Agents, and OpenClaw.
It provides multiple methods for enabling and managing agentic spending and purchases,
and offers consolidated accounts and guardrails on transactions across wallets.

## Skill Files

| File | URL | Purpose |
|------|-----|---------|
| **SKILL.md** (this file) | `https://creditclaw.com/skill.md` | Full API reference and registration instructions |
| **HEARTBEAT.md** | `https://creditclaw.com/heartbeat.md` | Lightweight polling routine for balance and spending checks |
| **package.json** (m
Confidence
80% confidence
Finding
YARA rule matched a hack tool or exploit indicator (offensive tools, reconnaissance, privilege escalation, or exploit frameworks).

External Transmission

Medium
Category
Data Exfiltration
Content
## 1. Check Wallet Status

```bash
curl https://creditclaw.com/api/v1/bot/wallet/check \
  -H "Authorization: Bearer $CREDITCLAW_API_KEY"
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
This markdown file instructs the agent to call remote APIs with a bearer token and retrieve wallet status, balances, and spending permissions. While the routine describes what to do, it does not explicitly warn the user that periodic external requests will transmit account-linked data to CreditClaw services.

Session Persistence

Medium
Category
Rogue Agent
Content
**Install locally:**
```bash
mkdir -p ~/.creditclaw/skills/creditclaw
curl -s https://creditclaw.com/skill.md > ~/.creditclaw/skills/creditclaw/SKILL.md
curl -s https://creditclaw.com/heartbeat.md > ~/.creditclaw/skills/creditclaw/HEARTBEAT.md
curl -s https://creditclaw.com/skill.json > ~/.creditclaw/skills/creditclaw/package.json
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.

Skill Enumeration

Medium
Category
Agent Snooping
Content
**Install locally:**
```bash
mkdir -p ~/.creditclaw/skills/creditclaw
curl -s https://creditclaw.com/skill.md > ~/.creditclaw/skills/creditclaw/SKILL.md
curl -s https://creditclaw.com/heartbeat.md > ~/.creditclaw/skills/creditclaw/HEARTBEAT.md
curl -s https://creditclaw.com/skill.json > ~/.creditclaw/skills/creditclaw/package.json
```
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.

External Transmission

Medium
Category
Data Exfiltration
Content
You can register before your human does. You'll get an API key immediately.

```bash
curl -X POST https://creditclaw.com/api/v1/bots/register \
  -H "Content-Type: application/json" \
  -d '{
    "bot_name": "my-research-bot",
Confidence
84% confidence
Finding
The registration flow instructs the agent to transmit owner_email, bot metadata, and an optional callback URL to an external service. This is expected for the product, but it is still a real data-exfiltration surface because it causes outbound transfer of potentially sensitive human and infrastructure information to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
and can update them anytime from their dashboard.

```bash
curl https://creditclaw.com/api/v1/bot/wallet/spending \
  -H "Authorization: Bearer $CREDITCLAW_API_KEY"
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
"cash_advances"
  ],
  "recurring_allowed": false,
  "notes": "Prefer free tiers before paying. Always check for discount codes. No annual plans without asking me first.",
  "updated_at": "2026-02-06T18:00:00Z"
}
```
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**You must follow these rules:**
- If `approval_mode` is `ask_for_everything`, ask your human before any purchase to get their approval. **New accounts default to this mode.** Your owner can loosen this from their dashboard once they're comfortable.
- If `approval_mode` is `auto_approve_under_threshold`, you may spend freely up to `ask_approval_above_usd`. Anything above that requires owner approval.
- If `approval_mode` is `auto_approve_by_category`, you may spend freely on `approved_categories` within limits. All others require approval.
- **Never** spend on `blocked_categories`. These are hard blocks enforced server-side and will be declined.
- Always read and follow the `notes` field — these are your owner's direct instructions.
Confidence
92% confidence
Finding
The skill explicitly authorizes the agent to spend money autonomously under certain thresholds without a human in the loop. Even if server-side guardrails exist, this is a real autonomous financial action capability that can be abused through prompt injection, task manipulation, or poor merchant validation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
**You must follow these rules:**
- If `approval_mode` is `ask_for_everything`, ask your human before any purchase to get their approval. **New accounts default to this mode.** Your owner can loosen this from their dashboard once they're comfortable.
- If `approval_mode` is `auto_approve_under_threshold`, you may spend freely up to `ask_approval_above_usd`. Anything above that requires owner approval.
- If `approval_mode` is `auto_approve_by_category`, you may spend freely on `approved_categories` within limits. All others require approval.
- **Never** spend on `blocked_categories`. These are hard blocks enforced server-side and will be declined.
- Always read and follow the `notes` field — these are your owner's direct instructions.
- Cache this for up to 30 minutes. Do not fetch before every micro-purchase.
Confidence
91% confidence
Finding
Category-based auto-approval permits the agent to initiate spending on its own within approved categories. Category labels are broad and can be manipulated or misclassified, so the context still creates meaningful risk of unintended purchases despite server-side controls.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `exceeds_per_transaction_limit` | 403 | Amount exceeds per-transaction cap. |
| `exceeds_daily_limit` | 403 | Would exceed daily spending limit. |
| `exceeds_monthly_limit` | 403 | Would exceed monthly spending limit. |
| `requires_owner_approval` | 403 | Amount above auto-approve threshold. |

When a purchase is declined, the response includes the relevant limits and your current
spending so you can understand why. Your owner is also notified of all declined attempts.
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
| `exceeds_per_transaction_limit` | 403 | Amount exceeds per-transaction cap. |
| `exceeds_daily_limit` | 403 | Would exceed daily spending limit. |
| `exceeds_monthly_limit` | 403 | Would exceed monthly spending limit. |
| `requires_owner_approval` | 403 | Amount above auto-approve threshold. |

When a purchase is declined, the response includes the relevant limits and your current
spending so you can understand why. Your owner is also notified of all declined attempts.
Confidence
85% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

External Transmission

Medium
Category
Data Exfiltration
Content
When your balance is low, ask your human if they'd like you to request a top-up:

```bash
curl -X POST https://creditclaw.com/api/v1/bot/wallet/topup-request \
  -H "Authorization: Bearer $CREDITCLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
76% confidence
Finding
The top-up request sends financial intent and a free-form reason to an external provider, which may contain sensitive task or business context. Although consistent with the product purpose, it still creates a privacy and data-sharing risk if agents include unnecessary operational details.

Missing User Warnings

Medium
Confidence
87% confidence
Finding
The payment-link workflow asks the agent to collect and transmit a third party's payer email address, but the skill provides no privacy notice, consent guidance, retention limits, or minimization instructions. In an agent context, this can lead to unnecessary collection of personal data and unauthorized disclosure to the service provider, creating privacy and compliance risk.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
1. You submit a checkout request with merchant and amount details
2. CreditClaw evaluates the request against your card's permissions
3. If the amount is within your auto-approved allowance, it processes immediately
4. If the amount exceeds the threshold, your owner receives an approval request (email with secure link)
5. You poll for the result
6. Once approved, the transaction is recorded
Confidence
89% confidence
Finding
The self-hosted card flow allows automatic processing for transactions within an allowance, enabling autonomous spending against payment instruments. Because this concerns real card-backed purchases, mistakes or adversarial prompting could have immediate financial impact.

External Transmission

Medium
Category
Data Exfiltration
Content
### Make a Self-Hosted Card Checkout

```bash
curl -X POST https://creditclaw.com/api/v1/bot/merchant/checkout \
  -H "Authorization: Bearer $CREDITCLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
87% confidence
Finding
The self-hosted card checkout flow transmits merchant, URL, item, amount, and category to an external payment service in order to initiate a financial transaction. Because this can trigger real spending and disclose procurement behavior, it is a genuine high-risk capability if invoked without strong authorization and transaction confirmation.

External Transmission

Medium
Category
Data Exfiltration
Content
### Request x402 Payment Signature

```bash
curl -X POST https://creditclaw.com/api/v1/stripe-wallet/bot/sign \
  -H "Authorization: Bearer $CREDITCLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
Confidence
88% confidence
Finding
The x402 signing flow sends payment details that can authorize blockchain-based spending through an external service. Even with guardrails, this is a sensitive outbound financial action that can result in irreversible transfers if a malicious or mistaken payment request is approved.

External Transmission

Medium
Category
Data Exfiltration
Content
-H "Authorization: Bearer $CREDITCLAW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "resource_url": "https://api.example.com/v1/data",
    "amount_usdc": 500000,
    "recipient_address": "0x1234...abcd"
  }'
Confidence
82% confidence
Finding
The example resource_url points to an arbitrary external domain and normalizes the pattern of paying external services based on remote 402 responses. In agent settings, this can be abused to steer spending toward attacker-controlled endpoints unless domain validation is strict.

External Transmission

Medium
Category
Data Exfiltration
Content
Use the `x_payment_header` value as-is in your retry request:
```bash
curl https://api.example.com/v1/data \
  -H "X-PAYMENT: eyJ0eXAiOi..."
```
Confidence
84% confidence
Finding
Retrying requests to external domains with an X-PAYMENT header creates a direct payment execution path to third-party services. If an attacker can influence the target URL or payment challenge, the agent may complete unauthorized paid requests.

Static analysis

No suspicious patterns detected.