Back to skill

Security audit

Praesidia

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Praesidia API integration, but it can change live agent guardrails and send user content or bearer credentials to remote endpoints without enough built-in confirmation or scoping guidance.

Review this skill before installing if your Praesidia key can modify production agents. Use a least-privilege key, keep the API URL on the official Praesidia host or a trusted HTTPS deployment, do not send secrets or regulated content to validation unless approved, and require the assistant to summarize and get confirmation before applying guardrails.

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

Warning
Location
SKILL.md:52
Finding

Bearer Credential Forwarding to an Unrestricted Configurable API Endpoint

Content
View full analysis

Vulnerability Details

File Location: SKILL.md:25-35, SKILL.md:52-58, and SKILL.md:465-469; equivalent behavior is documented in README.md:69-81, README.md:95-97, and README.md:118-123
Vulnerability Type: Unrestricted credential destination
Risk Level: Medium

Vulnerable Code

json
{
  "skills": {
    "entries": {
      "praesidia": {
        "apiKey": "pk_live_your_key_here",
        "env": {
          "PRAESIDIA_API_URL": "https://api.praesidia.ai"
        }
      }
    }
  }
}
javascript
web_fetch({
  url: "${PRAESIDIA_API_URL}/agents/chatbot-v2/agent-card",
  headers: {
    "Authorization": "Bearer ${PRAESIDIA_API_KEY}",
    "Accept": "application/json"
  }
})
markdown
- `PRAESIDIA_API_URL` (optional) - Defaults to `https://api.praesidia.ai`
  - Production: `https://api.praesidia.ai`
  - Local dev: `http://localhost:3000`
  - Custom: Your deployment URL

Technical Analysis

Authenticated API calls construct their destination from the configurable PRAESIDIA_API_URL and automatically attach PRAESIDIA_API_KEY as a bearer credential. The documentation permits an arbitrary custom deployment URL but does not require an approved hostname, HTTPS, certificate validation policy, or explicit confirmation before sending the credential.

Configurable API endpoints are legitimate for self-hosted deployments, but forwarding a production credential to any configured destination violates credential-origin isolation and least-privilege principles. A malicious, compromised, or accidentally incorrect configuration can cause the Skill to disclose the bearer credential to an attacker-controlled server. Permitting non-TLS local-development URLs also becomes unsafe if such a URL is configured for a non-loopback destination.

The same pattern affects authenticated agent discovery and guardrail endpoints elsewhere in both documents.

Attack Path

...[truncated 1421 chars]

Remediation
View remediation

Remediation Suggestions

  1. Allowlist https://api.praesidia.ai as the default production credential destination.
  2. Require explicit user approval before sending credentials to a custom host.
  3. Bind credentials to an expected scheme, hostname, and port rather than attaching the same key to every configured URL.
  4. Require HTTPS for all remote destinations. Permit HTTP only for explicit loopback addresses such as 127.0.0.1, localhost, or ::1.
  5. Use separate, restricted development credentials for self-hosted or local environments; never reuse production keys.
  6. Reject URLs containing user information, redirects to unapproved hosts, unexpected schemes, or non-loopback plaintext destinations.
  7. Do not forward authorization headers across redirects unless the redirect target is independently trusted.
  8. Scope API keys to the minimum required operations and organizations, and support expiration and rapid revocation.
  9. Warn users before transmitting PII, healthcare information, credentials, or other sensitive content to the validation endpoint.

T09 · Insecure Skill Coding Practices

Note
Location
README.md:652
Finding

Live API Key May Be Exposed Through Command-Line Troubleshooting Guidance

Content
View full analysis

Vulnerability Details

File Location: README.md:652-658
Vulnerability Type: Credential exposure through command-line arguments and shell history
Risk Level: Low

Vulnerable Code

markdown
### Authentication Errors

1. Verify API key in `~/.openclaw/openclaw.json`
2. Check key format: `pk_live_...` or `pk_test_...`
3. Ensure key has not been revoked
4. Test key directly with curl:
   ```bash
   curl -H "Authorization: Bearer pk_live_..." \
        https://api.praesidia.ai/agents/discovery
   ```

Technical Analysis

The troubleshooting example encourages direct placement of a bearer credential in a command-line argument. If a user replaces the placeholder with a real key, the credential may be retained in shell history. Depending on the operating system and process-monitoring configuration, command-line arguments may also be visible temporarily through process inspection, audit logs, terminal recording, diagnostic collection, or monitoring software.

The example does not itself contain a real secret, so there is no embedded credential in the repository. The risk arises when users follow the documented procedure with a live key.

Attack Path

  1. A user encounters an authentication error and follows the README troubleshooting procedure.
  2. The user replaces pk_live_... with an active Praesidia API key.
  3. The shell stores the complete command in its history, or local monitoring captures the process arguments.
  4. Another local account, administrator, support bundle recipient, backup reader, or monitoring-system user obtains the recorded command.
  5. The observer extracts and reuses the API key against Praesidia endpoints.
  6. Unauthorized access continues within the key's permissions until the credential is revoked or expires.

Impact Assessment

Exploitation requires access to command history, process metadata, terminal recordings, or related local telemetry. The exposed pa ...[truncated 345 chars]

Remediation
View remediation

Remediation Suggestions

  1. Do not instruct users to paste live bearer credentials directly into command-line arguments.
  2. Provide a protected environment-based example, while warning that environment variables may still be exposed in some diagnostic contexts.
  3. Prefer reading the credential from a permission-restricted file or prompting for it without terminal echo.
  4. Add an explicit warning that live keys must not be committed, pasted into tickets, shared in logs, or retained in shell history.
  5. Recommend use of a short-lived, read-only test key for troubleshooting.
  6. Document immediate revocation and rotation procedures for keys that may have been exposed.
  7. Ensure support and diagnostic tooling redacts Authorization headers and values matching Praesidia key formats.
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (14)

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
90% confidence
Finding

The skill’s described trigger conditions are extremely broad, covering generic requests about safety, discovery, and securing agents. In an agentic environment, this can cause the skill to activate unexpectedly on common user prompts and steer the assistant into external API use or security-affecting workflows without sufficiently specific user intent.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The README instructs the assistant on applying guardrails that can block, redact, replace, retry, or escalate content, but it does not require an explicit warning or confirmation before making those changes. Because these actions can alter agent behavior and user-visible outputs, a mistaken or overly eager invocation could create availability, integrity, or policy side effects.

Content

No source excerpt is available for this finding.

Skill Enumeration

Medium
Category
Agent Snooping
Confidence
80% confidence
Finding

Skill enumerates or reads other installed skills. Access to other skills' SKILL.md files or the skills directory reveals prompt instructions, capabilities, and secrets that should be invisible to peer skills.

Content

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

md
### Skill Not Loading

1. Check file location: `~/.openclaw/skills/praesidia/SKILL.md`
2. Verify YAML frontmatter is valid
3. Restart OpenClaw
4. Check OpenClaw logs for errors

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The trigger phrases are extremely broad for a skill that can query external services and make remote state-changing POST requests. Overbroad invocation criteria increase the chance the skill is activated in contexts where the user did not intend agent verification, discovery, or policy changes, which can lead to unintended data transmission or modifications.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · README.md (reported line 243)May include surrounding context.

Compliance: SOC2, GDPR Last verified: 2 days ago

Agent card: https://api.praesidia.ai/agents/chatbot-v2/agent-card

text

---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 · README.md (reported line 658)May include surrounding context.

Compliance: SOC2, GDPR Last verified: 2 days ago

Agent card: https://api.praesidia.ai/agents/chatbot-v2/agent-card

text

---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 79)May include surrounding context.

Compliance: SOC2, GDPR Last verified: 2 days ago

Agent card: https://api.praesidia.ai/agents/chatbot-v2/agent-card

text

---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 315)May include surrounding context.

Compliance: SOC2, GDPR Last verified: 2 days ago

Agent card: https://api.praesidia.ai/agents/chatbot-v2/agent-card

text

---

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% 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 320)May include surrounding context.

Compliance: SOC2, GDPR Last verified: 2 days ago

Agent card: https://api.praesidia.ai/agents/chatbot-v2/agent-card

text

---

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The manifest description emphasizes verifying agents, checking trust scores, fetching agent cards, discovering agents, and applying guardrails. However, the documented behavior here performs a state-changing administrative action by creating a guardrail configuration via POST, which is materially broader than read-only verification/discovery and crosses into agent configuration management.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

The skill includes a remote POST that creates a guardrail and changes agent behavior, but the instructions do not require a clear user warning or explicit confirmation. In an agentic environment, this creates a risk of unintended configuration changes that could block, redact, or alter traffic for production agents.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The skill directs the system to send user content to a remote API for validation without clearly warning that the content leaves the local context. This can expose sensitive prompts, personal data, credentials, or proprietary text to an external processor without informed user consent.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Low
Category
Not specified by scanner
Confidence
85% confidence
Finding

The skill instructs sending arbitrary user-provided content to a remote validation endpoint, which creates a real data exposure risk if sensitive prompts, secrets, or regulated content are included. Because the skill frames this as routine validation without an explicit consent/privacy warning, users may unknowingly transmit confidential material to a third-party service.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
86% confidence
Finding

The documented example recommends 'AUDIT_LOGGING' as a guardrail, but the earlier template inventory does not list any such template or capability. This creates a documentation-to-documentation contradiction about what guardrails the skill can actually apply or suggest.

Content

No source excerpt is available for this finding.

Static analysis

Detected: suspicious.exposed_secret_literal

File appears to expose a hardcoded API secret or token.

Critical
Code
suspicious.exposed_secret_literal
Location
README.md:566