Back to skill
Skillv1.0.0
ClawScan security
AMG Azure Subscription Cost Analysis · ClawHub's context-aware review of the artifact, metadata, and declared behavior.
Scanner verdict
SuspiciousApr 17, 2026, 5:57 AM
- Verdict
- suspicious
- Confidence
- medium
- Model
- gpt-5-mini
- Summary
- The skill's actions match its stated purpose (querying Azure billing via a Grafana/MCP datasource), but it requires a high-privilege Grafana service token via an out-of-band MCP registration that is not declared in the registry metadata and some optional behaviors (running local interpreters) broaden the runtime scope—these documentation mismatches and optional execution paths merit caution.
- Guidance
- This skill appears to do what it says (query Azure billing via a Grafana/AMG MCP datasource) but requires you to register a Grafana/MCP server named exactly 'amg' and supply a Grafana service-account token via `openclaw mcp set` (the SKILL.md example uses a `glsa_...` token). That token gives access to your Grafana instance and its datasources — before configuring it, verify the token's scope and limit it to read-only access for the Azure Monitor datasource. Note the skill may run for many minutes if you select multiple subscriptions (mandatory 60s waits and backoff rules). Also: for very large results it may offer to invoke local interpreters (node/python/jq/pwsh) or Bash to parse/save data—those are optional but would execute local commands and should be approved only after review. Finally, the registry metadata does not list the Grafana token as a required credential; treat that as a documentation mismatch and, if possible, verify the skill source (SKILL.md claims an Azure GitHub repo) before provisioning credentials or running it in a production workspace. If you proceed, use a temporary or least-privilege token and test in an isolated workspace first.
Review Dimensions
- Purpose & Capability
- noteThe skill's name/description (Azure subscription cost analysis) aligns with the MCP calls and workflow in SKILL.md: it lists subscriptions and queries cost breakdowns via mcp__amg__* tools. However, the SKILL.md expects the workspace to be configured with a Grafana/MCP endpoint and a Grafana service-account token (glsa_...) via `openclaw mcp set`, but the registry metadata declares no required credentials/primary credential. That mismatch (needed token not listed in metadata) is a documentation/inventory inconsistency.
- Instruction Scope
- noteInstructions are explicit and scoped to listing datasources, enumerating subscriptions, and running cost-analysis calls with mandatory waits and 429 backoff. The skill reads/writes from its own memory path (memory/amg-check-azure-spend/*) and uses `date` to compute time ranges. Two caution points: (1) reference/error-handling.md says very large results may be parsed by invoking local interpreters (node, python, jq, pwsh) or running Bash; those are optional but could execute local code when used, and (2) the user must run `openclaw mcp set` to provide the Grafana token—this stores credentials in the workspace config outside the skill's declared env vars. No instructions send data to unexpected external endpoints other than the Grafana/MCP URL the user provides.
- Install Mechanism
- okInstruction-only skill with no install spec and no code files. Lowest install risk: nothing is downloaded or written by an installer.
- Credentials
- concernThe skill requires, in practice, a Grafana service-account token configured into OpenClaw's MCP registry (the SKILL.md demonstrates the `openclaw mcp set amg '{...Authorization: "Bearer <your-token>"}'` command). Yet the registry metadata lists no required env vars or primary credential. Requiring a workspace-stored Grafana token (which can allow read access to datasources and potentially more) without declaring it in the skill manifest is a proportionality/documentation mismatch. Users should ensure the token is least-privilege (read-only for the Azure Monitor datasource) before registering it.
- Persistence & Privilege
- okThe skill is not always-enabled, and model invocation is disabled (disable-model-invocation: true), so it cannot run autonomously. It writes reports to its own memory path (memory/amg-check-azure-spend/report.md), which is normal for a skill of this type. It does not request system-wide configuration changes or persistent privileges beyond storing its own config in workspace memory and the MCP registry entry the user creates.
