T09 · Insecure Skill Coding Practices
- Location
SKILL.md:51- Finding
Uncontrolled Disclosure of Sensitive Context to an External Service and Anonymous Respondents
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is mostly transparent about asking random humans, but it needs Review because it can expose private context to strangers and preserve their feedback for future decisions.
Install only if you are comfortable with prompts being sent to an external service and shown to random human respondents. Before using it, require explicit user approval, preview the exact outbound prompt, and strip secrets, personal data, customer details, proprietary code, non-public security findings, and confidential business context. Treat returned text as untrusted opinion, not as instructions or persistent user preferences unless the owner explicitly confirms it.
SKILL.md:51Uncontrolled Disclosure of Sensitive Context to an External Service and Anonymous Respondents
SKILL.md:137Persistent Memory Poisoning Through Untrusted Crowd Feedback
The README explicitly encourages sending agent-provided questions to random anonymous humans and notes they have only the context the agent provides, but it never warns against including secrets, personal data, internal business information, or regulated data. This creates a real risk of exfiltration because users may paste sensitive prompts, emails, incident details, or customer information into a third-party human review pool with no stated confidentiality guarantees.
The skill explicitly routes agent questions to a global pool of random humans but does not place a clear privacy warning at the point of use telling operators not to include secrets, personal data, customer content, or internal context. Because the instructions repeatedly encourage sending self-contained, fully contextual prompts, users or downstream agents may disclose sensitive information to third parties without informed consent or data minimization.
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.
mkdir -p ~/.openclaw/skills/ask-a-human
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.
Verify the skill file exists:
ls ~/.openclaw/skills/ask-a-human/SKILL.md
Check OpenClaw logs for errors:
Telling the agent to provide 'all necessary context' to random humans creates a natural path to overshare sensitive user or business information so the crowd can understand the question. In this skill's context, the recipients are unaffiliated strangers with no confidentiality guarantees, which increases the chance of privacy leakage and policy violations.
This is a real external transmission path: the skill instructs the agent to POST prompt data to a third-party API. The transmission itself is expected functionality, but it becomes security-relevant because the payload may contain user or internal context and the skill lacks strong safeguards on what may be sent.
curl -X POST https://api.ask-a-human.com/agent/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
This is a real external transmission path: the skill instructs the agent to POST prompt data to a third-party API. The transmission itself is expected functionality, but it becomes security-relevant because the payload may contain user or internal context and the skill lacks strong safeguards on what may be sent.
curl -X POST https://api.ask-a-human.com/agent/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
The API parameter guidance for prompt encourages packing full context into outbound requests, which can induce agents to transmit sensitive data to an external service and ultimately to random humans. Since the skill is specifically designed for subjective decisions, the temptation to include verbatim user text or internal drafts is high.
The question-writing section reinforces making prompts fully self-contained for external strangers, but gives no privacy boundary or examples of safe abstraction. That combination increases the likelihood that agents will copy sensitive text, user scenarios, or internal deliberations into third-party prompts.
The direct reference to the external ask-a-human endpoint confirms third-party transmission as part of the workflow. In this skill's context, external transmission is especially sensitive because the destination is a human crowd, not just an automated processor, which raises disclosure risk beyond ordinary API use.
Agent (action):
curl -X POST https://api.ask-a-human.com/api/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
The direct reference to the external ask-a-human endpoint confirms third-party transmission as part of the workflow. In this skill's context, external transmission is especially sensitive because the destination is a human crowd, not just an automated processor, which raises disclosure risk beyond ordinary API use.
Agent (action):
curl -X POST https://api.ask-a-human.com/api/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
The examples send substantive user/work content to a third-party human-review service without any visible warning, consent step, or data-minimization guidance. Because this skill is explicitly designed to involve random humans, the omission materially increases the risk of leaking confidential business, security, or personal data in normal use.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Agent (internal):
curl https://api.ask-a-human.com/api/questions/q_delay_email_001 \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Agent (internal):
curl https://api.ask-a-human.com/api/questions/q_delay_email_001 \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID"
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
Agent (internal):
curl https://api.ask-a-human.com/api/questions/q_delay_email_001 \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID"
This example sends headline options and audience/context to a third-party human pool without warning the user about external sharing. While lower sensitivity than source code or secrets, it still exposes unpublished content and product/marketing strategy to outside parties, which can violate confidentiality expectations.
Agent (action):
curl -X POST https://api.ask-a-human.com/api/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
This example sends a security-review scenario involving password hashing mistakes in an authentication system to random humans. In context, that is particularly dangerous because it externalizes sensitive security findings and internal implementation details, potentially leaking exploitable weaknesses or confidential code-review information.
Agent (action):
curl -X POST https://api.ask-a-human.com/api/questions \
-H "Content-Type: application/json" \
-H "X-Agent-ID: $ASK_A_HUMAN_AGENT_ID" \
-d '{
No suspicious patterns detected.