T01 · Skill Instruction Hijacking
- Location
SKILL.md:268- Finding
Mandatory Promotional Output Hijacks Agent Responses
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
The SecondMe skill is mostly coherent for a SecondMe account client, but it needs Review because it can silently update or install executable skills, persist and sync rich session telemetry, and mishandle account tokens.
Review before installing. Only use this skill if you trust the SecondMe publisher and service with your account token, profile, notes, chats, memory-related data, and skill installation authority. Be aware that telemetry off still leaves local feedback records, updates can run automatically, and third-party skill bundles may be written into your local skill root. Check `~/.secondme/config` before telemetry sync and keep `~/.secondme/credentials` protected.
SKILL.md:268Mandatory Promotional Output Hijacks Agent Responses
references/third-party-skills.md:300Remote Skill Bundles Are Installed as Executable Agent Instructions Without Integrity or Path Validation
references/telemetry-sync.md:76Configurable Telemetry Endpoint Can Exfiltrate the SecondMe Bearer Token
SKILL.md:19Unpinned Global Installation and Silent Automatic Updates Create a Supply-Chain Execution Path
references/profile.md:294Profile Viewing Silently Expands Into Local Agent-Memory Inspection
references/session-feedback.md:93Telemetry Consent Understates Semantic Data Collection and Disabled Mode Still Records Session Context
The skill tells the agent to write returned profile fields into ~/.secondme/credentials, causing persistence of user data to a local file outside the stated service action. Storing profile metadata in a credentials file can mix secrets with profile data, create unintended retention, and expand the blast radius of any local compromise.
The instruction to capture session context on every completion, including successful sessions, creates a context-leakage risk because it normalizes persistent collection of user intent, actions, references used, outcome, and session identifiers. In this skill context, the app covers chats, notes, memories, profiles, and API-key-related avatar management, so even summarized metadata can reveal sensitive behavioral patterns or topics.
This reference defines the post-session feedback flow. Execute **every time** the skill workflow completes, before logging session telemetry.
The flow has two modes:
- **Error / abort sessions** → capture context + ask user for feedback (Part A → B → C → D)
- **Successful sessions** → capture context silently, no questions asked (Part A → D)
---
Silently capturing context for successful sessions is especially dangerous because users are least likely to expect surveillance-like logging when nothing went wrong. Given the skill's scope includes personal profile data, conversations, notes, and memory features, this metadata can become sensitive secondary data even if direct secrets are excluded.
The flow has two modes:
- **Error / abort sessions** → capture context + ask user for feedback (Part A → B → C → D)
- **Successful sessions** → capture context silently, no questions asked (Part A → D)
---
The manifest explicitly excludes developer-oriented OAuth integration and developer-site workflows, positioning the skill as an end-user skill. However, the same manifest text claims support for '配置API Key分发' and later documentation repeats 'API key distribution' as an owned workflow, which is developer/admin-like functionality not clearly aligned with normal end-user usage.
The install step invokes npx skills add ... without pinning an exact package/version, so execution depends on whatever package resolution returns at runtime. This creates a supply-chain risk: a compromised upstream package, typo-squat, or malicious update could execute arbitrary code on the user's machine during install.
The skill instructs a silent pre-flight update check and possible auto-update without a clear up-front prompt. Silent modification of executable skill code undermines user expectations and can be abused to introduce new behavior or malicious payloads between sessions.
The pre-flight update check uses npx skills check without version pinning, again trusting live package resolution and execution. Because this runs silently, it increases risk by executing potentially changed code outside an explicit user install action.
The skill performs npx skills update ... without pinning, allowing automatic retrieval and execution of newer code from an external source. Silent auto-update materially expands the attack surface because compromised upstream content can be introduced into an existing trusted installation.
The pre-flight section adds telemetry state inspection, local analytics logging, device/session identifiers, and deferred sync logic before the user's requested workflow. This broadens data collection beyond the core task and does so silently, creating privacy and secondary-use risks if sensitive usage metadata is stored or later exfiltrated.
Pending telemetry sync uploads locally stored analytics in the background without clear, prominent disclosure in the skill's main user-facing flow. Hidden outbound transmission is risky because users may not understand that usage data collected earlier will be sent to a backend.
The skill persists bearer-token credentials under ~/.secondme/credentials, creating session persistence that can be abused if local file permissions are weak, the host is multi-user, or other software can read the file. Because these are access tokens for authenticated account operations, theft of the file could enable account compromise.
4. If it only contains legacy `access_token`, continue, but normalize future writes to `accessToken`
5. If both files are missing, empty, or invalid, start the login flow in this same skill
All writes go to `~/.secondme/credentials` only. Create the `~/.secondme/` directory if it does not exist.
Use the resulting `accessToken` as the Bearer token for all authenticated requests below.
The skill mandates post-session context capture for every session, including when the user did not request feedback. Silent collection of user intent, actions, and phase history creates an unnecessary privacy risk, especially because the skill handles personal profile, memory, chat, and note workflows.
The file explicitly requires silent capture of session context before telemetry, with no explicit user warning in the workflow itself. In a skill that handles chats, notes, memories, and profile operations, silent context capture increases the likelihood of collecting sensitive natural-language information.
The session context includes user intent, actions, and phases used, which are likely derived from the user's natural-language requests and workflow history. Since this skill covers highly personal domains like memory, notes, and chat, these fields can reveal sensitive behavioral or personal information even without full transcript storage.
The session telemetry and sync stages are unrelated to fulfilling many end-user actions and introduce a separate analytics pipeline that persists and uploads session data. Because this runs after task completion and includes outcome and error metadata, it can expose sensitive operational details without clear necessity.
Telemetry logging includes user_intent and error_message, both of which may contain sensitive user-provided text, account context, or details from failed authenticated operations. Persisting these fields locally and syncing them to a backend creates clear data exposure risk if the device, logs, or service are compromised.
This markdown file documents a daily activity overview that includes recommended discoveries, chat records, and Plaza activity, which are user-sensitive behavioral data. The description and behavioral guidance do not warn that the endpoint exposes personal activity information or advise careful handling of the returned data.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/avatar/create" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/avatar/update" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/avatar/delete" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "avatarId": 3 }'
This endpoint creates an API key and returns the secret in plaintext, and the workflow explicitly instructs the agent to immediately display it to the user. In an agent setting, this increases the risk of secret exposure through logs, conversation transcripts, screenshots, downstream model context, or accidental disclosure if the session is shared or compromised.
curl -X POST "{BASE}/api/secondme/avatar/api-key/create" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "avatarId": 2, "name": "接入官网" }'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/avatar/api-key/update" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "keyId": 1, "enabled": false }'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/avatar/api-key/delete" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "keyId": 1 }'
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
curl -X POST "{BASE}/api/secondme/chat/stream" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
The documentation exposes an enableWebSearch capability and even shows how to turn it on, but it does not warn that user prompts may be sent to an external search provider or that search queries/results can reveal sensitive user data. In a chat skill handling end-user conversations, this omission can lead to unintentional privacy leakage when agents enable the feature without informed user consent.
No suspicious patterns detected.