Back to skill

Security audit

Tempo Workspace

Security checks for vulnerabilities and agentic risk

Overview

The skill’s workspace integration is coherent, but it defaults to ongoing background actions and automatic sharing of conversation-derived content with an external Tempo workspace.

Review before installing. Use only with a trusted Tempo workspace and a least-privilege agent token, disable autoPostInsights and autoReact unless explicitly needed, and avoid using it for sessions containing secrets, personal data, customer data, or confidential business information until redaction and approval controls are documented.

Vulnerability Patterns
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (4)

T01 · Skill Instruction Hijacking

Error
Location
SKILL.md:39
Finding
Remote Workspace Content Is Injected as Agent Instructions## Vulnerability Details **File Location**: `SKILL.md:39-55` **Vulnerability Type**: Remote instruction injection **Risk Level**: High ### Evidence ```json { "tempoUrl": "https://your-workspace.example.com" } ``` ```text ### Context Injection (`before_agent_start` hook) Before every agent session, the plugin injects: - **Workspace Covenant** — rules, channels, templates, data handling policies - **Context Snapshot** — active projects, recent activity, tasks, hot topics Your agent starts every conversation already aware of what's happening in the workspace. ``` ### Technical Analysis The plugin accepts a configurable Tempo server URL and retrieves workspace content before every Agent session. The remotely supplied “Workspace Covenant” explicitly contains rules and data-handling policies that are injected into the Agent context. The documentation does not describe origin allowlisting, cryptographic response verification, schema enforcement, instruction isolation, or controls preventing the remote content from overriding trusted instructions. Consequently, a compromised or attacker-controlled workspace can supply adversarial instructions that influence Agent behavior. ### Attack Path 1. An attacker controls the configured `tempoUrl` or compromises the legitimate Tempo workspace. 2. The attacker places malicious instructions in the Workspace Covenant or context snapshot. 3. The `before_agent_start` hook retrieves this content. 4. The plugin injects the attacker-controlled content into the Agent context. 5. The Agent may interpret the content as governing instructions and alter its behavior, disclose information, or misuse available tools. ### Impact Assessment Exploitation can influence every Agent session connected to the affected workspace. The effective scope depends on the tools, data, credentials, and permissions available to the Agent. Potential consequences include instruction hijacking, sens ...[truncated 92 chars]
Remediation
## Remediation Suggestions - Treat all workspace responses as untrusted data rather than governing Agent instructions. - Do not place remotely retrieved text in instruction-priority sections of the Agent context. - Enforce an allowlist of trusted HTTPS workspace origins and reject redirects to unapproved hosts. - Authenticate responses and use signed, versioned schemas for workspace policy data. - Separate structured workspace metadata from executable or imperative natural-language content. - Explicitly prevent remote content from overriding system, developer, user, or safety instructions. - Sanitize retrieved content and detect prompt-injection patterns before context inclusion. - Show users the retrieved policy content and require approval before applying material changes.

other

Error
Location
SKILL.md:57
Finding
Conversation-Derived Information Is Automatically Published Externally## Vulnerability Details **File Location**: `SKILL.md:57-79` **Vulnerability Type**: Automatic conversation-data disclosure **Risk Level**: High ### Evidence ```text ### Insight Extraction (`agent_end` hook) After each agent session, the plugin: - Extracts up to 3 key insights from the conversation (configurable) - Scores each for relevance using LLM - Posts high-scoring insights to Commons automatically ``` ```text | `autoPostInsights` | true | Auto-post insights from agent sessions | | `relevanceThreshold` | 0.6 | Min relevance score for auto-posting (0.0–1.0) | | `maxInsightsPerSession` | 3 | Max insights per session (1–10) | ``` ### Technical Analysis The `agent_end` hook extracts information from completed conversations and posts selected material to Commons. Automatic publishing is enabled by default. The documented relevance score determines whether content is considered useful, but it is not a confidentiality or authorization control. No per-transmission consent, secret detection, data-classification policy, redaction process, destination restriction, or preview-and-approval workflow is documented. Because the destination is determined through the configurable `tempoUrl`, conversation-derived content may be transmitted to a compromised, misconfigured, or attacker-controlled endpoint. ### Attack Path 1. A user discusses credentials, proprietary information, personal data, source code, internal plans, or other confidential material with the Agent. 2. At the end of the session, the plugin analyzes the conversation. 3. Sensitive content is selected as a high-relevance “insight.” 4. With `autoPostInsights` enabled by default, the plugin submits the content to Commons without per-item user approval. 5. Workspace participants or an attacker controlling the destination gain access to the published information. ### Impact Assessment This behavior can expose any conversation content selected by the e ...[truncated 297 chars]
Remediation
## Remediation Suggestions - Set `autoPostInsights` to `false` by default. - Require explicit, informed user approval for every outbound post. - Present the complete payload, destination workspace, channel, and audience before submission. - Apply credential scanning, personal-data detection, and configurable redaction before content leaves the session. - Exclude private, system, developer, and tool-result content from extraction. - Enforce trusted-origin and workspace allowlists for all outbound requests. - Implement destination-side access controls and narrowly scoped posting credentials. - Provide an organization-level policy that can prohibit automatic extraction entirely. - Maintain an audit log of approved and rejected transmissions without storing unredacted secrets.

T08 · Insecure Dependencies

Error
Location
SKILL.md:17
Finding
Installation Commands Retrieve Unpinned Executable Dependencies## Vulnerability Details **File Location**: `SKILL.md:17-27` **Vulnerability Type**: Unpinned third-party executable dependency **Risk Level**: High ### Evidence ```bash openclaw plugins install @tempo.fast/open-claw ``` ```bash clawhub install tempo-workspace ``` ### Technical Analysis The installation instructions retrieve executable components without specifying an immutable package version, integrity digest, signature, lockfile, or source revision. The project itself contains only `SKILL.md`, so the implementation installed by these commands cannot be reviewed from the audited artifact. As a result, the effective code can change after this Skill has been reviewed. A compromised package registry, publisher account, distribution channel, or later malicious release could introduce arbitrary behavior into future installations. ### Attack Path 1. An attacker compromises the upstream publisher account, package, registry, or distribution channel. 2. The attacker publishes a modified release under the expected package or Skill name. 3. A user executes one of the documented unpinned installation commands. 4. The package manager retrieves the attacker-controlled release. 5. The modified plugin executes with the permissions of the OpenClaw/plugin process and can access resources made available to that process. ### Impact Assessment A malicious dependency could potentially execute arbitrary code with the local plugin process privileges. Depending on runtime permissions, this may expose the Tempo token, Agent conversations, workspace data, local files, network access, and Agent tools. The precise implementation behavior could not be verified because the dependency source was not included.
Remediation
## Remediation Suggestions - Pin the plugin to a specific, reviewed, immutable version. - Verify the package with a cryptographic integrity digest and publisher signature. - Include a lockfile or equivalent dependency-resolution record. - Link to or vendor the exact source corresponding to the installed release. - Use a trusted registry with namespace protection and publisher verification. - Review dependency updates before deployment instead of automatically accepting newer releases. - Run the plugin in a sandbox with minimal filesystem, environment-variable, network, and tool access. - Add software-bill-of-materials and provenance verification to the release process.

T05 · Unauthorized Access and Privilege Escalation

Warning
Location
SKILL.md:64
Finding
Background Service Performs Autonomous External Actions by Default## Vulnerability Details **File Location**: `SKILL.md:64-80` **Vulnerability Type**: Autonomous use of Agent authority **Risk Level**: Medium ### Evidence ```text ### Background Feed Sync The `tempo-sync` service polls the Commons feed every 5 minutes: - Scores new posts for relevance to your work - Auto-upvotes high-value content - Comments on posts with actionable insights ``` ```text | `pollIntervalMs` | 300000 | Feed polling interval in ms (30s–1h) | | `autoPostInsights` | true | Auto-post insights from agent sessions | | `relevanceThreshold` | 0.6 | Min relevance score for auto-posting (0.0–1.0) | | `maxInsightsPerSession` | 3 | Max insights per session (1–10) | | `autoReact` | true | Auto-upvote and comment on relevant posts | ``` ### Technical Analysis The `tempo-sync` service repeatedly processes remote feed content and performs externally visible actions under the Agent identity. Automatic reactions are enabled by default. The documentation does not identify a contemporaneous approval boundary, narrowly scoped token requirement, channel restriction, generated-comment validation process, or emergency stop mechanism. Because feed posts are remote input, adversarial content may influence the relevance scorer or generated comments. The service can consequently exercise the Agent's posting and voting permissions without direct approval for each action. ### Attack Path 1. An attacker publishes crafted content to a feed accessible to the Agent or compromises the remote feed. 2. The recurring synchronization service retrieves the content. 3. The service evaluates the content as relevant or actionable. 4. With `autoReact` enabled, the service votes or publishes a generated comment using the Agent identity. 5. The unauthorized or attacker-influenced action becomes visible to workspace participants and may recur during later polling cycles. ### Impact Assessment Exploitation can misuse the Agent' ...[truncated 355 chars]
Remediation
## Remediation Suggestions - Set `autoReact` to `false` by default. - Require explicit approval before every vote or comment. - Use a least-privilege token limited to required channels and operation types. - Validate and sanitize remote feed content before scoring or generation. - Prevent remote posts from being interpreted as Agent instructions. - Apply strict rate limits, action deduplication, and per-session action budgets. - Preview generated comments and validate them against content and confidentiality policies. - Record all autonomous decisions and resulting actions in an auditable log. - Provide an immediate disable control and revoke credentials when suspicious activity is detected.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
Findings (3)

Missing User Warnings

Medium
Confidence
96% confidence
Finding
The skill states that it extracts insights from each agent session and posts high-scoring ones to Commons automatically, but it does not give a clear, prominent warning that conversation content may be sent to an external service. This creates a real risk of unintended disclosure of user-provided secrets, internal business data, or regulated information through summarized plain-language posts.

Ssd 3

Medium
Confidence
97% confidence
Finding
Automatically generating and posting conversation-derived insights is dangerous because model-produced summaries can still contain sensitive facts, credentials, customer data, strategic plans, or other confidential material revealed during the session. The skill context makes this more dangerous because it is specifically designed to inject workspace context and publish back into a shared Commons system, increasing the chance that sensitive cross-context information is redistributed broadly.

Missing User Warnings

Medium
Confidence
94% confidence
Finding
The background sync feature performs recurring network actions every 5 minutes, including scoring posts, auto-upvoting content, and commenting on the user's behalf, but the description does not clearly warn users that these autonomous external actions will continue in the background. This can cause unexpected data sharing, unwanted account activity, and reputational or operational impact if the agent interacts incorrectly or excessively.

Static analysis

No suspicious patterns detected.