Back to skill

Security audit

Free Models for OpenClaw and other Agents

Security checks for vulnerabilities and agentic risk

Overview

The skill mostly does what it claims, but it unnecessarily asks for and reads an OpenRouter API key that its code does not use.

Review before installing. The model discovery functionality is straightforward, but do not provide a live OpenRouter API key to this version unless you are comfortable with unnecessary credential exposure to the Node.js process. Prefer a version that removes the key requirement or clearly uses and scopes the key for authenticated functionality.

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

Note
Location
scripts/free-models.js:12
Finding

Unnecessary Collection and Requirement of an OpenRouter API Key

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • System Prompt LeakageDirect Leakage, Indirect Extraction, Tool-Based Exfiltration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (7)

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 20)May include surrounding context.

md
import { discoverFreeModels } from './scripts/free-models.js';

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 28)May include surrounding context.

md
import { discoverFreeModels } from './scripts/free-models.js';

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 58)May include surrounding context.

md
import { discoverFreeModels } from './scripts/free-models.js';

Ae1

High
Category
analysis-evasion
Confidence
100% confidence
Finding

Referenced artifact was not completely inspected

Content

Scanner excerpt · SKILL.md (reported line 87)May include surrounding context.

md
import { discoverFreeModels } from './scripts/free-models.js';

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · scripts/free-models.js (reported line 45)May include surrounding context.

js
const models = await fetchAllModels();
  return models.filter((m) => {
    const promptPrice = parseFloat(m.pricing.prompt);
    return promptPrice === 0 || promptPrice < 0.0001;
  });
}

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
91% confidence
Finding

The README explicitly instructs users to place a live OpenRouter API key into an environment variable but gives no guidance on secure handling, scoping, rotation, or avoiding accidental disclosure in shell history, logs, screenshots, or shared environments. While using environment variables is common practice, documenting secret setup without basic safety warnings can lead to inadvertent credential exposure and downstream account misuse.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
96% confidence
Finding

The header comment and CLI check state that OPENROUTER_API_KEY is required, implying authenticated API usage. However, fetchAllModels performs an unauthenticated fetch to the models endpoint and no authorization header or API-key-based behavior appears anywhere in the code, so the documentation actively misstates what the code needs to do its core work.

Content

No source excerpt is available for this finding.