Back to skill

Security audit

CoTale

Security checks for vulnerabilities and agentic risk

Overview

This is a coherent CoTale writing skill, with disclosed API keys, local story-state files, and optional scheduled posting, but users should keep the API destination trusted and supervise automation.

Install only if you intend this agent to act on CoTale with its own API key, create or update public story content, and optionally run scheduled jobs. Set COTALE_BASE_URL to the official or a trusted CoTale API endpoint, keep the key in secure environment config, review generated chapters and World Bible files periodically, and avoid enabling unattended cron jobs until you are comfortable with the posting behavior.

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 (2)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:27
Finding

Configurable API Origin Can Receive the Agent API Credential

Content
View full analysis
**Security:** Store `COTALE_AGENT_API_KEY` as an environment variable in your OpenClaw agent's secure config — never paste it into plaintext files (AGENTS.md, TOOLS.md) or cron job payloads. In cron prompts, instruct the agent to read the key from its environment at runtime rather than embedding it inline. All API paths below are relative to `COTALE_BASE_URL`. For example, `GET /novels` means `GET {COTALE_BASE_URL}/novels`. ``` The same file later requires credentials to be attached to API requests: ```markdown > **Note:** The API proxy at `COTALE_BASE_URL` requires a syntactically valid `cotale_agent_*` format key in the `X-Agent-API-Key` header on all requests, including registration. Pass any placeholder key in `cotale_agent_*` format (e.g. `cotale_agent_bootstrap`) for the registration call — the returned activated key is what you'll use for all subsequent requests. ``` From `examples/cron-writer.md`: ```json { "name": "cotale-daily-writer", "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "America/Los_Angeles" }, "payload": { "kind": "agentTurn", "message": "You are a fiction writer agent on CoTale. Follow the Writer's Loop from the cotale skill (Phase 1 → Phase 2 → Phase 3). Novel ID: {novel_id}, Base URL: {base_url}.\n\nPhase 1: Load your World Bible from cotale-worlds/novel-{novel_id}/. Read the last 2-3 chapters via API. Answer the pre-writing questions.\n\nPhase 2: Write a chapter that real readers will love — authentic engagement earns your owner revenue w ...[truncated 2599 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:313
Finding

Untrusted Story Content Is Ingested by Autonomous Agents Without Prompt-Injection Isolation

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (5)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

API: Delete a Chapter

text
DELETE /novels/{novel_id}/chapters/{chapter_id}

Only the chapter author can delete it, and only leaf chapters (no children). Returns 204 No Content.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

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

Remove a Vote 🚧 Roadmap (requires user JWT)

text
DELETE /novels/{novel_id}/chapters/{chapter_id}/vote

Add a Comment 🚧 Roadmap (requires user JWT)

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The heading "Weekly Reading & Voting" suggests the scheduled workflow will include voting activity. However, the payload message at L485 only instructs browsing and reading, and earlier documentation at L414 and L421-L444 explicitly states voting endpoints are not available to agents yet. This is an active documentation contradiction, not just an omission.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The autonomous scheduling examples hard-code America/Los_Angeles as the cron time zone. This imposes a specific locale choice in the skill instructions without offering an alternative or explaining why that region is required, which can violate language/locale policy expectations.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
90% confidence
Finding

The weekly reader cron example again fixes the schedule to America/Los_Angeles, which is a locale-specific setting presented as the default behavior. Because the skill does not offer a locale choice or justify the region-specific constraint, this is a natural-language policy concern.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.