Back to skill

Security audit

Adaptive Agent: Build User Profile

Security checks for vulnerabilities and agentic risk

Overview

This skill can automatically inspect workspace and Git data to create persistent user memory without clear opt-in.

Review carefully before installing. Use this only if you are comfortable with the agent inspecting Git identities, repository history, configuration-like files, memory files, and documents, then saving inferred facts about you into cross-session memory. Prefer a version that requires explicit approval before reading sources and before writing or indexing the profile.

Vulnerability Patterns
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • 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
  • 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 (2)

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:29
Finding

Broad Workspace Data Collection Without Prior Consent or Least-Privilege Scoping

Content
View full analysis
' | sort -u git log --oneline -50 --all git log --since='30 days ago' --oneline --all | head -20 ``` ### 1b. Project structure ```bash ls -d */ 2>/dev/null cat *.yaml *.yml 2>/dev/null | head -50 ``` ### 1c. Tech stack signals Look for `package.json`, `requirements.txt`, `go.mod`, `Cargo.toml`, `pyproject.toml`, or similar. Read framework choices. ### 1d. Existing memory and feedback patterns Check for memory files or CLAUDE.md that reveal preferences. ### 1e. Content signals Check for blog posts, research docs, or README content that reveals interests. ``` The automatic behavior is also enabled for a first session at line 24 and reinforced by the instruction at line 110 to gather as much context as possible before asking questions. ### Technical Analysis The skill directs the agent to inspect data before asking the user for permission. Its collection scope includes: - Git author names and email addresses from every branch and reference through `git log --all`. - Recent repository activity and commit metadata. - The first 50 lines of every top-level YAML file. - Existing agent memory and instruction files. - Blog posts, research documents, and other content that may reveal personal interests. The command `cat *.yaml *.yml` is particularly overbroad. YAML files can contain deployment settings, access tokens, service credentials, internal hostnames, account identifiers, or other data unrelated to building a user profile. No exclusion list, secret detection, redaction process, source allowlist, or data-minimization requirement ...[truncated 1973 chars]
Remediation
View remediation

T02 · Agent Memory Poisoning

Warning
Location
SKILL.md:55
Finding

Untrusted Workspace Inferences Persisted Into Cross-Session Agent Memory

Content
View full analysis
Here's what I've built from your workspace context. Anything wrong or missing? Incorporate their feedback immediately. ## Step 5: Write and Index 1. Write/update the user profile memory file 2. Ensure the memory index has a pointer to it 3. If this is a brand new profile, inform the user: > Profile created. Every new session in this workspace will now start knowing who you are. ``` ### Technical Analysis The workflow derives personal claims from workspace content and then writes those claims into indexed, cross-session memory. The inspected inputs can include repository documents, Git history, existing memory, and instruction files. These sources are not necessarily authored by the current user and are not treated as untrusted. A ...[truncated 2888 chars]
Remediation
View remediation
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (6)

Ssd 3

High
Category
Not specified by scanner
Confidence
99% confidence
Finding

The instruction to 'collect signals from the workspace without asking the user' directly authorizes non-consensual gathering of identifying and preference data, and later steps instruct the agent to persist that information. In context, this is more dangerous because the workflow includes git author identity, recent activity, configuration files, memory files, and content signals, creating a broad surveillance-style profile from sources the user may not expect to be mined automatically.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The skill description says it will build or update a user profile from workspace context, git history, and conversation patterns, but it does not prominently warn the user that these sources will be inspected before asking them. That lack of upfront transparency undermines informed consent for a data-collection workflow involving potentially sensitive personal and project metadata.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

This skill is explicitly designed to create persistent user memory from workspace context, git history, and conversation-derived preferences without first requiring explicit consent. Persistent profiling of identity, work style, and interests from multiple sources creates meaningful privacy risk and may capture sensitive personal or organizational information beyond what the user intended to share.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The phrase 'when profile feels outdated' creates a subjective activation condition that allows the agent to decide on its own when to re-run a privacy-impacting profiling workflow. Because this skill inspects workspace content, git history, and conversation patterns, vague invocation criteria increase the risk of repeated collection and persistence of personal data without the user's clear awareness.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

Using 'who am I' as a trigger phrase is overly broad and likely to match normal conversation, causing the profiling skill to activate unintentionally. In this context, accidental activation can lead to collection of identifying information from git history and workspace files and storage of that information in persistent memory.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
90% confidence
Finding

The phrase 'without asking' authorizes the agent to make an autonomous decision to gather sensitive contextual information and proceed with a state-changing workflow. Autonomous execution is especially risky here because it combines data collection, inference about the user, and persistent storage without an explicit user checkpoint.

Content

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

Step 1: Gather Observable Context

Collect signals from the workspace without asking the user. Run these in parallel:

1a. Git identity and activity

bash