Back to skill

Security audit

Long Run Hybrid Coach

Security checks for vulnerabilities and agentic risk

Overview

This training coach is purpose-aligned, but it needs Review because important tool behavior and guidance come from a mutable remote MCP service before it reads training data or changes calendars.

Install only if you trust the Pace and Stay Strong MCP service or the athlete-operated gateway you configure, and only grant training-provider scopes you are comfortable sharing. Check the connected MCP host and requested authorization scopes, and require the exact calendar preview and explicit confirmation before any workout delivery or withdrawal. Do not rely on this skill for medical advice.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T08 · Insecure Dependencies

Warning
Location
SKILL.md:18
Finding
Mutable Remote MCP Instructions Fall Outside the Static Audit Boundary## Vulnerability Details **File Location**: `SKILL.md`, lines 18-39 and 44-53 **Vulnerability Type**: `T08: Insecure Dependencies` **Risk Level**: Medium ### Vulnerable Code Snippet ```markdown - **The operations this entry exposes** — the command surface, the delivery boundary, and the sequencing above them: which call answers a question, where exactly one confirmation stands before a write, and how to read a refusal. Their own descriptions, and the `coach_orchestration` prompt served beside them, are canonical for all of it. - **The field descriptions in what comes back** — where a field carries one, read it rather than inferring from the name; it is canonical and this file will not repeat it. Coverage is partial: most response fields are typed and undescribed today, so a name you cannot read confidently is an unknown to say out loud, never a meaning to guess at. - **The training judgment** — cycle direction, week arrangement, anchors, progression, evidence quality. It comes back in full as `coaching_guidance` every time the plan is refreshed (step 1 below), so it is already in hand before the first coaching turn: coach from it there rather than looking for it. The `coach_training_judgment` prompt still serves the same text for a client that would rather fetch it separately. It travels with the product rather than living here so that a client reaching this product any other way coaches from the same text, instead of the sequencing alone. **If those operations are not in front of you, the Skill is installed and the coach is not connected.** This file is instructions and nothing else. The plan, the evidence, and every operation named above arrive over a connection, so until one exists there is nothing to read a plan from. Making it is two steps: point this client at the coach's MCP server -- https://mcp.paceandstaystrong.com/mcp, or the athlete's own gateway if they run on ...[truncated 3421 chars]
Remediation
## Remediation Suggestions 1. Pin the MCP protocol, operation schema, and instruction bundle to an explicit reviewed version rather than accepting mutable canonical content. 2. Include the security-critical orchestration and authorization rules in the audited package, especially confirmation requirements and write boundaries. 3. Authenticate the MCP endpoint and verify the integrity of returned instruction bundles using signatures or cryptographic hashes. 4. Define a strict allowlist of permitted MCP operations, parameters, provider resources, and response types in the client. 5. Apply least-privilege provider scopes, separating read-only evidence access from plan or calendar write access where supported. 6. Treat remotely returned prompts and guidance as untrusted data that cannot override system, developer, user, authorization, or safety constraints. 7. Validate every state-changing operation locally and retain the explicit user-confirmation requirement independently of remote orchestration text. 8. Display the selected MCP host and requested authorization scopes before connection, particularly when an athlete-operated gateway is used. 9. Maintain auditable version and integrity metadata for the remote guidance used during each planning or write operation. 10. Fail closed if the remote schema, signature, host identity, or instruction version is unknown or differs from the approved configuration.
Vulnerability Patterns
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (1)

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
intermediate JSON.
8. Show every calendar effect in an exact preview and obtain one explicit
   confirmation. A plan change may include delivery and withdrawal in that same
   preview; retry unchanged approved effects without asking again. Report only
   delivery the product observed — Intervals accepting a workout is never
   evidence that Garmin Connect or the watch received it, and a strength day
   reaches the calendar as a title carrying no executable structure.
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Static analysis

No suspicious patterns detected.