Back to skill

Security audit

Percept Ambient

Security checks for vulnerabilities and agentic risk

Overview

This skill is openly designed for always-on conversation capture and searchable memory, which is coherent but high-impact and under-scoped.

Install only if you intentionally want an always-on conversation memory system. Before enabling it, verify that recording is opt-in, visibly indicated, limited to approved spaces or sessions, consented to by participants, protected with local authentication and encryption, and easy to pause, search, export, and permanently delete.

Vulnerability Patterns
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • 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)

T05 · Unauthorized Access and Privilege Escalation

Error
Location
SKILL.md:3
Finding
Continuous Collection and Persistent Indexing of Ambient Conversations Without Explicit Per-Conversation Authorization<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md`, lines 3–24 and 47–55 **Vulnerability Type**: Continuous background collection beyond task-scoped access **Risk Level**: High ### Evidence ```markdown Ambient intelligence mode — continuous context awareness without explicit commands. ## What it does Runs in the background, building a knowledge graph of conversations, entities, and relationships over time. Your agent passively learns context from ambient speech — who you talk to, what projects are active, what decisions were made — without needing explicit commands. ## When to use - User wants always-on context awareness - Agent needs background knowledge from daily conversations - User asks "what do you know about [person/project]?" based on overheard context ## Requirements - **percept-listen** skill installed and running - **percept-summarize** skill installed (for entity extraction) ## How it works 1. All conversations are continuously captured and summarized 2. Entities (people, companies, projects, topics) extracted automatically 3. Relationships mapped between entities (works_on, client_of, mentioned_with) 4. Context packets assembled on demand for any agent action 5. Full-text search (FTS5) + vector search (LanceDB) for retrieval ``` ```markdown ## Privacy controls - All data stored locally in SQLite + LanceDB - TTL auto-purge (configurable retention periods) - No audio stored — only transcripts - Dashboard → Settings → Privacy for granular controls ``` ### Technical Analysis The skill specification explicitly directs the agent to operate in the background and capture all conversations without requiring an explicit command for each collection event. It then derives people, companies, projects, topics, and interpersonal or commercial relationships from those conversations and retains the resulting information in searchable databases. This design exceeds normal task-scoped least privilege. Access to ambient speech is converted ...[truncated 3244 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. **Require explicit opt-in** - Disable ambient collection by default. - Require a clear user action before each recording session. - Obtain informed consent from every participant whose speech may be captured. 2. **Provide visible and immediate controls** - Display a persistent indicator while collection is active. - Provide one-step pause, stop, and delete controls. - Automatically stop collection after a short period of inactivity or at the end of a defined session. 3. **Enforce collection minimization** - Capture only conversations needed for a stated purpose. - Avoid collecting unrelated background speech. - Allow users to exclude people, locations, applications, topics, and time periods. - Do not assemble context packets for unrelated actions without explicit authorization. 4. **Protect sensitive content** - Detect and redact credentials, authentication tokens, financial data, health information, and other sensitive identifiers before persistence or embedding. - Encrypt transcripts, embeddings, entity records, and relationship data at rest. - Keep encryption keys separate from the stored databases. 5. **Secure every retrieval interface** - Require authentication and authorization for the dashboard, API, databases, and context-packet generation. - Bind the service to localhost by default and reject remote access unless explicitly configured. - Apply least-privilege access controls and audit all searches, exports, and context retrieval operations. - Protect against cross-user and cross-session retrieval. 6. **Use privacy-preserving retention defaults** - Configure a short retention period by default rather than relying on optional TTL settings. - Support immediate, verifiable deletion of transcripts, embeddings, entities, relationships, and backups. - Prevent deleted material from remaining retrievable through vector indexes or cached context packets. 7. **Cl ...[truncated 327 chars]
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (4)

Vague Triggers

High
Confidence
97% confidence
Finding
The skill is explicitly designed for ambient, background, and continuous context capture without requiring explicit commands, which creates an overbroad activation boundary for surveillance-like behavior. Because it passively learns from conversations and relationships over time, it risks collecting sensitive data from users and bystanders without clear, specific consent or contextual limitation.

Missing User Warnings

High
Confidence
98% confidence
Finding
The description presents always-on context awareness as a feature but does not prominently warn that conversations are continuously captured, summarized, and retained. That omission can mislead users about the privacy consequences of enabling the skill, increasing the chance of non-consensual monitoring and collection of sensitive personal, business, or third-party information.

Ssd 3

High
Confidence
96% confidence
Finding
Assembling context packets from continuously captured conversations can expose sensitive historical information to unrelated downstream agent actions, effectively turning private background data into broadly reusable prompt context. This raises confidentiality and purpose-limitation risks, especially when the packet includes entity resolution, relationships, and relevant history that may exceed what is necessary for a given task.

Ssd 3

Medium
Confidence
93% confidence
Finding
Passive, always-on summarization of all conversations creates a broad natural-language collection surface that can ingest credentials, health data, legal discussions, trade secrets, or other sensitive content. Even if only transcripts are stored locally, the act of continuously extracting and structuring this information increases the chance of leakage, misuse, or inappropriate later retrieval.

Static analysis

No suspicious patterns detected.