langgraph-api: Incomplete assistant authorization in LangGraph Server run creation
What fixes it
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
Summary
In affected versions of langgraph-api (the LangGraph Server runtime), the run-creation path authorized the assistant attached to a run using a different authorization event than the rest of the assistant-handling code paths. Direct assistant reads and cron creation dispatch the assistants.read authorization event; run creation dispatched assistants.search with an incomplete value. In deployments whose custom authorization handlers register only an assistants.read handler (without an assistants.search handler and without a global fallback handler), no handler was consulted on the run-creation path, the returned filter set was empty, and the owner constraint was omitted from the resulting query.
As a result, in those deployments a request to create a run could reference a private assistant owned by another user, even where direct assistant reads, assistant search, and cron creation against that assistant were correctly denied. The run-creation response merged the referenced assistant's metadata, config, and context into fields returned to the requesting user. These fields can carry sensitive configuration; the runtime encrypts them at rest for that reason.
We have no evidence of this behavior occurring in the wild.
Affected users / systems
You may be affected if you:
- run
langgraph-api(the LangGraph Server / Agent Server runtime, including via the LangGraph Platform Helm chart), and - use custom authorization handlers that gate assistant access through an
assistants.readorassistants.searchhandler rather than a global handler covering all assistant events.
Deployments without custom authorization handlers, or whose handlers apply an equivalent owner filter across all assistant events (for example through a global handler), are not affected.
Impact
- Confidentiality: exposure of another user's private assistant
metadata,config, andcontextthrough the run-creation response. These fields can contain sensitive configuration. - Integrity: creation of a run associated with another user's private assistant, beyond the requesting user's authorization scope; the run is then carried out using that assistant's configuration.
Patches / mitigation
Run creation, and the parallel cron-creation path, now dispatch the assistants.read authorization event in both the in-memory and gRPC/Postgres runtimes, matching direct assistant reads. Client-supplied run and cron metadata is no longer forwarded into that authorization event, so handlers receive a consistent value shape and determine access by returning an owner filter that is applied server-side. Fixed in langgraph-api 0.10.0.
This is a behavioral change for deployments with custom authorization handlers:
- Handlers that gated assistant access only through
assistants.searchduring run creation are no longer consulted on that path; provide an equivalentassistants.readhandler that returns the same owner filter. - The metadata field on the
assistants.readevent during run and cron creation is no longer populated; handlers that read or stamped it should move that logic into the run/cron create handlers.
Operational guidance
- Register an
assistants.readhandler (or a global handler covering it) that returns an owner-style filter, and confirm parity across the assistant read, search, and run/cron creation paths. - Upgrade to a release containing this change.
Text from GitHub Advisory Database
Affected versions 53
- langgraph-api, pip< 0.10.0GitHub
- langgraph-apiaffected: < 0.10.0CVE List
- langgraph-api, PyPIfrom first release, fixed in 0.10.0OSV
- langgraph-api, PyPI0.0.1OSV
- langgraph-api, PyPI0.0.10OSV
- langgraph-api, PyPI0.0.11OSV
- langgraph-api, PyPI0.0.12OSV
- langgraph-api, PyPI0.0.13OSV
- langgraph-api, PyPI0.0.14OSV
- langgraph-api, PyPI0.0.15OSV
- langgraph-api, PyPI0.0.16OSV
- langgraph-api, PyPI0.0.17OSV
- langgraph-api, PyPI0.0.18OSV
- langgraph-api, PyPI0.0.19OSV
- langgraph-api, PyPI0.0.2OSV
- langgraph-api, PyPI0.0.20OSV
- langgraph-api, PyPI0.0.21OSV
- langgraph-api, PyPI0.0.22OSV
- langgraph-api, PyPI0.0.23OSV
- langgraph-api, PyPI0.0.24OSV
- langgraph-api, PyPI0.0.25OSV
- langgraph-api, PyPI0.0.26OSV
- langgraph-api, PyPI0.0.27OSV
- langgraph-api, PyPI0.0.28OSV
- langgraph-api, PyPI0.0.28rc1OSV
- langgraph-api, PyPI0.0.3OSV
- langgraph-api, PyPI0.0.30OSV
- langgraph-api, PyPI0.0.31OSV
- langgraph-api, PyPI0.0.32OSV
- langgraph-api, PyPI0.0.33OSV
- langgraph-api, PyPI0.0.34OSV
- langgraph-api, PyPI0.0.36OSV
- langgraph-api, PyPI0.0.37OSV
- langgraph-api, PyPI0.0.38OSV
- langgraph-api, PyPI0.0.39OSV
- langgraph-api, PyPI0.0.4OSV
- langgraph-api, PyPI0.0.40OSV
- langgraph-api, PyPI0.0.41OSV
- langgraph-api, PyPI0.0.42OSV
- langgraph-api, PyPI0.0.43OSV
- langgraph-api, PyPI0.0.44OSV
- langgraph-api, PyPI0.0.45OSV
- langgraph-api, PyPI0.0.46OSV
- langgraph-api, PyPI0.0.47OSV
- langgraph-api, PyPI0.0.48OSV
- langgraph-api, PyPI0.0.5OSV
- langgraph-api, PyPI0.0.6OSV
- langgraph-api, PyPI0.0.7OSV
- langgraph-api, PyPI0.0.8OSV
- langgraph-api, PyPI0.0.9OSV
- langgraph-api, PyPI0.1.0OSV
- langgraph-api, PyPI0.1.12OSV
- langgraph-api, PyPI0.1.13OSV
References 5
- github.com/langchain-ai/docs/blob/7b70fbacab21f84d9c6f9848f86cdeb471adbb50/src/langsmith/agent-server-changelog.mdxFixvia CVE List
- github.com/langchain-ai/helm/security/advisories/GHSA-jfj5-wrj9-63x4Advisoryvia CVE List
- github.com/pypa/advisory-database/tree/main/vulns/langgraph-api/PYSEC-2026-3858.yamlAdvisoryvia GitHub
- github.com/advisories/GHSA-jfj5-wrj9-63x4Advisoryvia GitHub
- nvd.nist.gov/vuln/detail/CVE-2026-55236Referencevia GitHub