T09 · Insecure Skill Coding Practices
- Location
scripts/fetch_tempest.py:145- Finding
Tempest API token may be exposed through command-line arguments and URL query strings
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The skill appears intended to fetch Tempest weather data, but it can use a personal station token for broad weather requests and may expose precise station location details beyond its documented output.
Review before installing if your Tempest station is at a home or sensitive location. Use a limited token if available, keep token-bearing URLs out of logs and shell history, prefer environment variables over command-line token flags, and be aware that generic weather questions may use your configured station data.
scripts/fetch_tempest.py:145Tempest API token may be exposed through command-line arguments and URL query strings
scripts/fetch_tempest.py:87Precise station coordinates are disclosed beyond the documented output schema
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- Python 3
- `curl` or `requests` (`pip install requests`)
- A [Tempest Personal Access Token](https://tempestwx.com) and Station ID
## Setup
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
- Python 3
- `curl` or `requests` (`pip install requests`)
- A [Tempest Personal Access Token](https://tempestwx.com) and Station ID
## Setup
Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.
Find your Station ID:
curl -s "https://swd.weatherflow.com/swd/rest/stations?token=YOUR_TOKEN" | python3 -m json.tool
Look for "station_id" in the response.
This content directly describes use of a personal access token and where to obtain it, while also stating it must be sent as a query parameter. Although this appears to be normal product documentation rather than an attempt to steal credentials, it still promotes a credential-handling pattern that increases exposure risk and could lead to token compromise if copied into client code, logs, or debugging output. The weather-skill context makes this more dangerous because secrets may be handled by low-scrutiny automation for a seemingly harmless data source.
All requests require `?token=YOUR_TOKEN` as a query parameter.
- **Personal Access Token**: Generated at tempestwx.com → Settings → Data Authorizations → Create Token
- **OAuth**: For multi-user applications (see Tempest OAuth docs)
Token is passed as a query param, not a header.
The skill performs network access and reads sensitive environment variables but does not declare any explicit tool scope or permissions boundary. That increases the chance the agent can invoke this skill with broader-than-expected capabilities, making credential use and outbound requests less transparent and harder to govern.
The trigger language is broad enough to match generic weather and outdoor-condition questions, even when the user did not intend to use a personal Tempest station or disclose station-linked data. This can cause unintended activation of a networked skill that uses private credentials and returns potentially sensitive location-associated sensor data.
The documentation instructs users to place a personal access token in the URL query string. Query-string credentials are commonly exposed through logs, browser history, proxy caches, monitoring systems, referrer leakage, and shared screenshots, making accidental credential disclosure more likely. In this skill context, the risk is somewhat elevated because the skill is specifically about live API access and may encourage direct copying of example URLs into tools and agent workflows.
This markdown file documents that the skill requires a Tempest Personal Access Token and sets it in environment variables, and it also states that the skill fetches live weather data from the Tempest REST API. Under the markdown-file criteria for missing user warnings, the description lacks an explicit warning about storing credentials in shell startup files and sending station/account-linked data to an external service.
No suspicious patterns detected.