Agent skill · Audited from source
cli
skill · firecrawl/cliLicence not declaredAudited 24 Oct 2026 · source 26630e12ae63
Is it safe? No — BLOCK, grade D (60/100). We read this skill's source at commit 26630e12ae63 and observed filesystem, network and shell access and no hard-coded secrets. The audit raised 20 findings, 3 critical or high. What it does: Autonomously navigate websites and extract structured data across pages. Use when the task requires navigation or no suitable ready-made workflow or data provider covers it.
Cite
Cite this page
ModelsAtlas. “cli (firecrawl/cli)”. Retrieved 24 Oct 2026. https://modelsatlas.com/skills/firecrawl/cli
Blocked. The page stays public so you can check this skill if someone recommended it to you. The audit found 3 critical or high findings, starting with “Code injection” in src/commands/init.ts:750. Do not install it without reading them.
Trust audit
Audit 0.4.1 · source read 24 Oct 2026
BLOCK means the audit found something that could harm you or your machine. Grade D is shared by 721 of 17,602 audited skills.
What the source does
- FilesystemDeclared1 observation
- NetworkDeclared9 observations
- ShellDeclared3 observations
- DependenciesNot pinnedSome versions float
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 2 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | FAIL | 17 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 1 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass, no license.
Findings (20)
HIGHCode injectioncode.eval_exec · src/commands/init.ts:750
exec(`git clone --depth 1 https://github.com/${repo}.git "${tmpDir}"`, {- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · src/commands/init.ts:801
exec(
- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
HIGHCode injectioncode.eval_exec · src/utils/auth.ts:50
exec(command, (error: Error | null) => {- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
LOWInventory / provenanceinv.no_license
- Why
- no LICENSE file and no repo licence
- Fix
- add a licence
LOWCode injectioncode.eval_exec · src/__tests__/alexandria-beta.test.ts:63
...(await exec(process.execPath, ['dist/index.js', ...args], {- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
LOWCode injectioncode.eval_exec · src/__tests__/commands/skill-updates.integration.test.ts:100
: exec(command, options)
- Why
- evaluates text as code
- Fix
- remove; use a parser or a dispatch table
LOWInsecure cryptocrypto.weak_hash · src/commands/skills-native.ts:283
const hash = crypto.createHash('sha1');- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInsecure cryptocrypto.weak_hash · src/utils/skill-update-notice.ts:215
return createHash('sha1')- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · src/__tests__/alexandria-beta.test.ts:8
import packageJson from '../../package.json';
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · src/__tests__/commands/batch-scrape.test.ts:12
} from '../../commands/batch-scrape';
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · src/__tests__/commands/batch-scrape.test.ts:13
import { getClient } from '../../utils/client';- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · src/__tests__/commands/batch-scrape.test.ts:14
import { initializeConfig } from '../../utils/config';- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · src/__tests__/commands/batch-scrape.test.ts:17
vi.mock('../../utils/client', async () => {- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · src/__tests__/alexandria-beta.test.ts:33
baseUrl = `http://127.0.0.1:${(server.address() as { port: number }).port}`;- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · src/__tests__/commands/skill-updates.integration.test.ts:157
url = `http://127.0.0.1:${address.port}`;- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · src/__tests__/scrape-shorthand.test.ts:44
FIRECRAWL_API_URL: `http://127.0.0.1:${address.port}`,- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.raw_ip · src/__tests__/utils/integration.test.ts:68
apiUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;- Why
- No further detail recorded for this rule.
- Fix
- —
LOWSupply chainsupply.unpinned · package.json
@inquirer/prompts, commander, jsonc-parser, smol-toml, yaml, @types/node, husky, lint-staged
- Why
- 11 dependency range(s) float
- Fix
- pin exact versions or ship a lockfile
INFOSupply chainprompt.pipe_to_shell · README.md:49
curl -fsSL https://firecrawl.dev/install.sh | bash -s -- --agent openclaw
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 26630e12ae63 · 24 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherfirecrawl GitHub organizationOwner of the repository this skill is read from
- Source folderfirecrawl/cliThe exact folder we audited
- LicenceNot declaredAs the repository states it
- Commit pinned for this verdict26630e12ae63A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Autonomously navigate websites and extract structured data across pages. Use when the task requires navigation or no suitable ready-made workflow or data provider covers it.
---
name: firecrawl-agent
description: Autonomously navigate websites and extract structured data across pages. Use when the task requires navigation or no suitable ready-made workflow or data provider covers it.
allowed-tools:
- Bash(firecrawl *)
- Bash(npx firecrawl-cli *)
---
# firecrawl agent
AI-powered autonomous extraction. The agent navigates sites and extracts structured data (takes 2-5 minutes).
Before starting autonomous extraction for structured records or listings, check `firecrawl search alexandria '<data you need>'` for a ready-made workflow or data provider. Inspect a matching contract with `firecrawl list <provider> <capability> --pretty` and execute with `firecrawl scrape --alexandria <provider>/<capability> --options '<input JSON>'` if it covers the task. Use the exact provider, capability, and input fields from that contract. Continue with Agent when no suitable tool exists or the task requires autonomous navigation.
## Quick start
```bash
# Extract structured data
firecrawl agent "extract all pricing tiers" --wait --json -o .firecrawl/pricing.json
# With a JSON schema for structured output
firecrawl agent "extract products" --schema '{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"}}}' --wait --json -o .firecrawl/products.json
# Focus on specific pages
firecrawl agent "get feature list" --urls "<url>" --wait --json -o .firecrawl/features.json
```
Run `firecrawl agent --help` for the full option list.
**Done when:** the output file contains valid JSON answering the request — or a job ID was intentionally returned for later polling.
## Alexandria providers
A run uses connected Alexandria data providers only when it starts with an Alexandria flag: `--alexandria`, `--toolkits <slugs>` (up to 5), `--max-calls <n>`, `--require-approval`, or `--on-terms-required skip|ask`. Follow-ups on its thread keep those settings.
```bash
firecrawl agent "find the head of sales at <company>" --toolkits apollo,crunchbase --wait --json -o .firecrawl/contacts.json
```
With `--require-approval` (needs `--mode chat`), a run can end on a `pendingApproval` instead of making a paid call. Ask the user, then answer it on the same thread with `firecrawl agent "<follow-up prompt>" --thread <threadId> --mode chat --approve <approvalId>` (or `--decline <approvalId>`). A `terms` approval only continues once an organization admin accepts the provider's terms in the Firecrawl dashboard; give the user https://www.firecrawl.dev/app/settings?tab=data-sources, and use `firecrawl alexandria terms show <provider>` if they want to review the terms first. Approving does not accept them.
## Job IDs
Omitting `--wait` returns a job ID. A UUID positional argument is auto-detected as a status check:
```bash
# Check once (equivalent to adding --status)
firecrawl agent "<job-id>"
# Wait on an existing job, polling every 10 seconds for up to 5 minutes
firecrawl agent "<job-id>" --wait --poll-interval 10 --timeout 300
# Cancel an active job
firecrawl agent "<job-id>" --cancel
```
## Tips
- Use `--wait` for inline results; omit it only when you want a job ID to poll later (see [Job IDs](#job-ids)).
- Use `--schema` for predictable, structured output — otherwise the agent returns freeform data.
- Agent runs consume more credits than simple scrapes. Use `--max-credits` to cap spending.
- For simple single-page extraction, prefer `scrape` — it's faster and cheaper.
## See also
- [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — simpler single-page extraction
- [firecrawl-interact](../firecrawl-interact/SKILL.md) — scrape + interact for manual page interaction (more control)
- [firecrawl-crawl](../firecrawl-crawl/SKILL.md) — bulk extraction without AI
- [firecrawl-build-scrape](https://github.com/firecrawl/skills/tree/main/skills/build/firecrawl-build-scrape) — building structured extraction into an app instead of running it here
## Alexandria session feedback
To report an Alexandria session outcome or a provider/capability gap, use `firecrawl alexandria feedback --rating good|partial|bad --url <website> --requested-functionality '<what was needed>' --objective '<the underlying goal of the task>' --rationale '<what happened>' --json`. Use observed results in the rationale. No job ID is needed; send it within 20 minutes of your last Alexandria search, discovery, or execution, or it is rejected. Each submission refunds 1 credit, up to 10 per website and 100 per team each UTC day. Optional `--provider-feedback` and `--capability-feedback` JSON arrays describe specific gaps; inspect `firecrawl alexandria feedback --help` for their fields. Use the capability issue `missing_capability` when a provider exists but lacks the needed capability, and `new_capability_request` (with `requestedFunctionality`) to ask for one.Excerpt, first 4,821 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 26630e1
npm install -g firecrawl-cli npx skills add firecrawl/skills npm install -g firecrawl-cli@latest
git clone https://github.com/firecrawl/cli git -C cli checkout 26630e12ae63
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 26630e12ae63 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
| Gemini CLI | Mentioned in its text, not tested | Skills for Gemini CLI · About Gemini CLI |
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
| Windsurf | Mentioned in its text, not tested | Skills for Windsurf · About Windsurf |
Audit history
Every audit, every source change
- ✕BLOCK D 60 / 100
first audit · source
26630e12ae63
Similar skills
firecrawl/cli
Read a known webpage or execute a discovered workflow or data-provider capability. Use for page content or structured results once the URL or tool is selected.
firecrawl/cli
Find web sources with query-relevant page excerpts and optional full-page content, and discover workflows, data APIs, and indexes. Use for web research or finding structured records, listings, transcripts, and datasets.…
firecrawl/cli
Convert a local file (PDF, DOCX, XLSX, HTML, ...) to markdown, or answer questions about its content. Use whenever the input is a file path, not a URL.
firecrawl/cli
Drive a live browser on a scraped page: click, fill forms, log in, paginate, infinite-scroll. Use when content requires interaction or a scrape failed or returned incomplete content.
firecrawl/cli
Discover and list a site's URLs, with search filtering. Use for "map the site" or "find the URL for" requests — when the user knows the site but not the exact page, or wants site structure.
firecrawl/cli
Alert by webhook/email on web changes — use for "monitor/watch/track/alert me when": recurring checks on known URLs (prefer over repeated one-off scrapes) or web-wide watches for new results (queries + goal).
Questions about cli
What does the cli skill do?
Is cli safe to install?
What can cli access on my machine?
Which assistants does cli work with?
How current is this page?
Sources
- github.com/firecrawl/cli — the audited source at commit 26630e12ae63 and every finding aboveObserved · 24 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the cli skill do?
- Is cli safe to install?
- What can cli access on my machine?