Back to skill

Security audit

Ffcli

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent, but it relies on an unpinned third-party CLI that handles Fireflies API credentials and private meeting content.

Review the ffcli package and Homebrew tap before installing, prefer a pinned and verified release, use the narrowest Fireflies API key available, avoid putting API keys directly in shell history, and treat transcripts or exported summaries as confidential files.

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

T08 · Insecure Dependencies

Warning
Location
SKILL.md:4
Finding

Unpinned Third-Party CLI Handles Fireflies Credentials and Confidential Meeting Data

Content
View full analysis

Vulnerability Details

File Location: SKILL.md, lines 4-24
Vulnerability Type: T08: Insecure Dependencies
Risk Level: Medium

Vulnerable Code

yaml
metadata: {"openclaw":{"requires":{"bins":["ffcli"],"env":["FIREFLIES_API_KEY"]},"primaryEnv":"FIREFLIES_API_KEY","install":[{"id":"brew","kind":"brew","formula":"ruigomeseu/tap/ffcli","bins":["ffcli"],"label":"Install ffcli (Homebrew tap)"},{"id":"npm","kind":"node","package":"@ruigomeseu/ffcli","bins":["ffcli"],"label":"Install ffcli (npm)"}]}}
markdown
Install via Homebrew or npm:

```bash
brew install ruigomeseu/tap/ffcli
# or
npm install -g @ruigomeseu/ffcli

Authenticate with your Fireflies API key:

bash
ffcli auth <your-api-key>    # Store key locally (~/.config/ffcli/)
ffcli auth --check           # Verify it works
text

### Technical Analysis

The Skill delegates all executable functionality to `ffcli`, obtained from the individual npm namespace `@ruigomeseu` or the custom Homebrew tap `ruigomeseu/tap`. Neither installation method pins an audited version or verifies an integrity digest or trusted provenance.

Consequently, the executable installed when the instructions are followed can differ from the version that existed when the Skill was reviewed. The CLI occupies a sensitive trust position because it receives `FIREFLIES_API_KEY`, stores or reads authentication material, and retrieves private meeting metadata, summaries, action items, and transcripts.

The Skill does warn users that the CLI is third-party and recommends source verification. This warning reduces ambiguity but does not technically enforce a reviewed version or package integrity. The project contains no implementation of the external CLI, so this audit does not establish that the current package is malicious; the confirmed issue is the uncontrolled dependency and resulting supply-chain exposure.

Passing the key as a command-line argument may 
...[truncated 1687 chars]
Remediation
View remediation

Remediation Suggestions

  1. Pin the npm package and Homebrew formula to a specifically reviewed release rather than installing the latest mutable version.
  2. Verify package integrity using cryptographic checksums, signed releases, npm provenance, or equivalent attestations.
  3. Review the exact ffcli source and release artifacts before permitting installation, including package lifecycle scripts, network destinations, credential storage, and update behavior.
  4. Prefer an official Fireflies-maintained client or a dependency sourced from a centrally controlled and reviewed registry.
  5. Avoid supplying API keys as command-line arguments. Use protected environment injection, standard input, an operating-system credential store, or an interactive secret prompt that does not persist the value in shell history.
  6. Ensure any local credential file is created with restrictive permissions and never included in backups, logs, repositories, or exported artifacts unintentionally.
  7. Use a dedicated, least-privilege Fireflies API credential where the platform supports scoped tokens. Document rotation and immediate revocation procedures.
  8. Execute the CLI in a restricted environment with only the network, filesystem access, and credentials required for the requested operation.
  9. Add automated dependency monitoring and require renewed review whenever the pinned package version, checksum, maintainer, or distribution source changes.
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 (1)

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This skill is explicitly designed to retrieve meeting transcripts, summaries, recordings metadata, and participant information, all of which commonly contain confidential business discussions and personal data. The file explains how to access and export that data but does not clearly warn users about sensitivity, least-privilege handling, or the risk of exposing private meeting content through prompts, terminal history, saved files, or downstream tooling.

Content

No source excerpt is available for this finding.

Static analysis

No suspicious patterns detected.