Fetching from the wire…
Public story · 2026-08-23 · high
A filter injection bug let one tenant's caller read another thread's checkpoints, and the fix landed in both the Python and JS packages.
Why now: Both the GitHub and npm advisories now list fixed versions, which is the signal to check pinned checkpointer versions against them.
LangGraph's MongoDB checkpointer shipped a bug that let a caller read another tenant's agent state. GHSA-533j-2v4q-mw5h, tracked as CVE-2026-55253 with a CVSS of 7.7, covers MongoDBSaver.list() and MongoDBStore.search() accepting a filter without rejecting $-prefixed MongoDB operator keys. Send an operator instead of a plain value and the query steps outside its thread scope.
That matters if you're running LangGraph with MongoDB as the backing store for more than one tenant or user. It gives a caller a way to read state that isn't theirs, not a crash or a denial of service. The fix landed in langgraph-checkpoint-mongodb 0.3.0 and langgraph-store-mongodb 0.4.0.
A parallel npm advisory, CVE-2026-48121, covers the same bug class in the JS packages. Unenforced identifier types let $gt and $ne bypass thread scoping there too, fixed in 1.3.1. Same shape of bug, two ecosystems, two separate patch numbers to track if you're running both.
The advisory doesn't say how long the bug was live or whether anyone found evidence of it being exploited before the fix. It also doesn't say whether other LangGraph checkpointer backends, like Postgres or Redis, share the same filter-handling pattern.
I've built on LangGraph. The checkpointer is exactly the kind of code path nobody reviews for injection, because it feels like internal plumbing, not a query boundary. The moment agent state serves more than one tenant, every filter parameter it accepts is untrusted input and needs to be treated that way. Check your version now. The list() and search() calls built from caller-supplied filters are the ones to audit first.
Each link below shares sources, entities, or timing with this story.
Langflow's CSV Agent node hardcodes allow_dangerous_code=True, exposing LangChain's python_repl_ast tool. Attackers inject prompts to execute arbitrary Python and OS commands without authentication. Patched in v1.8.0. This is the same eval() epidemic vulnerability class seen a...
LangChain, LangGraph, CrewAI, AutoGen, Microsoft Agent Framework, and Google ADK, presented at Black Hat (The Register). Insecure deserialization, SSRF, path traversal, use-after-free. That's the point: prompt-controlled content crosses into trusted framework logic, and then i...
MIT-licensed, built on LangChain and LangGraph, v2.0 expanding from research-only to sandboxed filesystem, persistent memory, a skills system, and sub-agent orchestration with Slack/Telegram/Feishu integrations (GitHub). The pattern across every framework today is identical: m...
Martin Fowler published a full article on April 2 formalizing something I've been feeling for months: the thing that separates a good coding agent from a bad one isn't the model. It's everything around the model. He calls it harness engineering. The framework is clean. Agent =...
AgentBouncr sits between AI agents and their tools using deterministic (not LLM-based) policy enforcement. JSON policy engine with 11 condition operators, SHA-256 hash-chained audit trails, synchronous kill switch, and injection detection. Works with LangChain, Vercel AI SDK,...
Go look at your ~/.claude/CLAUDE.md right now. Mine has internal package names, a build command with a host in it, and notes about which credentials live where. I wrote it assuming exactly one reader. RuntimeWire published traced request captures on August 9 showing Muse Code...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.