Metal Mantra / AGENT INTELLIGENCEPublic evidence reportAUTOMATED SIGNAL. NOT CERTIFICATION.
PUBLIC REPORT · ADDED BY METAL MANTRA / AGENT SIGNAL v0.2

crawl4ai.

Scanned repository says: Latest: v0.9.4 (23 Sep 2026) · all releases →

Metal Mantra scanned this public repository on its own initiative; the maintainer did not submit it. Maintainers: scan the repository yourself to take this report over, or contact us.

Inspect GitHub source

85.3k starsApache-2.0pushed 1d ago

0community interest

Votes show community interest, not safety. They never change this score.

AUTOMATED SIGNAL69/100CCCNot security certification
START HERE

Review findings need attention.

Unsafe deserialization

Inspect the findings
WHAT THIS DOES NOT ESTABLISH

Runtime safety, real-world agent capability, fitness for your use case or independent certification.

Scan scope200 / 271Partial eligible-file selection · not the entire repository
Recorded findings12Heuristic matches requiring human review
SnapshotOct 12, 2026UTC · engine 0.4.0
DNS at scan timeUnverifiedDomain control is not security certification
01 / KNOW THE REPOSITORY

What the source
actually tells us.

Structured, cited information from the scanned archive. Repository-authored claims are labeled and never treated as verified capabilities.

INSPECTED SOURCE200 / 271Partial selection
READMEReadRepository-authored information
MANIFESTS3LICENSE, pyproject.toml, requirements.txt

Who it is for

  • Stated purpose · repository says · unreviewed

    Latest: v0.9.4 (23 Sep 2026) · all releases →

    README.md:13

What it can do

  • Stated capability · repository says · unreviewed

    🧹 Clean Markdown: headings, lists, tables and code blocks, in a structure an LLM reads well.

    README.md:106
  • Stated capability · repository says · unreviewed

    🎯 Fit Markdown: filters remove menus, footers and boilerplate: PruningContentFilterLXML, BM25ContentFilter (for a query) and LLMContentFilter.

    README.md:107
  • Stated capability · repository says · unreviewed

    🔗 Citations: page links become a numbered reference list.

    README.md:108

What adoption takes

  • Stated deployment · repository says · unreviewed

    If the browser setup fails, install it by hand:

    README.md:191
  • Stated prerequisite · manifest declares · unreviewed

    Manifest declares Python >=3.10 as a requirement.

    pyproject.toml:10
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on aiofiles.

    pyproject.toml:16
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on aiohttp.

    pyproject.toml:17
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on aiosqlite.

    pyproject.toml:18
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on anyio.

    pyproject.toml:19
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on lxml.

    pyproject.toml:20
  • Declared dependency · manifest declares · unreviewed

    Declares a dependency on unclecode-litellm.

    pyproject.toml:21

Limits and terms

  • Declared license · manifest declares · unreviewed

    A license or copying file is present; its terms have not been reviewed.

    LICENSE:1

Observed technical context

JavaScript · 14 selected filesPython · 186 selected filesModel API reference · static only

These are references in selected source files, not proof that a feature works at runtime.

Read from commit aadd82b at Oct 12, 2026, 5:01 AM UTC. Source links open that exact commit. Repository statements are unreviewed and do not affect the score.

02 / FINDINGS FIRST

What needs
a closer look.

Critical details are withheld publicly for the first 30 days after a scan. A matched pattern is a lead for investigation, not a confirmed vulnerability.

Dependencies: 126 exact runtime versions from uv.lock checked against OSV.dev on Oct 12, 2026; 24 with known advisories. Reachability is not checked.

12 findings
MAJOR

Unsafe deserialization

SEC006 · Security & privacy

The code loads data with a format that can run code while it is read, such as pickle or unrestricted YAML. A poisoned file, cache entry or downloaded model then runs with the agent's permissions.

SUGGESTED ACTION

Use a data-only format (JSON, safetensors, yaml.safe_load) for anything that is not fully trusted.

crawl4ai/legacy/llmtxt.py:219
MAJOR

Database query built from text

SEC009 · Security & privacy

A SQL statement is assembled by inserting values into the query text. If any of those values comes from a user or from model output, as in text-to-SQL agents, it can rewrite the query.

SUGGESTED ACTION

Pass values as bound parameters and allow-list identifiers such as table and column names.

crawl4ai/async_database.py:286
MAJOR

Database query built from text

SEC009 · Security & privacy

A SQL statement is assembled by inserting values into the query text. If any of those values comes from a user or from model output, as in text-to-SQL agents, it can rewrite the query.

SUGGESTED ACTION

Pass values as bound parameters and allow-list identifiers such as table and column names.

crawl4ai/legacy/database.py:166
MAJOR

Model call without fallback

EFF001 · Token & cost efficiency

A model call has no visible fallback. If the provider fails or is rate limited, the whole agent fails with it.

SUGGESTED ACTION

Configure a secondary model or explicit fallback path for provider failures.

docs/examples/research_assistant.py:100
MAJOR

Domain ownership not verified

TRUST001 · Entity trust

Metal Mantra could not confirm that the owner controls the stated domain. The domain may belong to someone else.

SUGGESTED ACTION

Verify the domain using the Metal Mantra DNS TXT challenge.

crawl4ai.com · location unavailable
MAJOR

Dependency with a high-severity advisory

DEP001 · Security & privacy

anyio 4.9.0 (PyPI) has known advisories: GHSA-5p39-cfhj-2xmp, GHSA-82r6-8w77-94w6, PYSEC-2026-4024, PYSEC-2026-4025 (highest severity critical). AnyIO: TLSStream IDNA 2003 host name encoding enables potential TLS certificate spoofing

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:167
MAJOR

Dependency with a high-severity advisory

DEP001 · Security & privacy

brotli 1.1.0 (PyPI) has known advisories: GHSA-2qfp-q593-8484, PYSEC-2026-2401 (highest severity high). Scrapy is vulnerable to a denial of service (DoS) attack due to flaws in brotli decompression implementation

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:213
MAJOR

Dependency with a high-severity advisory

DEP001 · Security & privacy

cryptography 46.0.3 (PyPI) has known advisories: GHSA-537c-gmf6-5ccf, GHSA-g6cj-pr64-35w5, GHSA-jwv3-5hgf-82ww, GHSA-m2h6-j472-rp4c, GHSA-m959-cc7f-wv43 (highest severity high). Vulnerable OpenSSL included in cryptography wheels

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:617
MINOR

Raw model text returned

SCH002 · Schema & tooling

The code returns the model's raw text. Output that was never parsed or validated can pass mistakes straight to users or other systems.

SUGGESTED ACTION

Parse and validate the result before returning it.

docs/examples/research_assistant.py:147
MINOR

Dependency with a known advisory

DEP002 · Security & privacy

filelock 3.18.0 (PyPI) has known advisories: GHSA-qmgc-5h2g-mvrw, GHSA-w853-jp5j-5j7f, PYSEC-2026-1374, PYSEC-2026-1375 (highest severity moderate). filelock Time-of-Check-Time-of-Use (TOCTOU) Symlink Vulnerability in SoftFileLock

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:729
MINOR

Dependency with a known advisory

DEP002 · Security & privacy

h2 4.2.0 (PyPI) has known advisories: GHSA-6hr6-w5qg-qmwg, GHSA-847f-9342-265h, PYSEC-2026-1435, PYSEC-2026-3628 (highest severity moderate). h2: Duplicate Host header could facilitate request smuggling

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:901
MINOR

Dependency with a known advisory

DEP002 · Security & privacy

hpack 4.1.0 (PyPI) has known advisories: GHSA-8v8h-hg4w-mvq2, PYSEC-2026-4053 (highest severity moderate). hpack: Unbounded variable integer decoding can cause run-away computation on malformed input

SUGGESTED ACTION

Upgrade to a fixed version listed in the advisory and regenerate the lockfile.

uv.lock:905
03 / EVIDENCE & LIMITS

The boundary
is part of the result.

What was scanned
200 of 271 eligible files · Partial selection.
Supported static source patterns and domain checks; no runtime execution.
What remains unknown
Unscanned files, external dependencies, production configuration, actual agent behavior and evidence beyond the configured checks.
Source location
Links open the current repository HEAD. Source may have changed since this snapshot.
Something looks wrong?
Tell us if a finding, scope or claim on this report needs a correction. Report a problem with this report
Entity trust · 15% of v0.2
Includes DNS ownership, HTTPS and policy evidence. Verification is domain control, not a security certificate.
DNS: unverifiedHTTPS: availablePrivacy: foundTerms: found
04 / THE METHOD BEHIND THE NUMBER

Open the
calculation.

Each pillar starts at 100. Rule deductions reduce its score; weights determine the overall contribution.

01

Security & privacy

9 findings · 25% weight
22/1005.5 pts
02

Guardrails & loop control

0 findings · 25% weight
100/10025.0 pts
03

Schema & tooling

1 findings · 20% weight
92/10018.4 pts
04

Token & cost efficiency

1 findings · 15% weight
86/10012.9 pts
05

Entity trust

1 findings · 15% weight
50/1007.5 pts
Inspect the current standard
USER REPORTS

Did crawl4ai work for people?

No user reports yet.

Each report is one signed-in GitHub account saying what happened. We do not verify that the account ran the agent, and reports never change the automated score or grade. For a security problem, use the disclosure page instead of a public note.

Sign in with GitHub to add a report

SHARE THE EVIDENCE

A signal.
Not a seal.

Share the full report so its scope and limits travel with the score.

Metal Mantra automated signal 69/100, not certified