T09 · Insecure Skill Coding Practices
- Location
SKILL.md:58- Finding
Unredacted prompts, outputs, and memory records may be transmitted to Langfuse
- Content
View full analysis
Vulnerability Details
File Location:
SKILL.md:18, 51-64, 78-79, 118, 191
Vulnerability Type: Sensitive data exposure through telemetry
Risk Level: HighVulnerable Code
yaml "security_notes": "Writes traces to the user's own Langfuse instance (self-hosted Docker container at localhost:3100 by default). When using self-hosted Langfuse, all trace data stays on the user's machine. Cloud Langfuse users send data only to their own Langfuse account."bash ~/.chatterbox-venv/bin/python3 /Users/loki/.openclaw/workspace/scripts/langfuse-trace-logger.py \ --session-id "$SESSION_ID" \ --parent-id "agent:main" \ --agent "kit" \ --task "task-label-kebab-case" \ --model "anthropic/claude-sonnet-4-6" \ --status "completed" \ --input "full task prompt given to agent (first 4000 chars)..." \ --output "what the agent returned or accomplished..." \ --duration 278 \ --tokens 16900 \ --project "reddi-agent-protocol" \ --skills "product-tour-capture"text | `--input` | string | Full task prompt | First 4000 chars — this is what gets replayed against other models in judge runs | | `--output` | string | Result summary | Agent's output/result — this is what the judge scores |text **Data source:** Backfill parses `memory/YYYY-MM-DD.md` files and extracts structured task outcome blocks. This is why the task outcome block format in memory files must be consistent — inconsistent format breaks parsing silently.text **Call once per significant subagent completion.** Use data from the task outcome blocks written in Phase 1 (memory file). Don't reconstruct from memory — read what you just wrote.Technical Analysis
The skill instructs the agent to record the first 4,000 characters of full task prompts, agent results, session identifiers, project information, and historical task records extracted from persistent memory files. These source ...[truncated 1695 chars]
- Remediation
View remediation
Remediation Suggestions
- Default to metadata-only telemetry and omit raw prompts, outputs, and memory content.
- Require explicit user opt-in before sending content to any non-local Langfuse endpoint.
- Apply secret scanning and structured redaction before records are passed to the logger.
- Use an allowlist of fields approved for telemetry rather than attempting only pattern-based filtering.
- Exclude persistent memory files from backfill by default, or extract only explicitly marked, non-sensitive fields.
- Enforce endpoint validation so local-only deployments cannot silently be redirected to a remote host.
- Document retention, access-control, encryption, export, and deletion requirements for trace data.
- Add automated tests containing representative API keys, passwords, personal data, and proprietary content to verify that these values never reach trace storage.
