Back to skill

Security audit

Outlit MCP

Security checks for vulnerabilities and agentic risk

Overview

The skill appears to do what it claims, but it asks agents to persist an API key while enabling broad customer-data access, so users should review it carefully before installing.

Install only if you trust Outlit with the connected organization data and can use a narrowly scoped, revocable API key. Avoid pasting long-lived keys into chat or shell history, keep MCP config files out of repositories, restrict file permissions, and rotate the key if it has already been exposed.

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 (1)

T09 · Insecure Skill Coding Practices

Warning
Location
SKILL.md:55
Finding

API Key Exposure Through Chat, Command Arguments, and Plaintext Configuration

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 55-85
Vulnerability Type: Insecure credential handling
Risk Level: Medium

The setup instructions tell the user to provide an API key to the agent and substitute it directly into either a shell command or plaintext JSON configuration.

Vulnerable Code

markdown
1. **Check for Claude Code** — If running inside Claude Code (check if `claude` CLI is available), run:
   ```bash
   claude mcp add outlit https://mcp.outlit.ai/mcp -- --header "Authorization: Bearer API_KEY"
   ```

2. **Check for Cursor** — If `.cursor/mcp.json` exists in the project or home directory, add to that file:
   ```json
   {
     "mcpServers": {
       "outlit": {
         "url": "https://mcp.outlit.ai/mcp",
         "headers": { "Authorization": "Bearer API_KEY" }
       }
     }
   }
   ```

3. **Check for Claude Desktop** — If `claude_desktop_config.json` exists at `~/Library/Application Support/Claude/` (macOS) or `%APPDATA%/Claude/` (Windows), add to that file:
   ```json
   {
     "mcpServers": {
       "outlit": {
         "url": "https://mcp.outlit.ai/mcp",
         "headers": { "Authorization": "Bearer API_KEY" }
       }
     }
   }
   ```

Ask the user for their API key if not provided. Replace `API_KEY` with the actual key.

Technical Analysis

A bearer API key is a reusable authentication secret. Requesting it through an agent conversation can expose it to conversation retention, telemetry, logs, or other systems that process the transcript. Supplying it directly in a command may additionally expose it through shell history or process inspection. Persisting it literally in MCP JSON configuration leaves the secret accessible to any user, extension, backup process, or repository consumer able to read the file.

The instructions do not prescribe secret-store integration, environment-variable indirection, restrictive file perm ...[truncated 1463 chars]

Remediation
View remediation

Remediation Suggestions

  1. Do not ask users to paste API keys into agent conversations.
  2. Prefer an interactive, non-echoing authentication flow or an operating-system credential store.
  3. Where supported, reference an environment variable or secret-manager identifier from MCP configuration instead of storing the literal token.
  4. Avoid embedding secrets in command-line arguments because they may be retained in shell history or exposed through process inspection.
  5. Store credential-bearing configuration outside repositories and apply owner-only file permissions.
  6. Add explicit warnings against committing MCP configuration containing credentials.
  7. Redact authorization headers from logs, diagnostics, and support bundles.
  8. Instruct users to revoke and rotate any key previously disclosed in chat, logs, command history, or a shared configuration file.
  9. Issue narrowly scoped, revocable tokens with the shortest practical lifetime and minimum required permissions.
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • 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
Category
Not specified by scanner
Confidence
89% confidence
Finding

The skill explicitly enables access to customer intelligence, user profiles, timelines, and raw SQL analytics, but it provides no guidance on safe handling of potentially sensitive business or personal data. In a data-access skill, omission of privacy, minimization, and disclosure safeguards increases the likelihood that an agent will over-collect, expose, or mishandle customer data during normal use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file instructs the agent to retrieve customer users, revenue, behavior metrics, and communication timeline data, which can affect privacy and expose sensitive business information. The workflow does not include any warning or disclosure about handling customer data or limiting access to authorized use.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
93% confidence
Finding

These steps instruct retrieval of a full customer profile, recent timeline, behavior metrics, and up to 100 timeline events, which are potentially sensitive user and account data. The markdown provides no caution about privacy impact, authorized access, or careful presentation of customer-specific details.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.