Portainer

SuspiciousAudited by ClawScan on May 10, 2026.

Overview

The skill matches its Portainer-management purpose, but it gives an agent broad Docker infrastructure control and weakens API-key transport safeguards.

Install only if you are comfortable giving OpenClaw controlled access to Portainer. Use a least-privilege API token, require explicit approval for destructive or raw Docker commands, enable proper TLS verification, and avoid printing stack files that contain secrets.

Findings (5)

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 mistaken or manipulated invocation could restart, delete, or alter containers, networks, volumes, or other Docker resources within the Portainer account’s permissions.

Why it was flagged

The caller controls the Docker API path, method, and payload, allowing broad GET/POST/DELETE operations through Portainer with no allowlist or confirmation check in the artifact.

Skill content
def execute_docker_command(environment_id, path, method="GET", payload=None): ... url = f"{PORTAINER_API_URL}/endpoints/{environment_id}/docker{path}" ... requests.post(...) ... requests.delete(...)
Recommendation

Use a least-privilege Portainer token, require explicit user confirmation for deploy/remove/raw Docker actions, and add allowlists or blocklists for Docker API endpoints.

What this means

Someone able to intercept network traffic could potentially capture the Portainer API key or tamper with infrastructure-management responses.

Why it was flagged

API-key-authenticated Portainer requests disable certificate verification and suppress the related warnings, which can expose the token or allow command interception if used against a remote or spoofed endpoint.

Skill content
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) ... headers = {"X-API-Key": token, "Content-Type": "application/json"} ... verify=False
Recommendation

Enable TLS verification by default, support a configured CA bundle for self-signed Portainer deployments, and make any insecure mode explicit and limited to trusted local use.

What this means

Users may not get a clear registry-level warning that this skill needs a powerful infrastructure API credential.

Why it was flagged

The registry metadata does not declare the Portainer credential even though the skill documentation and backend require a Portainer API token, reducing transparency in credential prompting and review.

Skill content
Required env vars: none; Env var declarations: none; Primary credential: none
Recommendation

Declare the Portainer URL and API token requirements in metadata and align the documented OpenClaw config names with the environment variables used by the script.

What this means

Secrets or internal configuration embedded in stack files could appear in chat output or logs.

Why it was flagged

Stack inspection can print full stack file contents into the agent output; compose files and stack JSON may contain environment variables or other sensitive configuration.

Skill content
output_data["StackFileContent"] = file_response.json().get("StackFileContent", "") ... print(json.dumps(output_data, indent=2), flush=True)
Recommendation

Redact likely secrets and environment values by default, and ask before displaying full stack files.

What this means

Manual global dependency installation can introduce dependency conflicts or unreviewed package provenance risk.

Why it was flagged

The setup guidance asks users to install Python packages globally outside a reviewed install spec or lockfile. This is user-directed and purpose-aligned, but it changes the runtime environment.

Skill content
RUN pip3 install requests --break-system-packages
Recommendation

Prefer a pinned requirements file or virtual environment, and review/pin the source before installing.