Skip to content

langroid

v0.65.13 Security

This release includes 1 security fix for security teams reviewing exposed deployments.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →
This release patches 1 known CVE

Topics

agents ai chatgpt function-calling llm gpt-4
+10 more
gpt4 information-retrieval language-model llama llm-agent llm-framework local-llm multi-agent-systems openai-api retrieval-augmented-generation

Affected surfaces

deps

Summary

AI summary

Updates Upgrade notes, https://github.com/langroid/langroid/security/advisories, and https://github.com/langroid/langroid/blob/main/SECURITY.md across a mixed release.

Full changelog

0.65.13 — langroid[lancedb] installs on Python 3.13 again, LanceDB FTS fixed

This release unpins lancedb and pyarrow. Two pins had drifted into an
outright conflict that made the lancedb extra uninstallable on Python 3.13,
and lifting them surfaced a LanceDB API rename that had quietly broken
full-text search in LanceDocChatAgent.

pip install -U langroid

The pin conflict (#1073)

lancedb<0.9.0 pulled in pylance==0.12.1, which requires pyarrow<12
directly contradicting the pyarrow>=15.0.0 that langroid[vecdbs]
declares. The two extras were only ever co-installable by resolution luck.

The practical consequence: pyarrow 15 has no cp313 wheel, so on Python
3.13 the resolver fell back to building it from source, which fails. Installing
langroid[lancedb] (or anything pulling it in, including langroid[all]) was
broken on 3.13.

Both floors are raised with no upper cap:

| | before | after |
|---|---|---|
| lancedb | >=0.8.2,<0.9.0 | >=0.9.0 |
| pyarrow | >=15.0.0,<16.0.0 | >=15.0.0 |

which resolves to lancedb 0.34.0 and pyarrow 25.0.0, and drops pylance
entirely. It also clears a high-severity pyarrow advisory (use-after-free
when reading an IPC file with pre-buffering, patched in 23.0.1).

LanceDB renamed the FTS score column

Somewhere between 0.8.2 and 0.34.0, LanceDB renamed the full-text-search
relevance column from score to _score. LanceDocChatAgent's BM25 path read
it by name, so on current LanceDB it raised KeyError: 'score'. Confirmed
against a live table:

FTS result columns:    ['vector', 'text', 'id', '_score']
vector result columns: ['vector', 'text', 'id', '_distance']

LanceDocChatAgent.get_similar_chunks_bm25 now accepts either name, so it
works across the supported range rather than pinning us to one LanceDB
generation. Two previously-failing tests in test_lance_doc_chat_agent.py pass
again.

Upgrade notes

  • If you pin lancedb yourself, note the floor is now 0.9.0.
  • This is a large LanceDB jump (0.8.2 → 0.34.0). If you have existing local
    .lancedb collections and hit schema errors, re-creating the collection is
    the quickest path.
  • No Langroid API changes.

Verification

13 LanceDB vector-store tests and the LanceDocChatAgent suite pass; black,
ruff, and mypy -p langroid are clean.

Also since 0.65.11

Four security advisories were published against 0.65.11 and are fixed in that
release and later — see
Security Advisories
and the rewritten
SECURITY.md,
which now states the threat model for agents that execute LLM-generated
SQL/Cypher/AQL/pandas, and what is in and out of scope for vulnerability
reports.

Upgrade

pip install -U langroid

Full changelog:
0.65.12...0.65.13

Breaking Changes

  • Removed upper caps for `lancedb` and `pyarrow`; both now allow any version >= the lower bounds (lancedb >=0.9.0, pyarrow >=15.0.0).

Security Fixes

  • Deprecates high‑severity pyarrow advisory (use‑after‑free when reading IPC files with pre‑buffering) by upgrading to pyarrow ≥15.0.0, which includes the fix from version 23.0.1.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track langroid

Get notified when new releases ship.

Sign up free

About langroid

Harness LLMs with Multi-Agent Programming

All releases →

Related context

Earlier breaking changes

  • v0.65.9 MCP tool parameters now strictly validate enums, unions, and nested models.
  • v0.65.5 Blocks code‑execution, file, and network primitives in creation tools by default.
  • v0.65.5 Restricts retrieval tools to read‑only queries; write or admin clauses are rejected by default.
  • v0.65.3 Raw user messages containing tools registered with `enable_message(..., use=False, handle=True)` are now dropped instead of executed.
  • v0.65.2 Restricts eval'd expression builtins to a curated safe set, breaking code that relied on full Python builtins (e.g., __import__, open).

Beta — feedback welcome: [email protected]