Env credential access
- Finding
- Environment variable access combined with network send.
- Content
const apiKey = api.pluginConfig?.apiKey || process.env.MIMO_API_KEY;
Security checks across static analysis, malware telemetry, and agentic risk
This plugin appears to do the advertised speech-to-text job, but it uploads the selected local audio file and MiMo API key to an external endpoint, so users should configure it carefully.
This looks like a normal API-backed speech-to-text plugin. Before enabling it, confirm you trust the MiMo endpoint, provide a dedicated API key if possible, and only let it process audio files you intend to upload for transcription.
const apiKey = api.pluginConfig?.apiKey || process.env.MIMO_API_KEY;
const KEY = process.env.MIMO_API_KEY;
const apiKey = [REDACTED]?.apiKey || process.env.MIMO_API_KEY;
VirusTotal engine telemetry is currently stale for this artifact.
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
If the agent or user passes the wrong path, the plugin could upload a non-audio or unintended local file to the configured STT endpoint.
The tool caller supplies a local path that the plugin reads and transcribes. This is expected for speech-to-text, but there is no artifact evidence of path, file type, or size enforcement.
filePath: Type.String({ description: "音频文件的本地路径" }) ... readFileSync(params.filePath); ... const result = await transcribe(params.filePath);Use the tool only with intended audio attachments; the publisher should restrict paths to OpenClaw-provided audio files and validate extension/MIME/size.
Your MiMo API key is used by this plugin to make transcription requests.
The plugin uses a MiMo API credential and sends it as an API header to the configured endpoint. This is necessary for the integration and is described in the configuration section.
const apiKey = api.pluginConfig?.apiKey || process.env.MIMO_API_KEY; ... headers: { "Content-Type": "application/json", "api-key": apiKey }Use a dedicated MiMo API key if possible, keep it out of shared logs/configs, and only configure trusted endpoints.
Audio contents are transmitted to the configured MiMo-compatible service for transcription.
Audio content is sent to an external provider endpoint, and the endpoint can be configured. This is purpose-aligned, but it is a sensitive data boundary users should understand.
const apiBase = api.pluginConfig?.apiBase || process.env.MIMO_API_BASE || "https://api.xiaomimimo.com"; ... fetch(`${apiBase}/v1/chat/completions`, { ... body: JSON.stringify(body) })Keep the default official endpoint unless you trust an alternate API base, and avoid sending private audio you do not want processed by that service.
A user might assume the plugin can only contact the official Xiaomi endpoint, even though configuration can redirect requests.
This safety wording is mostly accurate for the default configuration, but the code and plugin schema allow a configurable apiBase, so the official endpoint is not enforced by the artifact.
No external network calls except to Xiaomi official API
The publisher should clarify that the official endpoint is the default and warn users to configure only trusted apiBase values.
The registry summary may understate that this skill runs plugin code and needs Node/API configuration.
The included files define executable plugin code and a package dependency, so the registry install summary appears incomplete. The artifacts do not show a remote install script or hidden helper.
Install specifications: No install spec — this is an instruction-only skill.
Review the included source and configuration files before enabling; the registry metadata should be updated to match the plugin requirements.