Back to skill

Security audit

remember-birthdays

Security checks for vulnerabilities and agentic risk

Overview

This skill does what it claims, but it automatically sends and persists personal dates and relationship details to an external service without clear consent, deletion, or retention guidance.

Review before installing. Only use this skill if you are comfortable sending names, special dates, relationship context, privacy preferences, and greeting history to BlueColumn's remote service. Confirm each record with the user first, avoid storing sensitive context unless necessary, and make sure you understand how the API key, retention, deletion, and access controls work.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
Findings (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:13
Finding

Automatic Transmission and Persistence of Personal Information Without Explicit Consent

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 13-20
Vulnerability Type: Uncontrolled remote disclosure and persistence of personal information
Risk Level: Medium

Vulnerable Code

markdown
## Capture the date

Save each date the moment you learn it. Include the person's name, the date, and what kind of day it is.

```bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-remember \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Jane Almeida — birthday March 14. Wedding anniversary November 2 (married 2019).", "title": "dates - Jane Almeida"}'
text

Related instructions at `SKILL.md`, lines 31-37 and 39-47 also encourage storing relationship context, greeting activity, and privacy preferences.

### Technical Analysis

The instruction to “save each date the moment you learn it” directs the agent to transmit personal information automatically to a remote, project-specific Supabase endpoint. It does not require explicit confirmation from the user or the person whose information is being recorded.

The transmitted records can include identifiable names, birthdays, anniversaries, marriage years, memorial dates, relationship details, privacy preferences, and whether a greeting was sent. The skill does not define data-minimization rules, retention limits, deletion procedures, authorization boundaries, or restrictions on collecting information learned incidentally in unrelated conversations.

Although HTTPS protects data in transit and the API key is referenced through an environment variable rather than hardcoded, these controls do not prevent unauthorized or unexpected collection. The bearer credential is also supplied to an external endpoint, so misuse of that credential or unauthorized backend access could expose all records available to the key.

### Attack Path

1. The agent learns a person's birthday, anniv
...[truncated 1316 chars]
Remediation
View remediation

Remediation Suggestions

  1. Require explicit, informed user confirmation before every remote write, showing the exact information that will be transmitted.
  2. Clearly identify the remote data processor and explain that information leaves the current session and may be persisted.
  3. Apply data minimization by storing only the minimum required fields, such as an approved display name, event type, and date.
  4. Prohibit recording third-party personal information unless the user confirms that they are authorized to store it.
  5. Do not store relationship history, memorial context, privacy preferences, or conversational details unless they are strictly necessary and separately approved.
  6. Document and implement retention limits, deletion, export, correction, and revocation procedures.
  7. Use a verified first-party API hostname or clearly document and validate the relationship between the BlueColumn service and the Supabase endpoint.
  8. Scope API keys to the minimum necessary records and operations, rotate them regularly, and prevent request headers from appearing in logs.
  9. Enforce tenant isolation and authorization checks at every API endpoint rather than relying solely on possession of a bearer token.
  10. Add a preview or local-only mode so users can draft and review records without transmitting them.
Vulnerability Patterns
  • 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
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (4)

Harmful Content Injection

Critical
Category
Prompt Injection
Confidence
95% confidence
Finding

This content may contain harmful instructions that could cause physical harm if followed. CRITICAL: Review carefully before use.

Content

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

md
---
name: remember-birthdays
description: A personal date radar for birthdays and anniversaries. Use when an agent should greet someone on time, never double-book a celebration, or answer "whose special day is coming up". Requires a BlueColumn API key (bc_live_*).
---

# Remember Birthdays — BlueColumn Skill

People remember you when you remember their day. This skill keeps a searchable calendar of the dates that matter — birthdays, anniversaries, memorial days — so an agent can greet the right person at the right moment.

## Capture the date

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill instructs an agent to transmit sensitive personal data—names, birthdays, anniversaries, memorial days, and relationship details—to a remote third-party endpoint without any privacy notice, consent guidance, retention disclosure, or data-minimization warning. This creates a real privacy and compliance risk because highly personal date information is being centralized and made searchable, potentially exposing users or their contacts to unauthorized processing or misuse.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

The example explicitly sends personal information to an external HTTPS endpoint, including a person's name and significant dates. Even if the feature is intended, external transmission of personal data is security-relevant because it expands the attack surface and may violate user expectations if not clearly disclosed and controlled.

Content

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

Save each date the moment you learn it. Include the person's name, the date, and what kind of day it is.

bash
curl -X POST https://xkjkwqbfvkswwdmbtndo.supabase.co/functions/v1/agent-remember \
  -H "Authorization: Bearer $BLUECOLUMN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text": "Jane Almeida — birthday March 14. Wedding anniversary November 2 (married 2019).", "title": "dates - Jane Almeida"}'

Missing User Warnings

Low
Category
Not specified by scanner
Confidence
88% confidence
Finding

The metadata states that the skill requires a live BlueColumn API key but gives no warning about secure credential handling or that requests go to an external service. This can lead users or agents to expose secrets improperly or use production credentials without understanding the trust boundary.

Content

No source excerpt is available for this finding.