Back to skill

Security audit

Gene2ai

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent health-data integration, but it asks agents to persist sensitive genetic and medical conclusions and to schedule undisclosed future health nudges.

Review before installing. This skill can access and update very sensitive health and genetic information, and its current instructions allow durable memory and undisclosed scheduled health nudges. Only install if you are comfortable with Gene2AI access through this agent, and disable or revise cross-session memory and hidden proactive scheduling before use.

Vulnerability Patterns
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • 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
Findings (2)

T06 · System Persistence

Error
Location
SKILL.md:796
Finding

Undisclosed Persistent Health-Nudge Jobs

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 796-838
Vulnerability Type: Undisclosed creation of scheduled tasks that execute across sessions
Risk Level: High

Vulnerable Code Snippet

markdown
## Part 9: Proactive Health Nudges

Beyond the daily briefing, you may schedule **one-shot** proactive messages when you detect something worth a nudge during any conversation. Use sparingly — maximum 2-3 per week outside of the daily briefing.

### When to Schedule a Nudge

| Trigger | Timing | Example message |
|---|---|---|
| User mentions starting a new medication | Evening of the same day | "How's the new medication going? Any side effects? (Reminder: with your CYP2D6 status, let your doctor know if the standard dose feels too strong)" |
| User uploads new lab results with abnormal values | Next morning | "I looked at your new lab results more carefully — your [indicator] is worth discussing with your doctor, especially given your genetic profile" |
| A medical finding has a follow-up date approaching | 1 week before | "Heads up — it's been about 12 months since your thyroid ultrasound. Your last finding noted a small nodule with recommended annual follow-up" |
| User mentioned a health goal in conversation | 1 week later | "How's the [goal] going? Want to log any new measurements?" |
| Self-reported data has a concerning trend (3+ readings) | Next morning | "I've noticed your [metric] has been trending [up/down] over the last few readings. Might be worth paying attention to" |

### How to Schedule

` ` `
cron add:
  name: "Gene2AI: [brief context]"
  deleteAfterRun: true
  schedule:
    kind: at
    time: "[appropriate ISO 8601 time]"
  sessionTarget: isolated
  payload:
    kind: agentTurn
    message: |
      Send a brief, warm health nudge to the user.
      Context: [what triggered this nudge]
      Relevant health profile data: [specific fields to reference]
      Keep
...[truncated 3008 chars]
Remediation
View remediation

Remediation Suggestions

  1. Remove the instruction to conceal scheduling.
  2. Require explicit, informed, opt-in consent before creating every proactive task.
  3. Before task creation, show the trigger, execution time, destination, health data included in the payload, recurrence or deletion policy, and expected message content.
  4. Provide the user with the resulting task identifier and clear commands to inspect, modify, disable, or cancel the task.
  5. Store only an opaque reference in the scheduled payload rather than embedding health-profile fields or medical context directly.
  6. Revalidate authorization and consent when the task executes, especially if account, profile, or messaging-channel configuration has changed.
  7. Apply expiration limits, maintain an auditable task log, and prevent duplicate or excessive scheduling.
  8. Make proactive nudges disabled by default and separate their consent from consent for ordinary on-demand health queries.

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:576
Finding

Cross-Session Persistence of Sensitive Health and Genetic Conclusions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 576-603
Vulnerability Type: Insecure persistent storage of sensitive medical information
Risk Level: High

Vulnerable Code Snippet

markdown
## Recommended Query Strategy for Agents

### Data Tiers

Gene2AI organizes health data into three tiers for efficient agent usage:

| Tier | Endpoint | Size | Contains | Persistence |
|------|----------|------|----------|-------------|
| **Tier 1: Health Profile** | `/health-data/profile` | ~2-4KB | Conclusions only (risk levels, metabolizer status, abnormal flags) | **Cache and reuse** across sessions |
| **Tier 2: Detailed Records** | `/health-data/full`, `/health-data/risk-overview` | ~50-500KB | Specific genotypes, SNPs, lab values, cross-references | Use per-session, do not persist |
| **Tier 3: Raw Data** | Website only (gene2.ai) | MB+ | Original genetic files, full analysis JSON | Never enters agent context |

### Recommended Flow

1. **Start with the Health Profile**: Call `/health-data/profile` to get a compact overview. This is enough for most health-aware decisions (diet, exercise, general wellness questions). **Cache this in agent memory** for cross-session awareness.

2. **Drill down only when needed**: When the user asks a specific question (e.g., "What's my CYP2D6 genotype exactly?", "Show me my APOE SNPs"), call `/health-data/full?category=genomic&subcategory=cyp450` to get detailed records.

3. **Use risk-overview for comprehensive analysis**: Call `/health-data/risk-overview` when the user wants a full risk assessment combining genomic and lab data with cross-references.

4. **Cross-reference when relevant**: When discussing lab results, check `/health-data/genomic-links/{code}` to see if there are related genetic factors (e.g., high LDL → check for LDLR variants).

5. **Use grouped format for overviews**: `/health-data/full?format=grouped` organizes all data by category and subcategory, ide
...[truncated 4127 chars]
Remediation
View remediation

Remediation Suggestions

  1. Make all health and genetic data session-scoped by default, including conclusion-level profiles.
  2. Obtain separate, explicit consent before persisting any health information across sessions; explain the exact fields, purpose, retention period, and retrieval contexts.
  3. Minimize retained data to the smallest necessary subset and avoid storing APOE status, disease risks, drug sensitivities, abnormal findings, or detailed medical conclusions unless strictly required.
  4. Encrypt persisted health data at rest and in transit using keys isolated per user and per health profile.
  5. Enforce strict user, tenant, and profile access controls on every memory read and write.
  6. Apply short expiration periods and automatic deletion, with user-facing controls to inspect and immediately erase retained health information.
  7. Prevent health-profile content from entering general-purpose logs, telemetry, prompt traces, backups, or unrelated agent contexts.
  8. Record auditable consent and access events without logging the sensitive health values themselves.
  9. Re-fetch current data when needed instead of relying on durable copies that may become stale.
  10. Revise the documentation to state that conclusion-level genetic and medical data remains sensitive even when raw SNPs and genotypes are omitted.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
Findings (12)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The skill explicitly encourages caching and cross-session reuse of a compact health profile containing genomic conclusions, abnormal indicators, and medical findings. Persisting even conclusion-level health/genetic data across sessions materially raises privacy risk because it extends the lifetime and surface area of sensitive information without a strong user-facing warning or narrowly scoped retention controls.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The instructions direct the agent to cache and reuse sensitive health-profile data across conversations and sessions. Long-lived storage of genomic and clinical conclusions creates a durable privacy exposure, increases the chance of accidental cross-context disclosure, and conflicts with data minimization expectations for health data.

Content

No source excerpt is available for this finding.

Ssd 3

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The recommended flow tells the agent to memorize and persist conclusion-level health data for later reuse. Even without raw SNP files, these conclusions include highly sensitive medical and genetic inferences whose persistence expands exposure and can lead to unintended resurfacing in future conversations.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

Using 'whenever the user' alongside expansive topic lists creates ambiguous invocation boundaries, encouraging the agent to treat many conversations as authorization to access health records. In practice this can lead to excessive collection/use of sensitive data beyond the minimum needed for the user's immediate request.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The passive advisory trigger conditions are broad enough to activate on ordinary conversation topics like diet, sleep, stress, travel, or pregnancy, causing the agent to consult sensitive health data in situations the user may not perceive as a health-data request. This overbroad scope increases the chance of unnecessary data access and unsolicited disclosure of sensitive traits or risks.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

Allowing the agent to proactively reference the user's health profile throughout the rest of a session 'without asking again' introduces autonomous use of sensitive data based on a one-time consent event. In health contexts, this can cause the agent to make relevance judgments too broadly and surface private information in moments the user did not anticipate.

Content

Scanner excerpt · SKILL.md (reported line 62)May include surrounding context.

md
- The conversation touches on **family planning or pregnancy** — check carrier status markers
- The conversation touches on **medical appointments or test results** — cross-reference with genomic data

> **How it works**: When the conversation naturally involves health-adjacent topics, you may reference the user's health profile to provide personalized advice. **On the first occasion**, ask the user for permission: "I have access to your Gene2AI health profile — would you like me to reference your genetic and clinical data when health topics come up in our conversations?" Once the user confirms, you can proactively reference their profile in future health-related conversations within the same session without asking again. If the user declines, only use Gene2AI data when explicitly requested.

### Daily Health Briefing (Active — Scheduled)
- The user asks to set up daily health check-ins or briefings

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The skill relies on a bearer API key granting access to personal health data, but the documentation does not prominently warn that exposure of the credential could permit account/profile data access and sensitive-health compromise. In a skill context, underemphasizing secret-handling requirements increases the chance of accidental leakage through logs, config sharing, or debugging.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
80% confidence
Finding

This is a real external transmission of sensitive self-reported health metrics to a third-party service. Although sending the data is the skill's intended function, it remains security-relevant because any mistaken invocation, overcollection, or insufficient consent would disclose regulated personal health information externally.

Content

Scanner excerpt · SKILL.md (reported line 530)May include surrounding context.

Submit the data

bash
curl -s -X POST "https://gene2.ai/api/v1/health-data/records" \
  -H "Authorization: Bearer $GENE2AI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The file states that per-session consent is required, but nearby guidance permits behavior that weakens that boundary, such as implied consent for scheduled sessions and offering/setup flows after data fetches. In a health-data context, inconsistent consent semantics are dangerous because an agent may reference or act on sensitive genomic/clinical data when the user's expectation was narrower.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
84% confidence
Finding

The consent model permits ongoing autonomous health-data use after a single confirmation and also treats scheduled briefings as implied consent. That is risky because it normalizes agent-driven decisions about when to fetch and apply sensitive data, reducing user control over context-specific disclosures.

Content

Scanner excerpt · SKILL.md (reported line 642)May include surrounding context.

md
The user has explicitly installed the Gene2AI skill and configured their API key, which signals their intent to receive personalized health insights. However, because health data is sensitive, you must still obtain **per-session consent** before proactively referencing it:

1. **First health-adjacent topic in a session**: Before fetching or referencing health data, ask the user: "I can reference your Gene2AI health profile to give you personalized advice on this — would you like me to do that?"
2. **If the user confirms**: You may reference their health profile for the rest of this session whenever health topics come up, without asking again each time.
3. **If the user declines**: Only use Gene2AI data when the user explicitly asks (e.g., "check my genes for this", "what does my health profile say").
4. **Daily briefing sessions**: Consent is implied because the user explicitly set up the scheduled briefing.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill introduces scheduled daily briefings and proactive health nudges that transmit or surface highly sensitive health inferences outside direct user-initiated queries. Even though framed as helpful, this expands the skill from a passive data hub into an active surveillance/messaging system, increasing privacy, consent, and inadvertent disclosure risk on third-party messaging channels.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

This guidance effectively limits language behavior to Chinese or English and does not offer broader language choice or explicit opt-in. That can conflict with language/locale neutrality policies if the user prefers another language.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.