Back to skill

Security audit

Whoop Skill

Security checks across malware telemetry and agentic risk

Overview

This is a coherent WHOOP health-data CLI, but it handles sensitive health data and stores OAuth tokens locally, so users should install it only in an environment they trust.

Use this only if you are comfortable granting read access to your WHOOP health and profile data. Keep WHOOP_CLIENT_SECRET and any .env file private, avoid running it on shared machines or in logged terminals, protect ~/.whoop-cli/tokens.json, and use whoopskill auth logout or revoke the WHOOP app when you no longer need access. Treat the insights as general wellness suggestions, not medical advice.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (11)

Lp3

Medium
Category
MCP Least Privilege
Confidence
91% confidence
Finding
The skill requires environment secrets and network access to perform OAuth and API calls, but it does not declare any explicit permissions boundary in the skill manifest. That creates a transparency and review gap: operators may authorize a skill that can access secrets and send data externally without clear disclosure or least-privilege controls.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The skill handles highly sensitive health and identity data, including sleep, recovery, HRV, profile email/name, and documents local token storage at ~/.whoop-cli/tokens.json, but provides no explicit privacy or security warning. In this context, omission is dangerous because users may unknowingly expose regulated or intimate personal data in terminal logs, agent transcripts, shared environments, backups, or through theft of locally stored refresh/access tokens.

Missing User Warnings

Medium
Confidence
86% confidence
Finding
The code persists OAuth tokens locally via saveTokens(tokens) immediately after login, but it does not warn the user that long-lived credentials, including an offline refresh token, will be stored on disk. In a CLI handling sensitive health data, silent persistence increases the chance that tokens are left behind on shared systems or developer workstations and later abused for unauthorized API access.

Missing User Warnings

Medium
Confidence
82% confidence
Finding
The skill retrieves highly sensitive health data from a remote API but does not provide any explicit user-facing notice at the point of use that personal health information will be transmitted over the network and processed. In a health-data context, insufficient disclosure increases privacy risk and can lead users to expose sensitive recovery, sleep, cycle, workout, and profile data without informed consent.

Missing User Warnings

Medium
Confidence
95% confidence
Finding
The code generates concrete wellness recommendations such as training intensity, rest, hydration, and sleep actions based on health metrics, but it does not present any disclaimer that these outputs are heuristic and not medical advice. In a health-focused skill, users may over-trust the recommendations and make decisions affecting exercise, recovery, or health management without appropriate caution or clinician input.

Unpinned Dependencies

Low
Category
Supply Chain
Content
"author": "",
  "license": "MIT",
  "dependencies": {
    "commander": "^12.1.0",
    "dotenv": "^16.4.0",
    "open": "^10.1.0"
  },
Confidence
90% confidence
Finding
"commander": "^12.1.0"

Unpinned Dependencies

Low
Category
Supply Chain
Content
"license": "MIT",
  "dependencies": {
    "commander": "^12.1.0",
    "dotenv": "^16.4.0",
    "open": "^10.1.0"
  },
  "devDependencies": {
Confidence
90% confidence
Finding
"dotenv": "^16.4.0"

Unpinned Dependencies

Low
Category
Supply Chain
Content
"dependencies": {
    "commander": "^12.1.0",
    "dotenv": "^16.4.0",
    "open": "^10.1.0"
  },
  "devDependencies": {
    "@types/node": "^22.10.0",
Confidence
90% confidence
Finding
"open": "^10.1.0"

Unpinned Dependencies

Low
Category
Supply Chain
Content
"open": "^10.1.0"
  },
  "devDependencies": {
    "@types/node": "^22.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.7.0"
  }
Confidence
83% confidence
Finding
"@types/node": "^22.10.0"

Unpinned Dependencies

Low
Category
Supply Chain
Content
},
  "devDependencies": {
    "@types/node": "^22.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.7.0"
  }
}
Confidence
85% confidence
Finding
"tsx": "^4.19.0"

Unpinned Dependencies

Low
Category
Supply Chain
Content
"devDependencies": {
    "@types/node": "^22.10.0",
    "tsx": "^4.19.0",
    "typescript": "^5.7.0"
  }
}
Confidence
83% confidence
Finding
"typescript": "^5.7.0"

VirusTotal

66/66 vendors flagged this skill as clean.

View on VirusTotal

Static analysis

Detected: suspicious.exposed_secret_literal, suspicious.potential_exfiltration

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
src/auth/tokens.ts:23

Sensitive-looking file read is paired with a network send.

Warn
Code
suspicious.potential_exfiltration
Location
src/auth/tokens.ts:40