T08 · Insecure Dependencies
- Location
SKILL.md:84- Finding
Execution of an Unpinned Remote npm Package with Access to Sensitive Athlete Data
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This endurance-coaching skill is purpose-aligned, but its Strava setup asks for sensitive OAuth material and runs an unpinned npm tool that handles private activity data.
Review before installing. The skill does not show evidence of deception, exfiltration, or destructive behavior, but you should not paste Strava Client Secrets or OAuth redirect URLs into chat, and you should avoid running unpinned `npx claude-coach` commands unless you independently trust and pin the package. If you use Strava sync, understand that up to two years of activity history may be stored locally and ask how to delete or revoke the stored data and tokens. Treat training, testing, caffeine, hydration, and nutrition numbers as general coaching ranges, not medical advice.
SKILL.md:84Execution of an Unpinned Remote npm Package with Access to Sensitive Athlete Data
SKILL.md:68OAuth Secrets and Authorization Codes Passed Through Command-Line Arguments and Conversation Input
The skill explicitly instructs the user to reveal their Strava Client Secret to the agent. Client secrets are sensitive credentials intended to remain private to the application owner; exposing them in chat or to an LLM-backed tool can enable unauthorized API use, token issuance, and downstream account or data compromise. Because the skill also uses the secret immediately in CLI commands, the exposure is operational rather than hypothetical.
The skill directs syncing two years of Strava activity history and storing it locally without an explicit privacy notice or consent language about scope, retention, and sensitivity. Endurance activity history can reveal location patterns, routines, home/work inference, health signals, and event participation, so bulk collection increases privacy risk if the machine, database, or downstream logs are exposed.
This section gives progression guidance and a concrete long-session build example that could be followed literally by users, but it lacks a prominent safety qualifier about medical status, injury history, age, and the need to individualize load. In a coaching skill, prescriptive endurance progression without strong screening and caution language can contribute to overuse injury or unsafe training escalation, especially for beginners or users returning from illness or injury.
The file presents minimum weekly hours, distances, and demanding key workouts for Ironman, 70.3, and marathon training in a normative way, without a prominent warning that these loads may be unsafe for users lacking medical readiness or an adequate training base. Because this skill is explicitly for personalized endurance coaching, users may treat these figures as authoritative targets, increasing the risk of injury, overtraining, cardiovascular events, or dangerous exertion.
This file gives specific carbohydrate, fluid, sodium, heart-rate, and caffeine targets for long endurance events without a clear user-facing warning that these ranges must be individualized based on body size, medical conditions, heat tolerance, sweat rate, medication use, and prior gut training. In a coaching skill, users may treat these values as prescriptive medical-grade advice; misapplication can contribute to dehydration, hyponatremia, GI distress, overexertion, or unsafe caffeine intake during prolonged events.
This section prescribes an explicitly advanced, high-intensity VO2max swim workout without nearby safety guidance, screening criteria, or adaptation rules for less-trained, injured, or fatigued users. In a coaching skill that may generate personalized training plans, omission of scaling and contraindication guidance can contribute to overexertion, aggravation of injury, or unsafe training recommendations if surfaced directly to users.
The file gives multiple maximal or all-out field testing protocols (30-minute threshold run, 20-minute FTP test, CSS time trials) without screening guidance, contraindications, or advice to stop if symptoms occur. In a coaching skill, users may treat these as actionable instructions and attempt high-intensity testing despite injury, illness, inexperience, or cardiovascular risk, increasing the chance of acute harm or overexertion.
The skill describes exchanging OAuth codes for access tokens and storing resulting data locally, which confirms it is handling authentication material. Even if the literal phrase is informational, the surrounding workflow collects credentials and redirect URLs in-chat, creating a credential-access pattern where sensitive tokens or code-bearing URLs may be exposed to the agent, logs, or other tooling. In a coaching skill, this is more dangerous because credential handling is ancillary to the core function and can be implemented without exposing secrets to the model.
This will:
1. Exchange the code for access tokens
2. Fetch 2 years of activity history
3. Store everything in `~/.claude-coach/coach.db`
No suspicious patterns detected.