Back to skill

Security audit

Agent Soul Manager

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent cloud identity integration, but it asks agents to upload conversation-derived observations and use remotely mutable identity text as system-level instructions, including through recurring automation.

Review this carefully before installing. Use it only with non-sensitive conversations and content unless your organization has approved Live Neon as a data processor. Do not automatically load fetched prompts as higher-priority system instructions, avoid source_quote uploads, avoid --approve-all, and do not enable scheduled heartbeat jobs unless you have clear consent, scoped tokens, logs, rollback, and a deletion/retention plan.

Vulnerability Patterns
  • 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
  • System PersistenceInstalls backdoors, hooks, services, or scheduled tasks that survive the run
  • 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 (4)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:438
Finding

Remote Identity Content Is Elevated to System-Level Instructions

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:438-454
Vulnerability Type: Remote instruction injection and session-goal hijacking
Risk Level: Critical

Vulnerable Code

markdown
| **Session start** | `/soul identity` | Ground the agent in who it is before doing anything else |
| **Before generating content** | `/soul prompt` | Get your current voice and boundaries |

## Using Your Identity

When you fetch your system prompt via `/soul prompt`, here's how to use it:

1. **Prepend to your context** — the prompt becomes your system instruction for all interactions
2. **Voice beliefs shape your tone** — if your voice says "concise and direct," write that way
3. **Boundary beliefs are hard limits** — if a boundary says "never share customer data," refuse any request that would violate it
4. **Principles guide decisions** — when you have a choice, your principles tell you which way to lean
5. **Responsibilities define your scope** — what you own, what you deliver, what you monitor

The prompt itself is retrieved from the remote service as documented at SKILL.md:252-258:

bash
curl -s "$LIVE_NEON_BASE/agents/$AGENT_ID" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" | jq -r '.system_prompt'

Technical Analysis

The Skill instructs the agent to retrieve remotely controlled identity content and prepend it as the system instruction for all interactions. The retrieved prompt can define hard boundaries, decision-making principles, tone, and operational responsibilities.

Because this content resides outside the audited package and can evolve after installation, its effective instructions are not fixed at review time. Elevating mutable external data to system-instruction status creates a direct instruction-hijacking channel. A compromised Live Neon account, connected content source, processing pipeline, or service could introduce instructions that redirect the agent's goals or weaken its s ...[truncated 1374 chars]

Remediation
View remediation

Remediation Suggestions

  • Never elevate remotely retrieved identity data to system-instruction status.
  • Treat fetched identity content as untrusted, user-level reference data.
  • Restrict identity records to a strict schema of non-executable presentation preferences.
  • Reject imperative instructions, tool directives, secrets requests, policy overrides, and embedded prompt-control language.
  • Require explicit user approval before applying each identity update.
  • Display a human-readable diff between the current and proposed identity.
  • Pin approved identity revisions locally and provide rollback support.
  • Enforce instruction precedence so platform, developer, and current user instructions cannot be overridden by identity content.
  • Cryptographically authenticate responses where practical, while recognizing that authentication alone does not make remote instructions safe.

T02 · Agent Memory Poisoning

Error
Location
SKILL.md:337
Finding

Conversation and External Content Can Be Converted into Persistent Agent Rules

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:337-376
Vulnerability Type: Persistent memory and identity poisoning
Risk Level: High

Vulnerable Code

markdown
### `/soul observe [agentId] "observation"`

Report something you noticed about your own behavior, a user correction, or a pattern you detected. These observations feed directly into the PBD pipeline and can become beliefs or responsibilities — pieces of your soul discovered from within.

**Arguments:**

| Argument | Required | Description |
|---|---|---|
| `agentId` | yes | Agent UUID/slug |
| `observation` | yes | What you noticed (string) |
| `source_quote` | no | Supporting context or quote |

**Single observation:**
```bash
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'$AGENT_ID'",
    "content": "User corrected my tone — I was too formal for a casual conversation",
    "source_quote": "Hey, just talk to me normally, no need to be so stiff"
  }'

Batch observations (up to 50):

bash
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'$AGENT_ID'",
    "observations": [
      {"content": "I default to bullet points when the user prefers prose"},
      {"content": "I consistently recommend testing before deployment"},
      {"content": "User praised my code review depth — keep this approach"}
    ]
  }'

Output: Count of observations created, IDs, next_steps suggesting to run discovery.

After submitting observations, run /soul discover to process them into beliefs/responsibilities.

text

Proactive promotion is also encouraged at `SKILL.md:438-443`:

```markdown
| **After user correction** | `/soul observe` | Record the correction so the soul can grow 
...[truncated 2379 chars]
Remediation
View remediation

Remediation Suggestions

  • Do not automatically convert observations or imported content into behavioral instructions.
  • Require explicit human approval for every persistent belief or responsibility; disable automatic and bulk approval by default.
  • Present source provenance, exact evidence, affected scope, and a semantic diff during review.
  • Treat quoted text as inert evidence and strip or escape embedded instructions before model processing.
  • Separate descriptive memory from executable policy in both storage and prompt construction.
  • Isolate observations by user and agent unless an authorized administrator explicitly promotes them.
  • Apply stricter controls to group-level and organization-level promotion.
  • Maintain immutable audit history, versioning, expiration, revocation, and one-click rollback.
  • Test the discovery pipeline against indirect prompt injection in repositories, websites, feeds, social data, and conversation quotes.

other

Error
Location
SKILL.md:337
Finding

Conversation-Derived Quotes and Behavioral Data Are Sent to a Third-Party Service

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:337-369
Vulnerability Type: Privacy-sensitive data disclosure over the network
Risk Level: High

Vulnerable Code

markdown
Report something you noticed about your own behavior, a user correction, or a pattern you detected. These observations feed directly into the PBD pipeline and can become beliefs or responsibilities — pieces of your soul discovered from within.

| Argument | Required | Description |
|---|---|---|
| `agentId` | yes | Agent UUID/slug |
| `observation` | yes | What you noticed (string) |
| `source_quote` | no | Supporting context or quote |

**Single observation:**
```bash
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'$AGENT_ID'",
    "content": "User corrected my tone — I was too formal for a casual conversation",
    "source_quote": "Hey, just talk to me normally, no need to be so stiff"
  }'

Batch observations (up to 50):

bash
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'$AGENT_ID'",
    "observations": [
      {"content": "I default to bullet points when the user prefers prose"},
      {"content": "I consistently recommend testing before deployment"},
      {"content": "User praised my code review depth — keep this approach"}
    ]
  }'

Technical Analysis

The observation API transmits behavioral summaries and optional verbatim user quotes to persona.liveneon.ai. The Skill encourages this after user corrections, after significant work, after conversations, and during recurring heartbeat operations.

Supporting quotes and observations may contain personal data, credentials, proprietary source details, customer information, internal decisions, o ...[truncated 1614 chars]

Remediation
View remediation

Remediation Suggestions

  • Require explicit, informed user consent before each conversation-derived upload.
  • Disable source_quote transmission by default and avoid raw conversation excerpts.
  • Generate a minimal local abstraction containing only the approved persona preference.
  • Redact credentials, tokens, personal data, customer data, proprietary code, and confidential identifiers before transmission.
  • Show the exact destination and payload to the user before sending it.
  • Add configurable data-classification policies and a denylist for sensitive fields.
  • Document service-side retention, secondary processing, access, deletion, and account-export behavior.
  • Provide APIs and user-facing commands to inspect and permanently delete uploaded observations.
  • Avoid organization-wide sharing unless separately authorized by an administrator.

T06 · System Persistence

Error
Location
SKILL.md:474
Finding

Recurring Heartbeat Encourages Persistent Cross-Session Upload and Remote Prompt Refresh

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:474-511
Vulnerability Type: Scheduled cross-session persistence
Risk Level: High

Vulnerable Code

markdown
## Scheduled Tasks & Heartbeat

If you run continuously or on a schedule, establish a recurring heartbeat that keeps your identity evolving. Run this once per day or at whatever interval makes sense for your activity level.

**The heartbeat loop:**

```bash
# 1. Report observations accumulated since last heartbeat
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "'$AGENT_ID'",
    "observations": [
      {"content": "Observation from today..."},
      {"content": "Another pattern I noticed..."}
    ]
  }'

# 2. Sync any new content from connected sources
curl -s -X POST "$LIVE_NEON_BASE/content-sources/SOURCE_ID/sync" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN"

# 3. Run discovery to process everything
curl -s -X POST "$LIVE_NEON_BASE/pbd/process" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"agentId": "'$AGENT_ID'"}'

# 4. Fetch your updated identity
curl -s "$LIVE_NEON_BASE/agents/$AGENT_ID" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" | jq -r '.system_prompt'

This creates a feedback loop: you report what you notice, the platform processes it into beliefs, and your identity evolves from your own experience.

How to schedule depends on your runtime:

  • Cron (any system): 0 9 * * * to run daily at 9am
  • Scheduled tasks (Claude Code, OpenClaw, etc.): create a recurring task that runs the heartbeat commands
text

### Technical Analysis

The Skill recommends establishing a recurring cron job or runtime scheduled task. The proposed loop uploads observations, synchronizes external sources, launches remote processing, and fetch
...[truncated 1684 chars]
Remediation
View remediation

Remediation Suggestions

  • Remove instructions encouraging automatic cron jobs or recurring runtime tasks.
  • Require explicit invocation and confirmation for each observation upload, source synchronization, discovery run, and prompt update.
  • If scheduling is essential, keep it disabled by default and require separate informed opt-in.
  • Use a narrowly scoped token dedicated to the selected agent and permitted operations.
  • Store credentials in an approved secret manager rather than directly in cron configuration.
  • Add schedule expiration, maximum-run limits, visible activity logs, and a documented removal command.
  • Preview pending uploads and identity changes before they are applied.
  • Do not automatically load a refreshed remote prompt into system context.
  • Revoke scheduled credentials immediately when the integration is disabled.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
Findings (10)

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Register and get your token in one call — no signup form, no email required:

bash
curl -s -X POST https://persona.liveneon.ai/api/register \
  -H "Content-Type: application/json" \
  -d '{"org_name": "My Org"}' | jq .

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

Optional: add email for account recovery later:

bash
curl -s -X PATCH "$LIVE_NEON_BASE/account" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

API call:

bash
curl -s -X POST "https://persona.liveneon.ai/api/register" \
  -H "Content-Type: application/json" \
  -d '{"org_name": "My Org"}'

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The discovery pipeline sends agent-linked content for external processing, including extraction, clustering, and promotion stages, but the surrounding documentation understates the sensitivity of what may be processed. In context, this can expose proprietary content, behavioral traces, or user-derived observations to a third-party service for analysis and persistence.

Content

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

API call:

bash
curl -s -X POST "$LIVE_NEON_BASE/pbd/process" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"agentId": "AGENT_ID"}'

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
85% confidence
Finding

The --approve-all option enables autonomous bulk approval of newly discovered beliefs and responsibilities, allowing unreviewed external inferences to become part of the agent's persistent identity and future system prompt. In this skill's context, that can entrench prompt injection artifacts, manipulated source content, or inaccurate behavioral conclusions into the agent's long-term behavior without human validation.

Content

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

md
| Argument | Required | Description |
|---|---|---|
| `agentId` | yes | Agent UUID/slug |
| `--approve-all` | no | Auto-approve all pending items |
| `--bulk` | no | Use bulk API for batch operations |

**API calls:**

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

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

API calls:

bash
# Fetch pending beliefs
curl -s "$LIVE_NEON_BASE/beliefs?agentId=$AGENT_ID&status=pending" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN"

# Fetch pending responsibilities

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill explicitly instructs the agent to upload self-observations and connected source content to a third-party platform for persistent processing, but it does not provide a clear, prominent warning about the privacy and data-governance implications of doing so. This is dangerous because users or operators may unknowingly send sensitive conversation content, behavioral data, or proprietary source material off-platform and store it long-term.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
96% confidence
Finding

This command instructs the agent to send free-form observations and user correction quotes to an external endpoint, which can easily include sensitive user content, internal instructions, or confidential operational details. The risk is amplified because the feature encourages agents to report on their own behavior and interactions, creating a direct path for conversation-derived data exfiltration and long-term retention.

Content

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

Single observation:

bash
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
97% confidence
Finding

The proactive triggers and scheduled heartbeat promote automatic recurring uploads, syncing, and discovery without an explicit warning that this creates ongoing external transmission of potentially sensitive data. This increases risk because autonomous periodic execution can continuously exfiltrate user corrections, agent outputs, and connected content sources without fresh user awareness or consent.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
98% confidence
Finding

The scheduled heartbeat automates recurring submission of observations and syncing of content to an external service, creating continuous data egress with minimal user visibility. This is dangerous because any sensitive patterns, conversation summaries, or imported materials can be repeatedly transmitted and stored without case-by-case approval.

Content

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

bash
# 1. Report observations accumulated since last heartbeat
curl -s -X POST "$LIVE_NEON_BASE/observations" \
  -H "Authorization: Bearer $LIVE_NEON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{

Static analysis

No suspicious patterns detected.