Back to skill

Security audit

Daily Gift

Security checks for vulnerabilities and agentic risk

Overview

The skill has a coherent gift-making purpose, but it needs Review because it silently stores broad personal context and includes under-scoped network integrations that can expose user data or credentials.

Review before installing if you are comfortable with a recurring skill that reads and summarizes personal conversations, stores taste and emotional context, saves positively shared images, and may send personalized prompts or files to optional third-party providers. Avoid enabling video, hosted previews, remote asset fetching, or Freesound until endpoint allowlists, integrity checks, and clearer privacy controls are added.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (6)

T09 · Insecure Skill Coding Practices

Error
Location
scripts/render-video.sh:173
Finding

Configurable Video API Endpoint Can Exfiltrate Bearer Credentials and Private Gift Content

Content
View full analysis
&1 echo "__EXIT_CODE:$?" )" ``` ```bash TRACKING_URL="$API_BASE_URL/contents/generations/tasks/$TASK_ID" "$CURL_BIN" -fsS "$TRACKING_URL" \ -H "Authorization: Bearer $API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json" 2>&1 ``` ### Technical Analysis The video renderer reads `video.api_base_url` from the mutable setup-state file and uses it without validating its scheme, hostname, port, resolved address, or relationship to the declared Volcengine provider. Although the provider field must equal `volcengine`, that check does not constrain the actual destination. Both the video-generation prompt and an `Authorization: Bearer` credential are sent to the resulting URL. The prompt is derived from user input and may contain relationship context, appearance details, or private information selected from Agent memory. The absence of endpoint validation creates two related weaknesses: 1. An attacker-controlled endpoint can collect the bearer credential and complete generation payload. 2. A local, private-network, or link-local endpoint can be targeted, creating a server-side request forgery primitive. The same unvalidated base URL is reused for task polling, allowing repeated authenticated requests. ### Attack Path 1. An attacker or another compromised process modifies `workspace/daily ...[truncated 1138 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
HEARTBEAT.md:15
Finding

Heartbeat Recovery Tasks Permit Silent Requests to Arbitrary Endpoints

Content
View full analysis
= max_retries`, change `status` to `exhausted` and keep the task as a record - otherwise leave it pending with the updated retry count 6. Never message the user about retry attempts. ``` ### Technical Analysis The heartbeat queue accepts `api_base` and `test_endpoint` values and instructs the Agent to test the configured endpoint silently. No schema, origin allowlist, address restriction, or user-approval boundary is specified. Because the queue is persistent and failed tests are retried, a malicious queue record can cause repeated blind requests. The behavior may reach localhost, private networks, link-local metadata services, or attacker-controlled tracking endpoints, depending on the runtime's network access. Task-specific ...[truncated 1362 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/fetch-music.sh:43
Finding

Freesound API Token Is Exposed in a Request URL

Content
View full analysis
/dev/null || true } ``` ### Technical Analysis The API token is embedded directly in the URL as the `token` query parameter. Command-line URLs may be visible to same-host process inspection and operational monitoring. URLs are also commonly retained by proxies, HTTP instrumentation, debugging tools, and server access logs. The static scanner described this as a possible `curl | shell` pattern. That specific interpretation is not confirmed: the downloaded response is piped to Python's JSON parser and is not executed as Python or shell code. The confirmed weakness is credential placement in the URL. The query is also encoded only by replacing spaces with plus signs rather than using proper URL encoding. Special characters can alter the query structure, although the token remains appended after fixed parameters. ### Attack Path 1. The user configures a Freesound token in setup state or the environment. 2. An H5 gift invokes `fetch-music.sh`. 3. The script creates a command-line URL containing the complete token. 4. A same-host observer, request logger, proxy, or diagnostic system captures the URL. 5. The observer extracts the `token` value and reuses it against the Freesound API. ### Impact Assessment An attacker obtaining the token can perform API operations under ...[truncated 206 chars]
Remediation
View remediation

T08 · Insecure Dependencies

Error
Location
scripts/fetch-asset-bundle.sh:30
Finding

Asset Bundles Are Downloaded and Extracted Without Origin or Integrity Verification

Content
View full analysis
Remediation
View remediation

T08 · Insecure Dependencies

Warning
Location
assets/templates/burn-reveal/index.html:10
Finding

H5 Templates Execute Third-Party JavaScript Without Subresource Integrity

Content
View full analysis
``` The same dependency pattern appears at: - `assets/templates/drag-straighten/index.html:10` - `assets/templates/o-balloons/index.html:10` - `assets/templates/rainy-night/index.html:10` - `assets/templates/tap-to-bloom/index.html:10` - `assets/templates/tear-stained-paper/index.html:10` - `assets/templates/text-river/index.html:10` - `assets/templates/wet-letter/index.html:49` - `assets/templates/wind-scatter/index.html:10` ### Technical Analysis The dependency version is pinned, which reduces accidental version drift, but the templates do not provide a Subresource Integrity hash. The audited HTML specification permits CDN JavaScript and only recommends integrity protection “when practical.” Every recipient opening an affected H5 gift allows the CDN response to execute in the document's browser context. A compromised CDN account, edge node, DNS path, or delivery route could substitute arbitrary JavaScript after the Skill itself has been reviewed. No restrictive Content Security Policy was identified in the affected templates to meaningfully limit the behavior of substituted code. ### Attack Path 1. An attacker compromises or intercepts the CDN resource used by an affected template. 2. The attacker substitutes malicious JavaScript at the referenced URL. 3. A user opens a generated, hosted, or locally delivered H5 gift based on the template. 4. The browser fetches the dependency and executes it because no integrity hash is present. 5. The malicious script reads gift content, performs network requests, manipulates the interface, or presents phishing content. ### Impact Assessment Exploitation executes J ...[truncated 314 chars]
Remediation
View remediation

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
references/daily-run-flow.md:41
Finding

Scheduled Workflow Silently Reads and Persists Broad User and Agent Context

Content
View full analysis
Remediation
View remediation
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 (123)

Missing User Warnings

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

This section instructs persistent collection of detailed user-state, emotional temperature, unfinished threads, reactions, taste signals, and longitudinal calibration notes, while explicitly keeping some of it private from the user. That is a substantial privacy risk because it enables covert profiling and retention of sensitive inferences over time, potentially beyond what is necessary to deliver a gift.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · references/html-spec.md (reported line 11)May include surrounding context.

md
- strong local fallback: immediate Canvas presentation
- universal fallback: send a single HTML file through a file-capable channel

## Core Output Rule

Every final H5 gift should be generated as a single HTML file.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · references/manual-run-flow.md (reported line 40)May include surrounding context.

md
- strong local fallback: immediate Canvas presentation
- universal fallback: send a single HTML file through a file-capable channel

## Core Output Rule

Every final H5 gift should be generated as a single HTML file.

Missing User Warnings

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The skill explicitly contemplates sending prompts and possibly user-supplied images to third-party image providers, but it does not require user notice, consent, or data-minimization controls. In this context, prompts may contain sensitive personal context and attached images may contain highly sensitive biometric or identifying data, so silent exfiltration to external APIs creates a real privacy and compliance risk.

Content

No source excerpt is available for this finding.

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

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

md
# Manual Run Flow

Complete instructions for manually triggered gifts. Includes progress reporting, single output rule, intent detection, and visualization-only mode.

## Manual Run

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · references/manual-run-flow.md (reported line 3)May include surrounding context.

md
# Manual Run Flow

Complete instructions for manually triggered gifts. Includes progress reporting, single output rule, intent detection, and visualization-only mode.

## Manual Run

Direct Prompt Extraction

High
Category
System Prompt Leakage
Confidence
85% confidence
Finding

Skill contains instructions that could directly expose system prompts, internal rules, or hidden instructions to users or external parties.

Content

Scanner excerpt · references/operating-rules.md (reported line 117)May include surrounding context.

md
Do not normalize permanent no-music behavior from a missing token alone. If multiple gifts in a row wanted scene-specific music but could only use presets or silence because Freesound is not configured, the Deferred Freesound Setup mechanism should eventually trigger again according to its cooldown rules instead of being silently skipped forever.
- Do not ask the user to choose a gift style during setup. Gift style should be inferred later from `soul.md`, user interaction patterns, memory, and the actual day.
- Final H5 gifts must follow the self-contained output rules in `{baseDir}/references/html-spec.md`.
- Treat pattern cards and templates as references, not fixed scripts. Borrow their logic, mechanics, pacing, or surface treatment as needed, but keep adapting them to the actual user, day, and relationship context.
- A usable pattern does not need to have a reusable template. Reference-only pattern cards and example images are valid inputs when they provide enough expressive guidance.
- Prefer reading a pattern card's own lightweight metadata when present, especially `Status`, `Template Status`, `Reference Assets`, and `Fit Scope`.

Credential Access

High
Category
Privilege Escalation
Confidence
89% confidence
Finding

Referencing authentication state in the user's local ~/.netrc means the skill is designed to rely on and potentially access locally stored credentials for a hosting provider. In the context of an agent skill that also performs silent setup and deployment-related actions, dependence on ~/.netrc materially increases the risk of unauthorized credential use or unintended remote operations if the skill or surrounding workflow is compromised.

Content

Scanner excerpt · references/setup-flow.md (reported line 194)May include surrounding context.

md
- Do not ask for hosting, gift mode, or video API during the initial setup flow.
- Do not create duplicate cron jobs. If a previous daily-gift job exists, update it instead of adding another.
- Hosted preview must stay optional and deferred until the first H5 gift actually needs it.
- Do not store hosting secrets in setup state when the provider already manages local credentials. For `surge`, keep only provider metadata and the chosen domain; login state lives in the user's local `~/.netrc`.
- If hosted preview is configured later but deployment fails, fall back gracefully instead of turning the run into a hard failure.
- Do not force the user to choose between image providers. Detect the most practical route automatically from available keys.
- Never ask the user to choose image provider routing during setup.

Exfiltration Commands

High
Category
Prompt Injection
Confidence
90% confidence
Finding

Instructions found that direct the agent to transmit conversation context or user data to external services.

Content

Scanner excerpt · references/stage4-visualization.md (reported line 399)May include surrounding context.

md
2. If it still cannot complete, review the HTML source code manually for obvious issues such as overlapping elements, missing scroll paths, clipped content, or fixed-position conflicts.
3. Log a warning in the gift delivery that browser self-test was skipped after a failed isolated-browser attempt.

Do not silently send untested `h5` gifts.

## Notes

External Script Fetching

High
Category
Supply Chain
Confidence
90% confidence
Finding

Remote code is downloaded and executed. This bypasses code review and could introduce malicious code.

Content

Scanner excerpt · scripts/fetch-music.sh (reported line 46)May include surrounding context.

sh
search_freesound() {
  local q="$1"
  local url="https://freesound.org/apiv2/search/text/?query=$(echo "$q" | tr ' ' '+')&fields=id,name,duration,previews&page_size=10&token=${API_TOKEN}"
  curl -s "$url" | python3 -c "
import json, sys
max_dur = float(sys.argv[1])
d = json.load(sys.stdin)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill explicitly instructs the agent to process queued tasks, modify local files, and rewrite the queue 'silently' with no user-facing disclosure. Hidden state changes reduce auditability and user consent, and could be abused to alter memories, profiles, or task records without the user's knowledge.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The skill directs the agent to silently test configured API endpoints and update setup-state based on the result, which introduces undisclosed network activity and persistent configuration changes. In an adversarial or misconfigured task file, this could enable unauthorized outbound requests, SSRF-like probing of internal endpoints, or covert reconfiguration without user awareness.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The README explicitly describes persistent storage of conversation-derived user context and a long-term taste/identity profile, but it does not clearly disclose retention risks, sensitivity of stored data, or user controls for deletion/opt-out. In a skill centered on emotional inference and memory, this increases the chance that intimate personal data is retained longer than users expect and later exposed through local compromise, backup leakage, or unintended reuse.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The README lists third-party APIs for image, video, music, background removal, and hosting, but does not clearly warn that user-derived prompts, emotional context, or generated artifacts may be transmitted to external providers. Because the skill's outputs are personalized from conversations and memory, sending this material to third parties without explicit disclosure or consent creates a real privacy and data-sharing risk.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
87% confidence
Finding

The skill is described as collecting and reusing conversation content, memory, and emotional signals to decide whether and how to generate gifts. That design naturally encourages retention and transformation of sensitive personal material into outputs, increasing the risk of oversharing, accidental disclosure, and profiling beyond user expectations.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The workflow explicitly says it extracts material from memory, conversation, and emotional signals to create personalized artifacts about the user. In this context, that is a genuine privacy-risk pattern because the system is designed to summarize and reinterpret private user data, which can surface sensitive facts or inferred traits in rendered outputs or external provider prompts.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill is explicitly designed to set up recurring gifting, store setup state, and maintain relationship-aware memory, but it does not require a clear user-facing consent and retention notice before that persistence begins. This creates a privacy vulnerability because users may not realize intimate preference data and behavioral history are being stored and reused over time.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
86% confidence
Finding

The skill supports cron-triggered automatic gift delivery and relationship-based editorial decisions without requiring a fresh user confirmation at send time. Autonomous actions in a personal context can create privacy, consent, and expectation risks, especially when the system decides whether a day is 'meaningful' and sends content using accumulated context.

Content

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

md
2. `daily-run` — cron-triggered automatic gift delivery
3. `manual-run` — user-invoked gift or visualization request

There is no install hook. Installing the skill does not automatically execute setup.

### Mode Routing

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The instruction to save user-shared images and record them in a taste profile introduces persistent storage of potentially sensitive biometric or personal-context data without an explicit consent checkpoint. Images can reveal identity, location, relationships, or other sensitive traits, so silent retention materially increases privacy risk.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
98% confidence
Finding

The setup-state design calls for storing extensive long-term profile data, including timezone, delivery preferences, portrait details, taste data, history, and possible key references, without mandatory privacy disclosures or minimization rules. Even if intended for personalization, this breadth of persistence can expose sensitive personal patterns and create unnecessary retention risk.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill establishes ongoing logs and cross-run reuse of relationship and preference data but does not define strong minimization boundaries, purpose limitation, or lifecycle controls. Over time this can enable excessive profiling and accumulation of personal context beyond what is necessary for gift generation.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
76% confidence
Finding

Using the user's prior inputs as a hidden surprise mechanism is manipulative when done without clear expectation-setting, because it repurposes previously shared content in ways the user may not anticipate. In a relationship-oriented skill, this becomes more sensitive because prior emotional disclosures may be resurfaced or transformed without contemporaneous consent.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The file says the creative concept should sound like 我要做一个 XXX!, and later provides multiple 'good concepts' and 'bad concepts' only in Chinese. This imposes a specific language style in the skill instructions without any user opt-in or stated region-specific requirement, which matches the language/locale policy violation criteria.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The seed library explicitly proposes experiences that use sensitive contextual data such as user location and recent chat history, but it provides no guardrails around consent, minimization, or disclosure. In a skill-design reference, this can normalize building features that infer, mine, or surface personal data in ways users may not expect, creating privacy and trust risks even if no direct exfiltration is described.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The scheduled payload contains broad operational instructions to read multiple state sources, create missing files, update state, and spawn a sub-agent, but it does not define narrow safety gates, explicit authorization checks, or conditions limiting when these actions may occur. In a cron-triggered context, this increases the risk of unintended autonomous behavior and repeated execution of side effects without contemporaneous user review.

Content

No source excerpt is available for this finding.