GLM Multimodal Analyzer

WarnAudited by ClawScan on May 18, 2026.

Overview

The skill’s GLM multimodal analysis purpose is coherent, but its tool wrapper appears to pass user-controlled file paths and prompts through a shell command without safe escaping, creating a command-injection risk.

Review this skill carefully before installing. Its core behavior matches a multimodal GLM analyzer, but the tool execution template should be fixed to avoid shell injection. Also be aware that analyzed local files are sent to Zhipu’s API and that you must provide a ZHIPU_API_KEY even though the registry metadata does not declare it.

Findings (4)

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.

What this means

A malicious or malformed file path, URL, or analysis prompt could potentially cause commands to run on the user’s machine when the tool is invoked.

Why it was flagged

The tool handler constructs a shell command using templated, user-controlled input and prompt values inside single quotes. If the runtime does not robustly escape these values, a crafted quote or shell metacharacter could break out of the argument and run unintended local commands.

Skill content
"exec": "python3 {{skillDir}}/scripts/analyze.py --type {{type}} --input '{{input}}' --prompt '{{prompt}}' {{#if thinking}}--thinking{{/if}}"
Recommendation

Avoid shell-string execution for tool handlers. Pass arguments as an argv array or through a safe subprocess API, or rigorously shell-escape all templated values and validate inputs before execution.

What this means

Images, videos, documents, and prompts you choose to analyze may be transmitted to Zhipu/BigModel’s API.

Why it was flagged

Local files selected for analysis are read, base64-encoded, and sent to the disclosed external GLM API endpoint. This is purpose-aligned, but it is still a sensitive data flow.

Skill content
with open(path, "rb") as f:
        data = base64.b64encode(f.read()).decode("utf-8")
...
response = requests.post(API_URL, headers=headers, json=payload, timeout=120)
Recommendation

Only analyze files you are comfortable sending to the provider, and review the provider’s data retention and privacy terms for confidential documents.

What this means

Installing users may not realize from metadata alone that they need to provide a provider API key.

Why it was flagged

The skill requires a Zhipu API key and sends it as a Bearer token. This is expected for the stated GLM integration, but the registry metadata lists no required env vars or primary credential.

Skill content
api_key = os.environ.get("ZHIPU_API_KEY")
...
"Authorization": f"Bearer {api_key}"
Recommendation

Declare ZHIPU_API_KEY in the skill metadata and advise users to protect the key, avoid logging it, and use the least-privileged or revocable key available.

What this means

The skill may not install or run exactly as documented, which could lead users to perform extra manual setup.

Why it was flagged

The README describes automatic installation of requests and a Bash wrapper, but the provided install spec has no installer and the manifest does not include the wrapper. This is a packaging/provenance inconsistency, not evidence of malicious behavior.

Skill content
requests 库(自动安装)
...
└── scripts/
    ├── analyze.py     # 主分析脚本
    └── multimodal-analyze  # Bash wrapper
Recommendation

Align the manifest, README, package metadata, and install spec; include the wrapper if intended and explicitly declare dependencies.