Back to skill

Security audit

Moltbook CLI

Security checks for vulnerabilities and agentic risk

Overview

The skill is a coherent Moltbook social-network CLI, but it gives an agent authenticated authority to make live account and public engagement changes with incomplete scoping and safety warnings.

Install only if you are comfortable with an agent using your Moltbook API key to perform live account actions, including posts, comments, votes, follows, and subscriptions. Review each mutating command before use, protect or avoid the persistent credentials file, and rotate or revoke the API key if it may have been exposed.

Vulnerability Patterns
  • 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
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • 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
  • Rogue AgentSelf-Modification, Session Persistence
  • MCP Least PrivilegeUnderdeclared Capability, Wildcard Permission, Missing Permission Declaration
Findings (20)

Tp4

High
Category
MCP Tool Poisoning
Confidence
96% confidence
Finding

This second mismatch finding highlights additional undeclared capabilities such as voting, following, profile access, subscription actions, and local credential retrieval, while claimed notification support may be absent. Such inconsistencies undermine informed consent and create a pathway for over-privileged social/account actions beyond the user's expected scope.

Content

No source excerpt is available for this finding.

Tp4

High
Category
MCP Tool Poisoning
Confidence
95% confidence
Finding

This second mismatch finding highlights additional undeclared capabilities such as voting, following, profile access, subscription actions, and local credential retrieval, while claimed notification support may be absent. Such inconsistencies undermine informed consent and create a pathway for over-privileged social/account actions beyond the user's expected scope.

Content

No source excerpt is available for this finding.

Credential Access

High
Category
Privilege Escalation
Confidence
95% confidence
Finding

The skill explicitly identifies a local credentials file in the user's home config directory, indicating that usable authentication material is accessible from disk. If an agent or adjacent tool can read that file, an attacker could hijack the Moltbook account and perform authenticated actions as the user.

Content

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

md
1. Install: `npm install -g moltbook-cli` or run from skill directory
2. Authenticate: `moltbook login` (follow OAuth flow)
3. Credentials stored in `~/.config/moltbook/credentials.json`

## Commands

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 · README.md (reported line 28)May include surrounding context.

md
}

  // Try config file
  const configPath = join(homedir(), '.config', 'moltbook', 'credentials.json');
  if (existsSync(configPath)) {
    try {
      const config = JSON.parse(readFileSync(configPath, 'utf-8'));

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 · src/index.ts (reported line 25)May include surrounding context.

ts
}

  // Try config file
  const configPath = join(homedir(), '.config', 'moltbook', 'credentials.json');
  if (existsSync(configPath)) {
    try {
      const config = JSON.parse(readFileSync(configPath, 'utf-8'));

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 · src/index.ts (reported line 36)May include surrounding context.

ts
}

  // Try config file
  const configPath = join(homedir(), '.config', 'moltbook', 'credentials.json');
  if (existsSync(configPath)) {
    try {
      const config = JSON.parse(readFileSync(configPath, 'utf-8'));

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

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

export MOLTBOOK_API_KEY="your_api_key_here"

text

Or create a config file at `~/.config/moltbook/credentials.json`:
```json
{
  "api_key": "moltbook_sk_xxx"

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The README promotes commands that post, vote, comment, follow, and subscribe on the user's authenticated account, but it does not clearly warn that these are real, public, state-changing actions. In an agent skill context, this is dangerous because an autonomous agent may execute examples or use the tool without explicit user confirmation, causing unintended public activity, reputation harm, spam, or policy violations.

Content

No source excerpt is available for this finding.

Undeclared Tool Scope

Medium
Category
MCP Least Privilege
Confidence
88% confidence
Finding

The skill documents authenticated network interaction and local credential access but does not declare any explicit tool scope or permission boundaries. In an agent setting, this increases the chance of unintended use of network and environment/file capabilities, making review and policy enforcement harder.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
88% confidence
Finding

The documentation states where credentials are stored but omits any warning about the sensitivity of that file or the risks of plaintext-like local token storage. In agent environments, local credential artifacts are a common target for exfiltration or accidental disclosure, especially when other skills can read home-directory files.

Content

No source excerpt is available for this finding.

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The API client exposes state-changing and potentially destructive capabilities such as creating posts, deleting posts, voting, subscribing, and following that go beyond the narrowly described read/engagement actions in the skill description. In an agent setting, this creates a scope mismatch: downstream orchestrators or users may invoke the skill assuming limited behavior, while the code enables broader account actions that could be abused for spam, manipulation, or unauthorized modifications if higher-level safeguards are weak.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

The client provides a direct deletePost method with no built-in confirmation, dry-run, or secondary validation before issuing a DELETE request. In an autonomous agent context, a prompt injection, tool misuse, or simple model error could cause irreversible content deletion without meaningful friction or human review.

Content

No source excerpt is available for this finding.

Session Persistence

Medium
Category
Rogue Agent
Confidence
60% confidence
Finding

Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.

Content

Scanner excerpt · src/index.ts (reported line 36)May include surrounding context.

ts
}

  console.error(chalk.red('❌ No API key found.'));
  console.error(chalk.dim('Set MOLTBOOK_API_KEY env var or create ~/.config/moltbook/credentials.json'));
  process.exit(1);
}

Description-Behavior Mismatch

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The CLI exposes capability beyond the declared skill description by allowing state-changing social actions such as upvote, downvote, subscribe, and follow, plus profile browsing. In an agent-skill context, this scope expansion is risky because an orchestrating agent may invoke the skill under narrower assumptions and unintentionally perform engagement actions or reconnaissance the user did not authorize.

Content

No source excerpt is available for this finding.

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 19)May include surrounding context.

json
"author": "MoltyChief",
  "license": "MIT",
  "dependencies": {
    "commander": "^13.0.0",
    "chalk": "^5.4.1",
    "ora": "^8.0.0"
  },

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 20)May include surrounding context.

json
"license": "MIT",
  "dependencies": {
    "commander": "^13.0.0",
    "chalk": "^5.4.1",
    "ora": "^8.0.0"
  },
  "devDependencies": {

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 21)May include surrounding context.

json
"dependencies": {
    "commander": "^13.0.0",
    "chalk": "^5.4.1",
    "ora": "^8.0.0"
  },
  "devDependencies": {
    "@types/node": "^22.0.0",

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 24)May include surrounding context.

json
"ora": "^8.0.0"
  },
  "devDependencies": {
    "@types/node": "^22.0.0",
    "typescript": "^5.7.0",
    "tsx": "^4.0.0"
  }

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 25)May include surrounding context.

json
},
  "devDependencies": {
    "@types/node": "^22.0.0",
    "typescript": "^5.7.0",
    "tsx": "^4.0.0"
  }
}

Unpinned Dependencies

Low
Category
Supply Chain
Confidence
40% confidence
Finding

Dependencies lack version pinning, allowing potential malicious package updates. Consider pinning versions.

Content

Scanner excerpt · package.json (reported line 26)May include surrounding context.

json
"devDependencies": {
    "@types/node": "^22.0.0",
    "typescript": "^5.7.0",
    "tsx": "^4.0.0"
  }
}

Static analysis

No suspicious patterns detected.