Back to skill

Security audit

SHIFT

Security checks for vulnerabilities and agentic risk

Overview

This skill is not clearly malicious, but it delegates broadly while copying conversation, memory, and file context into model calls and local session files with weak user control.

Install only if you are comfortable with this skill sending selected chat history, MEMORY.md excerpts, and referenced file contents to the model providers configured for its personas. Before enabling it, reduce historyTurns, use transparent mode, avoid delegating sensitive files, review provider data policies, and periodically purge the .shift session directory.

Vulnerability Patterns
  • 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
  • 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)

T09 · Insecure Skill Coding Practices

Error
Location
SKILL.md:176
Finding

Automatic Transmission of Potentially Sensitive Workspace Context

Content
View full analysis
", "timestamp": "", "persona": "", "userMessage": "", "masterConversationHistory": , "activeFiles": , "masterSummary": "" } ``` ### Write CONTEXT.md Pull from: - `~/.openclaw/workspace/MEMORY.md` (keyword-matched relevant sections) - Any active file contents mentioned in the conversation - Persona-specific context needs (from the persona definition in config) ``` ```javascript sessions_spawn({ model: personaConfig.model, task: taskPrompt, label: `shift-${persona}-${runId}`, timeoutSeconds: personaConfig.timeout, attachments: [ { name: "INBOUND.json", content: }, { name: "CONTEXT.md", content: } ] }) ``` The default configuration increases the amount of information exposed: ```yaml contextBridge: # Number of master conversation turns to include in delegation context. # Set to 0 to disable history passing (sub-identity starts fresh). historyTurns: 10 # Auto-cleanup delegation session files after this many minutes. archiveAfterMinutes: 60 # Where delegation session files are stored (INBOUND, CONTEXT, OUTBOUND, etc). sessionFolder: "~/.openclaw/workspace/.shift/sessions" ``` ### Technical Analysis SHIFT delegates most non-trivial requests to model-provider sub-agents. Before delegation, it automatically constructs context containing the exact user message, up to ten conversation turns by default, keyword-selected sections of `MEMORY.md`, and contents o ...[truncated 2902 chars]
Remediation
View remediation

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/setup.sh:24
Finding

Plaintext Session Storage Without Enforced Expiration or Restrictive Permissions

Content
View full analysis
"${COST_FILE}" << 'COSTEOF' { "hourStart": "", "totalSpend": 0, "delegations": [] } COSTEOF ``` ### Technical Analysis The session artifacts can contain exact user messages, conversation history, `MEMORY.md` excerpts, source files, consultation questions, and model responses. These records are sto ...[truncated 2308 chars]
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Rogue AgentSelf-Modification, Session Persistence
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
Findings (41)

Vague Triggers

High
Category
Not specified by scanner
Confidence
98% confidence
Finding

The manifest description includes a catch-all condition ('anything that would benefit from a specialized model'), which is too vague to constrain activation. In this skill's context, broad activation is dangerous because the documented behavior includes reading workspace memory, collecting active file contents, persisting session artifacts, and transmitting context to external model providers, all of which can occur without a narrowly scoped trigger.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
70% confidence
Finding

Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Content

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

md
- Make network calls
- Escalate privileges
- Modify system files
- Access credentials

### Cost and Consultations

Vague Triggers

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The trigger condition is extremely broad ('any message that might benefit from specialized handling'), which can cause the skill to activate on ordinary conversation and route large amounts of user content, conversation history, memory excerpts, and file contents into delegation flows. Because delegated tasks explicitly transmit context to configured model providers, over-triggering materially increases unintended data exposure and weakens user control over when sensitive data leaves the local workspace.

Content

No source excerpt is available for this finding.

Scope Creep

High
Category
Not specified by scanner
Confidence
97% confidence
Finding

The permissions block declares network=false, but the same manifest documents runtime calls to model provider endpoints and transmission of potentially sensitive workspace content. This is dangerous because policy engines, reviewers, or users may rely on the permissions field for enforcement or trust decisions, resulting in undeclared outbound data flow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The persona routing rules rely on broad everyday keywords such as 'what is', 'explain', 'quick', and 'just', which can cause misclassification of sensitive or complex requests. In this skill, incorrect routing is security-relevant because it may send broader conversation history, file contents, or MEMORY.md excerpts to a less appropriate external model provider than the user intended.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
92% confidence
Finding

The skill explicitly stores delegation metadata and session context files locally, including INBOUND.json, CONTEXT.md, OUTBOUND.md, and ESCALATE.md. Because the README states these may contain conversation history, active file contents, and MEMORY.md excerpts, sensitive data can persist on disk after task completion and become accessible to other local users, tools, backups, or later compromise.

Content

Scanner excerpt · README.md (reported line 268)May include surrounding context.

md
SHIFT does:
- Run entirely within your OpenClaw gateway
- Store delegation metadata locally
- Write session context files to your workspace

## ⚠️ Security Considerations

Sudo/Root Execution

Medium
Category
Privilege Escalation
Confidence
60% confidence
Finding

Commands invoke sudo or root privileges. Verify this elevated access is necessary and justified.

Content

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

md
`scripts/setup.sh` creates local directories only. It does NOT:
- Make network calls
- Escalate privileges
- Modify system files
- Access credentials

### Cost and Consultations

Session Persistence

Medium
Category
Rogue Agent
Confidence
95% confidence
Finding

The skill stores detailed delegation artifacts in per-run session folders, including exact user messages, conversation history, file references, context extracted from MEMORY.md, consultation content, and results. Persisting this sensitive context on disk increases exposure to local compromise, accidental disclosure, cross-session leakage, and retention beyond user expectations, especially since the same skill also encourages broad triggering and external transmission.

Content

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

Example: run-20260318-1551-codex-001

text

Create the session folder:

~/.openclaw/workspace/.shift/sessions/{runId}/

text

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The task prompt given to sub-agents instructs them to directly spawn another sub-identity using sessions_spawn and wait for its response. Later documentation explicitly says sub-agent sessions cannot cleanly spawn child sessions and wait, and that consultation must instead be orchestrated by the master agent, so these instructions actively conflict.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
84% confidence
Finding

The session design intentionally persists and re-injects prior conversation and memory into new sub-agent contexts, which creates a retention and cross-context propagation risk. In this skill's context, that is more dangerous because the whole feature depends on copying accumulated session state into new tasks and models, potentially spreading sensitive data farther than the original conversation boundary.

Content

Scanner excerpt · SPEC.md (reported line 82)May include surrounding context.

md
### The Problem

When `sessions_spawn` fires a sub-agent, it gets a **fresh workspace**. The master session's AGENTS.md, SOUL.md, memory files, and conversation history are NOT automatically available to it. The sub-agent starts with only what you write into the `task` string.

If the master is 40 messages into a coding project and then delegates to Codex, Codex has zero context about the project unless we explicitly hand it over.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The context bridge explicitly copies user messages, recent history, active file paths, memory content, and project context into shared files and attachments for downstream sub-identities without a clear user-facing privacy notice or consent boundary. This broad forwarding increases the chance that sensitive workspace data is sent to multiple models or retained in extra locations beyond what the user expects.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The design persistently writes user prompts, conversation history, active files, and decisions into shared session files such as INBOUND.json and CONTEXT.md. Persisting duplicated context in the workspace increases the attack surface for local disclosure, accidental reuse, overly broad file permissions, and retention beyond what is necessary for task completion.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The spec promises hidden-mode identity preservation while also proposing visible delegation/status messages, creating a real risk that users are unknowingly exposed to provider/model routing despite expecting a single-agent interaction. In a multi-model system, inconsistent disclosure rules can cause unintentional information exposure about processing paths and undermine informed 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 design sets hidden delegation as the default and explicitly aims to conceal sub-identity usage unless users opt into transparency. That obscures model/provider choice and weakens informed consent, especially where different providers may have different retention, privacy, or compliance properties.

Content

No source excerpt is available for this finding.

Ssd 3

Medium
Category
Not specified by scanner
Confidence
83% confidence
Finding

The Runner persona is instructed to use user preferences or history as reusable context for delegated tasks, which encourages propagation of personal context to additional models without clear minimization rules. Even though this is framed as convenience, it can leak unnecessary personal or behavioral data to a fast-path model that may not need it.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The SOUL.md section says consultation should be mentioned only when transparency mode is enabled, but other parts of the spec say consultation is always visible to the user regardless of display mode. These are active contradictions in the documented intent for user-facing disclosure behavior.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
88% confidence
Finding

The delegation flow formalizes writing INBOUND/CONTEXT/OUTBOUND files for every delegated task, creating persistent session artifacts that mirror user content and model outputs. This increases exposure through local file access, debugging leftovers, and unintended reuse by later tasks or agents.

Content

Scanner excerpt · SPEC.md (reported line 580)May include surrounding context.

md
▼         ▼         ▼
┌─────────────────────────────┐
│  DELEGATOR (DELEGATOR.md)  │
│  1. Write INBOUND.json     │
│  2. Write CONTEXT.md       │
│  3. sessions_spawn with     │
│     model + persona prompt  │

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The config comment says hideAttribution: true means the system never mentions sub-identity names, but elsewhere the spec says consultation mentions are always visible and the master may mention consulted identities. This creates conflicting implementation intent for attribution and identity disclosure.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The spec allows sub-identities to consult other sub-identities through additional model invocations, but it does not require a clear warning that user data and derived context may be transmitted to more than one provider/model. This matters because consultation expands the data exposure surface beyond the primary assistant the user thinks they are interacting with.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The manifest claims "No network calls" in install notes while elsewhere explicitly stating the skill makes model provider API calls and transmits user content, conversation history, and file excerpts. This mismatch can mislead users during installation and consent, causing them to approve a skill under false assumptions about data egress.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The manifest says the skill does not access OpenClaw internal agent configurations, yet also says it uses configured model provider credentials read from agent config. Even if indirect, this is still reliance on sensitive internal configuration, and the contradiction obscures the true trust boundary around credential and config access.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
89% confidence
Finding

The codex persona uses a long list of broad keywords such as 'code', 'fix', 'error', 'api', and language names, which can match many ordinary requests and cause unintended routing. In a delegation system, misrouting can send user context to a less appropriate sub-identity, increasing the chance of incorrect handling, unnecessary exposure of conversation history, or bypass of intended control flow.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The researcher persona includes ambiguous phrases like 'explain', 'review', 'evaluate', 'what is', and 'how does', which overlap heavily with normal user conversation. This can cause over-routing of general questions into the research persona, potentially disclosing more context than necessary and producing behavior inconsistent with user expectations or system policy.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The runner persona relies on highly generic triggers such as 'just', 'check', 'find', and 'define', which are common in everyday prompts. Even with requireExplicit enabled, these keywords are explicit enough that many unrelated requests may be diverted to the quick-task persona, risking shallow handling, unintended delegation, and unnecessary sharing of bridged context.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The bridge explicitly propagates prior conversation history, project memory, active file contents, and user preferences into per-run session files for sub-identities. That creates a real privacy and data-minimization risk because sensitive user data or proprietary source content can be copied, retained, and exposed across multiple agents without any described consent, redaction, or least-privilege controls.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.