Skip to content

langroid

v0.65.7 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

auth rce_ssrf

Summary

AI summary

GHSA-gjgq-w2m6-wr5q fix hardens the tool‑origin filter against content laundering in multi‑agent flows.

Full changelog

0.65.7 — Security hardening

Hardens the GHSA-gjgq-w2m6-wr5q tool-origin filter against content
laundering
. Recommended for anyone running multi-agent flows that forward
untrusted content
(directly, or indirectly via RAG) through orchestration
tools.

pip install -U langroid

Security hardening

Tool-origin filter could be bypassed by laundering untrusted content (#1035, #1038)

The GHSA-gjgq-w2m6-wr5q fix (0.65.3) blocks raw USER-origin tool JSON from
invoking a handle=True, use=False handler. But langroid tools are JSON in
message content, and the per-message tools_from_agent trust flag could be
laundered: an agent that forwards untrusted user content through
DonePassTool / AgentDoneTool re-emits tools parsed from that content as
structurally-trusted agent tools, which — after a Task relabels the result to
USER — the filter would still dispatch. This re-opened the same handle-only
dispatch bypass for user-supplied JSON in multi-agent setups.

Fix: a tainted distrust signal on ChatDocMetaData. External user input is
marked tainted at every entry point (ChatDocument.from_str, to_ChatDocument,
create_user_response, the interactive user_response path, Task.init, and
top-level USER ChatDocument inputs); the mark propagates through deepcopies
and the DonePassTool / AgentDoneTool repackage; and
_filter_user_origin_tools drops handle-only tools from a tainted message even
when tools_from_agent is set. Legitimate agent→agent handoffs (LLM-emitted
tools, which are never tainted) are unaffected.

Out of scope (the LLM-trust boundary): an LLM prompt-injected into emitting
tool JSON in its content — taint cannot flow through an LLM generation. Tracked
in #1035.

Behavior change

By default, a message derived from external user input no longer dispatches
use=False, handle=True tools, even across a multi-agent handoff that relabels
the sender to USER. Genuine LLM- or agent-emitted tool handoffs are unchanged,
and no configuration changes are required.

Upgrade

pip install -U langroid

Full changelog:
0.65.6...0.65.7

Security Fixes

  • GHSA-gjgq-w2m6-wr5q — tool‑origin filter hardened to drop handle‑only tools derived from tainted user content in multi‑agent flows.

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]