T09 · Insecure Skill Coding Practices
- Location
meegle-api-credentials/SKILL.md:19- Finding
Unvalidated API Domain Can Redirect Credentials and Sensitive Data to an Attacker-Controlled Host
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill is a coherent Meegle API integration, but it needs review because it persists high-value credentials, sends them through a configurable API domain, and exposes broad mutation and deletion operations without consistent safeguards.
Review this before installing. Use only exact Meegle domains, restrict plugin scopes to the minimum needed, avoid storing the plugin secret in plaintext if OpenClaw supports safer secret injection, protect any config file with owner-only permissions, and require explicit confirmation before delete, batch update, workflow transition, membership, or settings changes.
meegle-api-credentials/SKILL.md:19Unvalidated API Domain Can Redirect Credentials and Sensitive Data to an Attacker-Controlled Host
meegle-api-credentials/SKILL.md:33Long-Term Plugin Secret Is Directed to Plaintext Cross-Session Configuration Storage
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Overview
Meegle API Skill splits Meegle OpenAPI into multiple sub-skills by functional area. Before calling any Meegle API, read **meegle-api-credentials** first to obtain domain, access token, context (project_key, user_key), and request headers. Other skills (Users, Space, Work Items, Setting, etc.) assume you have already obtained everything from credentials.
## Required Credentials
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Overview
Meegle API Skill splits Meegle OpenAPI into multiple sub-skills by functional area. Before calling any Meegle API, read **meegle-api-credentials** first to obtain domain, access token, context (project_key, user_key), and request headers. Other skills (Users, Space, Work Items, Setting, etc.) assume you have already obtained everything from credentials.
## Required Credentials
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
## Overview
Meegle API Skill splits Meegle OpenAPI into multiple sub-skills by functional area. Before calling any Meegle API, read **meegle-api-credentials** first to obtain domain, access token, context (project_key, user_key), and request headers. Other skills (Users, Space, Work Items, Setting, etc.) assume you have already obtained everything from credentials.
## Required Credentials
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
name: meegle-api-credentials
description: |
Obtain Meegle API access credentials: domain, token, context (project_key, user_key), and request headers.
Read this first before any other Meegle API skill; all call prerequisites are in this skill.
metadata: {"openclaw":{"requires":{"env":["MEEGLE_PLUGIN_ID","MEEGLE_PLUGIN_SECRET","MEEGLE_DOMAIN","MEEGLE_PROJECT_KEY","MEEGLE_USER_KEY"]}}}
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
name: meegle-api-credentials
description: |
Obtain Meegle API access credentials: domain, token, context (project_key, user_key), and request headers.
Read this first before any other Meegle API skill; all call prerequisites are in this skill.
metadata: {"openclaw":{"requires":{"env":["MEEGLE_PLUGIN_ID","MEEGLE_PLUGIN_SECRET","MEEGLE_DOMAIN","MEEGLE_PROJECT_KEY","MEEGLE_USER_KEY"]}}}
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
name: meegle-api-credentials
description: |
Obtain Meegle API access credentials: domain, token, context (project_key, user_key), and request headers.
Read this first before any other Meegle API skill; all call prerequisites are in this skill.
metadata: {"openclaw":{"requires":{"env":["MEEGLE_PLUGIN_ID","MEEGLE_PLUGIN_SECRET","MEEGLE_DOMAIN","MEEGLE_PROJECT_KEY","MEEGLE_USER_KEY"]}}}
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
name: meegle-api-credentials
description: |
Obtain Meegle API access credentials: domain, token, context (project_key, user_key), and request headers.
Read this first before any other Meegle API skill; all call prerequisites are in this skill.
metadata: {"openclaw":{"requires":{"env":["MEEGLE_PLUGIN_ID","MEEGLE_PLUGIN_SECRET","MEEGLE_DOMAIN","MEEGLE_PROJECT_KEY","MEEGLE_USER_KEY"]}}}
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
name: meegle-api-credentials
description: |
Obtain Meegle API access credentials: domain, token, context (project_key, user_key), and request headers.
Read this first before any other Meegle API skill; all call prerequisites are in this skill.
metadata: {"openclaw":{"requires":{"env":["MEEGLE_PLUGIN_ID","MEEGLE_PLUGIN_SECRET","MEEGLE_DOMAIN","MEEGLE_PROJECT_KEY","MEEGLE_USER_KEY"]}}}
---
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
---
## Obtain Access Token
When to use, capabilities, request/response, **headers for other APIs**, constraints, and strategy: see **API Spec** below.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
### Points to Note
**This API only supports user access credentials (user_access_token).** See Get Access Credentials for how to obtain user_access_token.
### When to Use
The skill metadata and description frame the capability as 'creating, reading, and updating work items,' but the file also exposes destructive and workflow-control operations such as delete, abort/resume, freeze/unfreeze, and batch mutation. This mismatch can mislead downstream agents or users into invoking higher-risk actions without appropriate confirmation, policy gating, or least-privilege handling.
This section enables completing nodes and rolling them back, which are state-changing operations that can affect workflow progress and associated data. The documentation explains parameters but does not clearly warn users that these actions alter workflow state and rollback/owner-clearing actions may have significant operational consequences.
The skill allows transferring a work item to another state and optionally updating fields and role owners during the transition. While intended behavior is described, the markdown does not explicitly warn that this can alter production workflow state, permissions, and assignments in ways that impact users and processes.
The README recommends caching and reusing plugin_access_token during a session, which is operationally reasonable, but it does so without warning that bearer tokens are sensitive and must not be logged, exposed to other skills, or stored beyond their intended lifetime. If an agent or user mishandles cached tokens, an attacker with access to memory, traces, or logs could reuse them until expiration.
This markdown file describes a delete operation for comments, which can affect user data, but it only notes that deletion is API-only and creator-limited. It does not explicitly warn that the action removes comment data and may be irreversible, which is the kind of user warning expected for data-affecting behavior in markdown skill descriptions.
The skill explicitly instructs users to store sensitive long-lived credentials, including plugin secret and user context, in a cross-session config file for automatic reuse without providing strong warnings about secret handling, filesystem permissions, or rotation. If that file is exposed through local compromise, backups, syncing, or accidental sharing, an attacker could obtain durable API access and impersonate the configured integration.
The skill exposes configuration-changing operations for creating and updating custom fields but does not explicitly warn that these actions modify project schema/configuration and may have broad operational impact. In an agent context, this increases the risk of unintended destructive or organization-wide changes if a user request is ambiguous, over-broad, or maliciously prompted.
The skill exposes a destructive delete operation with no guidance to require explicit user confirmation, preview the target relationship, or warn about irreversible effects. In an agent setting, this increases the chance of accidental or prompt-induced deletion of configuration data, especially because the action is a simple parameterized API call using existing credentials.
The skill exposes a destructive delete operation for workflow roles but does not include an explicit warning, confirmation requirement, or guidance about the operational impact of deleting configuration. In an agent setting, this increases the chance of accidental or unauthorized destructive changes, especially because roles affect workflow behavior and access assignment across templates.
The skill exposes a destructive delete operation for workflow templates but provides no guidance to require explicit user confirmation, preview the target resource, or warn about irreversibility. In an agent context, this increases the chance of accidental or unauthorized destructive actions if a user prompt is ambiguous, mistaken, or manipulated.
This markdown file documents an endpoint that returns user_keys for team members and administrators within a space. While the functionality is described, there is no explicit user-facing warning about the privacy implications of retrieving organizational membership data.
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.
**This API only supports user access credentials (user_access_token).** See **meegle-api-credentials** for how to obtain user_access_token.
- When adding a user from non-space members, the user is automatically added to space members.
- When deleting a user from space members, the user is automatically removed from other user groups.
### When to Use
The skill documents a DELETE endpoint that removes views, including fixed, conditional, and panoramic views, but it does not instruct the agent to obtain explicit user confirmation before executing the action. In an agent setting, this increases the risk of accidental or socially engineered destructive operations, especially because view IDs can be sourced from URLs or prior API calls and the action has immediate effect.
The skill documents a destructive delete_attachment operation without explicitly warning that deletion may be irreversible or recommending confirmation before execution. In an agent context, this increases the chance of unintended data loss because an automated assistant may invoke the endpoint on loosely phrased user requests or during cleanup/sync workflows without surfacing the permanence of the action.
The skill documents a DELETE-based unbind operation while explicitly noting that if relation_rule_id and relation_work_item_id are omitted, behavior may remove bindings more broadly. That creates a realistic risk that an agent or user will invoke a destructive operation with underspecified parameters, causing unintended cross-space unlinking or data relationship loss.
No suspicious patterns detected.