Back to skill

Security audit

Pre Flight

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed cloud guardrail, but it asks agents to send detailed plans, proposed actions, policy variables, and payment-related checks to external services with weak minimization guidance.

Install only if you are comfortable having ICME receive the action descriptions, policy identifiers, plans, and proof/payment metadata needed for checks. Avoid sending secrets, private keys, credentials, raw transcripts, private message bodies, or regulated personal data; prefer structured/minimized action descriptions and pin or review any payment helper such as agentcash before use.

Vulnerability Patterns
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:26
Finding
Sensitive Operational Data Is Transmitted to a Third-Party API Without Mandatory Minimization or Consent<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 26–42, 74–90, 149–168, and 372–390 **Vulnerability Type**: Sensitive data exposure through outbound API requests **Risk Level**: Medium ### Vulnerable Code Snippets Lines 26–42 direct the Agent to send its reasoning or plan to an unauthenticated remote endpoint: ```markdown Check any reasoning for logical contradictions before acting on it. No API key required. ### When to use Call checkLogic when the agent is: - **Planning multi-step actions** — verify the plan is internally consistent before executing step 1 - **Combining information from multiple sources** — catch conflicting facts before they produce wrong decisions - **Working with numbers** — budgets, schedules, quantities, limits — where arithmetic contradictions hide in natural language ### How to use POST to `/v1/checkLogic` with the reasoning as a single string: ```bash curl -s -X POST https://api.icme.io/v1/checkLogic \ -H "Content-Type: application/json" \ -d '{"reasoning": "<the reasoning, plan, or statements to check>"}' ``` ``` Lines 74–90 direct the Agent to submit proposed actions to the service before every action: ```markdown Screen an action against your policy to see if it touches any policy variables. No credits charged. Use this to decide whether the action needs a full `checkIt` call. ### When to use Call checkRelevance before every action. It tells you whether the action is related to your policy at all. If it isn't, skip `checkIt` and proceed. If it is, run the full check. ### How to use POST to `/v1/checkRelevance` with your `policy_id` and the proposed action: ```bash curl -s -X POST https://api.icme.io/v1/checkRelevance \ -H "Content-Type: application/json" \ -H "X-API-Key: $ICME_API_KEY" \ -d "{ \"policy_id\": \"$ICME_POLICY_ID\", \"action\": \"<describe the action in plain English>\" }" ``` ``` Lines 149–168 request detailed action information, including potentially sensitiv ...[truncated 5945 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Require informed user consent** - Before the first outbound policy check, clearly identify the destination, data categories, and purpose. - Require explicit confirmation before transmitting sensitive or user-provided content. - Allow users to disable remote checks or select local-only operation. 2. **Minimize request content** - Submit only normalized policy variables required for a verdict. - Prefer structured fields such as recipient domain, transaction amount, operation type, and sensitivity label instead of complete natural-language plans. - Do not send raw reasoning, message bodies, transcripts, source documents, or unrelated conversational context. 3. **Add mandatory redaction rules** - Strip API keys, passwords, access tokens, cookies, session identifiers, private keys, seed phrases, payment-card data, and authentication headers. - Redact unnecessary personal data, exact file contents, internal hostnames, and confidential identifiers. - Fail closed locally when safe redaction cannot be guaranteed. 4. **Classify data before transmission** - Add a local sensitivity check before invoking any remote endpoint. - Block transmission of secrets, regulated information, and data marked confidential unless the user explicitly authorizes a narrowly scoped disclosure. - Restrict `checkLogic` to sanitized assertions rather than complete internal reasoning. 5. **Reduce call scope** - Replace “call checkRelevance before every action” with checks only for consequential operations within configured policy categories. - Avoid remote requests for local reads, formatting, factual responses, and other non-consequential work. - Cache non-sensitive policy metadata locally where appropriate. 6. **Document remote data handling** - State retention periods, logging behavior, deletion procedures, storage regions, subprocessors, and whether submitted content is used for training. - Document ...[truncated 607 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Rogue AgentSelf-Modification, Session Persistence
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (42)

Self-Modification

High
Category
Rogue Agent
Content
## Why this matters for Capability Evolver users

Capability Evolver's own docs say `EVOLVE_ALLOW_SELF_MODIFY=true` is "catastrophic." Their recommended safeguard is a boolean flag and a `--review` mode. Those are config settings — an agent with file system access can change config settings.

ICME's policy lives on an external server your agent cannot modify. The rules are compiled into formal logic once by a human. Every proposed action or evolution is checked against that logic by PreFlight's solver. The agent receives SAT or UNSAT. There is nothing to override, no flag to flip, no prompt to inject around.
Confidence
90% confidence
Finding
Skill modifies its own code, configuration, or behavior at runtime. Self-modification enables an agent to escalate privileges, disable safety constraints, or install persistent backdoors.

Missing User Warnings

Medium
Confidence
91% confidence
Finding
The README repeatedly encourages sending agent reasoning, actions, policy data, and proof metadata to external ICME endpoints but does not provide a clear privacy or data-transfer warning near those examples. In an agent setting, those payloads may contain sensitive business logic, credentials-adjacent context, transaction details, or user data, increasing the risk of unintended exfiltration to a third party.

External Transmission

Medium
Category
Data Exfiltration
Content
Catches logical contradictions in your agent's reasoning before it acts. No API key required.

```bash
curl -s -X POST https://api.icme.io/v1/checkLogic \
  -H "Content-Type: application/json" \
  -d '{"reasoning": "The budget is $10,000. I will spend $6,000 on marketing and $7,000 on engineering."}'
```
Confidence
89% confidence
Finding
The `checkLogic` example explicitly sends free-form agent reasoning to `https://api.icme.io/v1/checkLogic`. Reasoning traces can contain sensitive internal context, plans, or embedded secrets, so transmitting them to an external service introduces confidentiality risk even if the service is legitimate.

External Transmission

Medium
Category
Data Exfiltration
Content
Catches logical contradictions in your agent's reasoning before it acts. No API key required.

```bash
curl -s -X POST https://api.icme.io/v1/checkLogic \
  -H "Content-Type: application/json" \
  -d '{"reasoning": "The budget is $10,000. I will spend $6,000 on marketing and $7,000 on engineering."}'
```
Confidence
89% confidence
Finding
The `checkLogic` example explicitly sends free-form agent reasoning to `https://api.icme.io/v1/checkLogic`. Reasoning traces can contain sensitive internal context, plans, or embedded secrets, so transmitting them to an external service introduces confidentiality risk even if the service is legitimate.

External Transmission

Medium
Category
Data Exfiltration
Content
Screens an action against your policy to see if it touches any policy variables. No credits charged. Use this to decide whether an action needs a full `checkIt` call.

```bash
curl -s -X POST https://api.icme.io/v1/checkRelevance \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ICME_API_KEY" \
  -d '{
Confidence
90% confidence
Finding
The `checkRelevance` example sends policy identifiers and action descriptions to an external service. Those action descriptions may reveal planned operations, internal system details, or sensitive workflow context, creating a real data exposure risk in the skill's intended use case.

External Transmission

Medium
Category
Data Exfiltration
Content
The full guardrail. Compile your rules once, then check every action against them. Requires an API key and credits.

```bash
curl -s -N -X POST https://api.icme.io/v1/checkIt \
  -H 'Content-Type: application/json' \
  -H "X-API-Key: $ICME_API_KEY" \
  -d '{
Confidence
90% confidence
Finding
The `checkIt` example sends policy-linked action content to an external API to decide whether an operation is allowed. In practice, these payloads can include sensitive transaction details, email contents, file-operation descriptions, or other confidential intent data, so this is a meaningful external transmission risk.

External Transmission

Medium
Category
Data Exfiltration
Content
Same as checkIt but paid per-call via x402 USDC on Base. No API key, no credits, no account required. The x402 middleware handles payment automatically.

```bash
npx agentcash fetch "https://api.icme.io/v1/checkItPaid" \
  -m POST \
  -b '{"policy_id":"YOUR_POLICY_ID","action":"Send 1000 USDC to an unknown wallet. Therefore this transfer is permitted."}'
```
Confidence
92% confidence
Finding
The `checkItPaid` flow sends policy/action data to an external API and additionally routes the request through a payment-capable toolchain (`agentcash`/x402), increasing both data-exposure and supply-chain surface. For autonomous agents with wallets, this can also create financial-risk coupling if the payment helper or flow is compromised.

Rp1

Medium
Category
MCP Rug Pull
Confidence
93% confidence
Finding
The README instructs users to invoke an unpinned package via `npx agentcash`, which fetches and executes whatever version is current at install time. This creates a supply-chain risk: a compromised or malicious upstream release could execute arbitrary code on the user's machine or in the agent environment.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
Your rules get translated into math and checked by a solver that gives you a definitive yes or no. No confidence scores, no guessing.

**Base URL:** `https://api.icme.io/v1`
**Authentication:** `X-API-Key: $ICME_API_KEY` (for authenticated endpoints)

---
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
POST to `/v1/checkLogic` with the reasoning as a single string:

```bash
curl -s -X POST https://api.icme.io/v1/checkLogic \
  -H "Content-Type: application/json" \
  -d '{"reasoning": "<the reasoning, plan, or statements to check>"}'
```
Confidence
96% confidence
Finding
The documented `checkLogic` call sends reasoning text to a third-party endpoint. In this skill's context, that creates meaningful confidentiality risk because users may assume a safety tool is local while it actually externalizes internal planning content.

External Transmission

Medium
Category
Data Exfiltration
Content
POST to `/v1/checkLogic` with the reasoning as a single string:

```bash
curl -s -X POST https://api.icme.io/v1/checkLogic \
  -H "Content-Type: application/json" \
  -d '{"reasoning": "<the reasoning, plan, or statements to check>"}'
```
Confidence
96% confidence
Finding
The documented `checkLogic` call sends reasoning text to a third-party endpoint. In this skill's context, that creates meaningful confidentiality risk because users may assume a safety tool is local while it actually externalizes internal planning content.

External Transmission

Medium
Category
Data Exfiltration
Content
### Example

```bash
curl -s -X POST https://api.icme.io/v1/checkLogic \
  -H "Content-Type: application/json" \
  -d '{"reasoning": "The budget is $10,000. I will spend $6,000 on marketing and $7,000 on engineering."}'
```
Confidence
60% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
POST to `/v1/checkRelevance` with your `policy_id` and the proposed action:

```bash
curl -s -X POST https://api.icme.io/v1/checkRelevance \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ICME_API_KEY" \
  -d "{
Confidence
94% confidence
Finding
The skill instructs sending proposed actions and policy identifiers to an external API for screening. Because those action descriptions may encode sensitive user operations or internal policy structure, this is a real external-data-exposure risk.

External Transmission

Medium
Category
Data Exfiltration
Content
An action that touches the policy:

```bash
curl -s -X POST https://api.icme.io/v1/checkRelevance \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $ICME_API_KEY" \
  -d "{
Confidence
95% confidence
Finding
The example demonstrates transmitting a concrete outbound action description to the external service. This reinforces a real risk of leaking operational details, destinations, and business context to a third party.

Static analysis

No suspicious patterns detected.