Bug Report: KeyError: 'context' when calling PATCH /assistants/{assistant_id} #863

Closed
opened 2026-02-20 17:42:09 -05:00 by yindo · 2 comments
Owner

Originally created by @althoff-brim on GitHub (Jul 30, 2025).

Checked other resources

  • This is a bug, not a usage question. For questions, please use the LangChain Forum (https://forum.langchain.com/).
  • I added a clear and detailed title that summarizes the issue.
  • I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example).
  • I included a self-contained, minimal example that demonstrates the issue INCLUDING all the relevant imports. The code run AS IS to reproduce the issue.

Example Code

curl 'http://localhost:2024/assistants/{assistant_id}' \
  --request PATCH \
  --header 'Content-Type: application/json' \
  --data '{
  "graph_id": "swarm",
  "config": {},
  "metadata": {},
  "name": "",
  "description": ""
}'

Error Message and Stack Trace (if applicable)

Traceback (most recent call last):
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 148, in call_next
    message = await recv_stream.receive()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\anyio\streams\memory.py", line 126, in receive
    raise EndOfStream from None
anyio.EndOfStream

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\src\swarm_platform\api\webapp.py", line 120, in error_handling_middleware
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 156, in call_next
    raise app_exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 176, in __call__
    with recv_stream, send_stream, collapse_excgroups():
                                   ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_utils.py", line 82, in collapse_excgroups
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 178, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\private_network.py", line 50, in dispatch
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 156, in call_next
    raise app_exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\http_logger.py", line 74, in __call__
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\http_logger.py", line 68, in __call__
    await self.app(scope, inner_receive, inner_send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\request_id.py", line 35, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 714, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 734, in app
    await route.handle(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 460, in handle
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\auth\middleware.py", line 49, in __call__
    return await super().__call__(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\authentication.py", line 48, in __call__
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 714, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 734, in app
    await route.handle(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 137, in handle
    return await super().handle(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 49, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 42, in app
    response: ASGIApp = await func(request)
                        ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_runtime_inmem\retry.py", line 27, in wrapper
    return await func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\api\assistants.py", line 354, in patch_assistant
    assistant = await Assistants.patch(
                ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_runtime_inmem\ops.py", line 381, in patch
    "context": context if context is not None else assistant["context"],
                                                   ~~~~~~~~~^^^^^^^^^^^
KeyError: 'context'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\errors.py", line 187, in __call__
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 176, in __call__
    with recv_stream, send_stream, collapse_excgroups():
                                   ^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\contextlib.py", line 158, in __exit__
    self.gen.throw(value)
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_utils.py", line 82, in collapse_excgroups
    raise exc
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 178, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\src\swarm_platform\api\webapp.py", line 128, in error_handling_middleware
    raise HTTPException(status_code=500, detail=str(e)) from e
fastapi.exceptions.HTTPException: 500: 'context'

Description

Description

After updating to langgraph_api version 0.2.110, my application crashes during hot_reload. It crash when issuing a PATCH request to /assistants/{assistant_id}. The traceback reveals a KeyError related to the "context" field not being found in the assistant object.

The relevant code from langgraph-api:

@retry_db
async def patch_assistant(
    request: ApiRequest,
) -> ApiResponse:
    """Update an assistant."""
    assistant_id = request.path_params["assistant_id"]
    validate_uuid(assistant_id, "Invalid assistant ID: must be a UUID")
    payload = await request.json(AssistantPatch)
    async with connect() as conn:
        assistant = await Assistants.patch(
            conn,
            assistant_id,
            config=payload.get("config"),
            context=payload.get("context"),
            graph_id=payload.get("graph_id"),
            metadata=payload.get("metadata"),
            name=payload.get("name"),
            description=payload.get("description"),
        )
    return ApiResponse(await fetchone(assistant))

Stack Trace (trimmed for clarity):

File ".../langgraph_runtime_inmem/ops.py", line 381, in patch
  "context": context if context is not None else assistant["context"],
                                                 ~~~~~~~~~^^^^^^^^^^^
KeyError: 'context'

Expected Behavior

The endpoint should gracefully handle missing "context" fields, possibly by assigning a default value or returning a 400 with an informative validation error instead of raising a KeyError.

System Info

System Information

OS: Windows
OS Version: 10.0.22621
Python Version: 3.12.11 (main, Jul 8 2025, 21:56:21) [MSC v.1944 64 bit (AMD64)]

Package Information

langchain_core: 0.3.72
langchain: 0.3.26
langchain_community: 0.3.26
langsmith: 0.4.1
langchain_anthropic: 0.3.15
langchain_experimental: 0.3.4
langchain_google_community: 2.0.7
langchain_google_genai: 2.1.5
langchain_openai: 0.3.25
langchain_postgres: 0.0.15
langchain_qdrant: 0.2.0
langchain_text_splitters: 0.3.8
langgraph_api: 0.2.110
langgraph_bigtool: 0.0.3
langgraph_cli: 0.3.6
langgraph_license: Installed. No version info available.
langgraph_runtime: Installed. No version info available.
langgraph_runtime_inmem: 0.6.5
langgraph_sdk: 0.2.0
langgraph_supervisor: 0.0.27
langgraph_swarm: 0.0.14

Optional packages not installed

langserve

Other Dependencies

aiohttp<4.0.0,>=3.8.3: Installed. No version info available.
anthropic<1,>=0.52.0: Installed. No version info available.
async-timeout<5.0.0,>=4.0.0;: Installed. No version info available.
asyncpg>=0.30.0: Installed. No version info available.
beautifulsoup4: 4.13.4
blockbuster<2.0.0,>=1.5.24: Installed. No version info available.
click>=8.1.7: Installed. No version info available.
cloudpickle>=3.0.0: Installed. No version info available.
cryptography<45.0,>=42.0.0: Installed. No version info available.
dataclasses-json<0.7,>=0.5.7: Installed. No version info available.
db-dtypes: Installed. No version info available.
fastembed: 0.7.1
filetype: 1.2.0
gapic-google-longrunning: Installed. No version info available.
google-ai-generativelanguage: 0.6.18
google-api-core: 2.25.1
google-api-python-client: 2.173.0
google-auth: 2.40.3
google-auth-httplib2: 0.2.0
google-auth-oauthlib: 1.2.2
google-cloud-aiplatform: Installed. No version info available.
google-cloud-bigquery: 3.34.0
google-cloud-bigquery-storage: 2.32.0
google-cloud-contentwarehouse: Installed. No version info available.
google-cloud-core: 2.4.3
google-cloud-discoveryengine: Installed. No version info available.
google-cloud-documentai: 3.5.0
google-cloud-documentai-toolbox: Installed. No version info available.
google-cloud-speech: Installed. No version info available.
google-cloud-storage: Installed. No version info available.
google-cloud-texttospeech: Installed. No version info available.
google-cloud-translate: Installed. No version info available.
google-cloud-vision: 3.10.2
googlemaps: Installed. No version info available.
grpcio: 1.73.0
httpx: 0.28.1
httpx-sse<1.0.0,>=0.4.0: Installed. No version info available.
httpx>=0.25.0: Installed. No version info available.
httpx>=0.25.2: Installed. No version info available.
jsonpatch<2.0,>=1.33: Installed. No version info available.
jsonschema-rs<0.30,>=0.20.0: Installed. No version info available.
langchain-anthropic;: Installed. No version info available.
langchain-aws;: Installed. No version info available.
langchain-azure-ai;: Installed. No version info available.
langchain-cohere;: Installed. No version info available.
langchain-community;: Installed. No version info available.
langchain-core<0.4.0,>=0.2.13: Installed. No version info available.
langchain-core<0.4.0,>=0.3.40: Installed. No version info available.
langchain-core<1.0.0,>=0.3.51: Installed. No version info available.
langchain-core<1.0.0,>=0.3.63: Installed. No version info available.
langchain-core<1.0.0,>=0.3.66: Installed. No version info available.
langchain-core>=0.3.40: Installed. No version info available.
langchain-core>=0.3.64: Installed. No version info available.
langchain-deepseek;: Installed. No version info available.
langchain-fireworks;: Installed. No version info available.
langchain-google-genai;: Installed. No version info available.
langchain-google-vertexai;: Installed. No version info available.
langchain-groq;: Installed. No version info available.
langchain-huggingface;: Installed. No version info available.
langchain-mistralai;: Installed. No version info available.
langchain-ollama;: Installed. No version info available.
langchain-openai;: Installed. No version info available.
langchain-perplexity;: Installed. No version info available.
langchain-text-splitters<1.0.0,>=0.3.8: Installed. No version info available.
langchain-together;: Installed. No version info available.
langchain-xai;: Installed. No version info available.
langchain<1.0.0,>=0.3.26: Installed. No version info available.
langgraph-api<0.3.0,>=0.2.67;: Installed. No version info available.
langgraph-checkpoint>=2.0.23: Installed. No version info available.
langgraph-checkpoint>=2.0.25: Installed. No version info available.
langgraph-prebuilt>=0.1.7: Installed. No version info available.
langgraph-runtime-inmem<0.7,>=0.6.5: Installed. No version info available.
langgraph-runtime-inmem>=0.6.0;: Installed. No version info available.
langgraph-sdk>=0.1.0;: Installed. No version info available.
langgraph-sdk>=0.2.0: Installed. No version info available.
langgraph<0.7.0,>=0.6.0: Installed. No version info available.
langgraph>=0.2: Installed. No version info available.
langgraph>=0.3.0: Installed. No version info available.
langgraph>=0.3.5: Installed. No version info available.
langgraph>=0.4.0: Installed. No version info available.
langsmith-pyo3: Installed. No version info available.
langsmith>=0.1.125: Installed. No version info available.
langsmith>=0.1.17: Installed. No version info available.
langsmith>=0.3.45: Installed. No version info available.
numpy<3,>=1.21: Installed. No version info available.
numpy>=1.26.2;: Installed. No version info available.
numpy>=2.1.0;: Installed. No version info available.
openai-agents: Installed. No version info available.
openai<2.0.0,>=1.86.0: Installed. No version info available.
opentelemetry-api: Installed. No version info available.
opentelemetry-exporter-otlp-proto-http: Installed. No version info available.
opentelemetry-sdk: Installed. No version info available.
orjson: 3.10.18
orjson>=3.10.1: Installed. No version info available.
orjson>=3.9.7: Installed. No version info available.
packaging: 24.2
packaging>=23.2: Installed. No version info available.
pandas: 2.3.0
pgvector<0.4,>=0.2.5: Installed. No version info available.
psycopg-pool<4,>=3.2.1: Installed. No version info available.
psycopg<4,>=3: Installed. No version info available.
pyarrow: Installed. No version info available.
pydantic: 2.11.7
pydantic-settings<3.0.0,>=2.4.0: Installed. No version info available.
pydantic<3.0.0,>=2.7.4: Installed. No version info available.
pydantic>=2.7.4: Installed. No version info available.
pyjwt>=2.9.0: Installed. No version info available.
pytest: 8.4.1
python-dotenv>=0.8.0;: Installed. No version info available.
PyYAML>=5.3: Installed. No version info available.
qdrant-client: 1.14.3
requests: 2.32.4
requests-toolbelt: 1.0.0
requests<3,>=2: Installed. No version info available.
rich: 13.9.4
SQLAlchemy<3,>=1.4: Installed. No version info available.
sqlalchemy<3,>=2: Installed. No version info available.
sse-starlette<2.2.0,>=2.1.0: Installed. No version info available.
sse-starlette>=2: Installed. No version info available.
starlette>=0.37: Installed. No version info available.
starlette>=0.38.6: Installed. No version info available.
structlog<26,>=24.1.0: Installed. No version info available.
structlog>23: Installed. No version info available.
tenacity!=8.4.0,<10,>=8.1.0: Installed. No version info available.
tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available.
tenacity>=8.0.0: Installed. No version info available.
tiktoken<1,>=0.7: Installed. No version info available.
truststore>=0.1: Installed. No version info available.
typing-extensions>=4.7: Installed. No version info available.
uvicorn>=0.26.0: Installed. No version info available.
watchfiles>=0.13: Installed. No version info available.
zstandard: 0.23.0

Originally created by @althoff-brim on GitHub (Jul 30, 2025). ### Checked other resources - [x] This is a bug, not a usage question. For questions, please use the LangChain Forum (https://forum.langchain.com/). - [x] I added a clear and detailed title that summarizes the issue. - [x] I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example). - [x] I included a self-contained, minimal example that demonstrates the issue INCLUDING all the relevant imports. The code run AS IS to reproduce the issue. ### Example Code ```python curl 'http://localhost:2024/assistants/{assistant_id}' \ --request PATCH \ --header 'Content-Type: application/json' \ --data '{ "graph_id": "swarm", "config": {}, "metadata": {}, "name": "", "description": "" }' ``` ### Error Message and Stack Trace (if applicable) ```shell Traceback (most recent call last): File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 148, in call_next message = await recv_stream.receive() ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\anyio\streams\memory.py", line 126, in receive raise EndOfStream from None anyio.EndOfStream During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\src\swarm_platform\api\webapp.py", line 120, in error_handling_middleware response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 156, in call_next raise app_exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 176, in __call__ with recv_stream, send_stream, collapse_excgroups(): ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\contextlib.py", line 158, in __exit__ self.gen.throw(value) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_utils.py", line 82, in collapse_excgroups raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 178, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\private_network.py", line 50, in dispatch response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 156, in call_next raise app_exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 93, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\cors.py", line 144, in simple_response await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\http_logger.py", line 74, in __call__ raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\http_logger.py", line 68, in __call__ await self.app(scope, inner_receive, inner_send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\middleware\request_id.py", line 35, in __call__ await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 460, in handle await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\auth\middleware.py", line 49, in __call__ return await super().__call__(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\authentication.py", line 48, in __call__ await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 714, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 734, in app await route.handle(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 137, in handle return await super().handle(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\routing.py", line 288, in handle await self.app(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 49, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 53, in wrapped_app raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\route.py", line 42, in app response: ASGIApp = await func(request) ^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_runtime_inmem\retry.py", line 27, in wrapper return await func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_api\api\assistants.py", line 354, in patch_assistant assistant = await Assistants.patch( ^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\langgraph_runtime_inmem\ops.py", line 381, in patch "context": context if context is not None else assistant["context"], ~~~~~~~~~^^^^^^^^^^^ KeyError: 'context' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\uvicorn\protocols\http\h11_impl.py", line 403, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\errors.py", line 187, in __call__ raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 176, in __call__ with recv_stream, send_stream, collapse_excgroups(): ^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\AppData\Roaming\uv\python\cpython-3.12.11-windows-x86_64-none\Lib\contextlib.py", line 158, in __exit__ self.gen.throw(value) File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\_utils.py", line 82, in collapse_excgroups raise exc File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\.venv\Lib\site-packages\starlette\middleware\base.py", line 178, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\Usuário\Documents\Brim\BrimAI\apps\platform-ai-mvp\src\swarm_platform\api\webapp.py", line 128, in error_handling_middleware raise HTTPException(status_code=500, detail=str(e)) from e fastapi.exceptions.HTTPException: 500: 'context' ``` ### Description ## Description After updating to langgraph_api version 0.2.110, my application crashes during hot_reload. It crash when issuing a PATCH request to `/assistants/{assistant_id}`. The traceback reveals a KeyError related to the "context" field not being found in the assistant object. The relevant code from `langgraph-api`: ```python @retry_db async def patch_assistant( request: ApiRequest, ) -> ApiResponse: """Update an assistant.""" assistant_id = request.path_params["assistant_id"] validate_uuid(assistant_id, "Invalid assistant ID: must be a UUID") payload = await request.json(AssistantPatch) async with connect() as conn: assistant = await Assistants.patch( conn, assistant_id, config=payload.get("config"), context=payload.get("context"), graph_id=payload.get("graph_id"), metadata=payload.get("metadata"), name=payload.get("name"), description=payload.get("description"), ) return ApiResponse(await fetchone(assistant)) ``` Stack Trace (trimmed for clarity): ```bash File ".../langgraph_runtime_inmem/ops.py", line 381, in patch "context": context if context is not None else assistant["context"], ~~~~~~~~~^^^^^^^^^^^ KeyError: 'context' ``` ## Expected Behavior The endpoint should gracefully handle missing "context" fields, possibly by assigning a default value or returning a 400 with an informative validation error instead of raising a KeyError. ### System Info System Information ------------------ > OS: Windows > OS Version: 10.0.22621 > Python Version: 3.12.11 (main, Jul 8 2025, 21:56:21) [MSC v.1944 64 bit (AMD64)] Package Information ------------------- > langchain_core: 0.3.72 > langchain: 0.3.26 > langchain_community: 0.3.26 > langsmith: 0.4.1 > langchain_anthropic: 0.3.15 > langchain_experimental: 0.3.4 > langchain_google_community: 2.0.7 > langchain_google_genai: 2.1.5 > langchain_openai: 0.3.25 > langchain_postgres: 0.0.15 > langchain_qdrant: 0.2.0 > langchain_text_splitters: 0.3.8 > langgraph_api: 0.2.110 > langgraph_bigtool: 0.0.3 > langgraph_cli: 0.3.6 > langgraph_license: Installed. No version info available. > langgraph_runtime: Installed. No version info available. > langgraph_runtime_inmem: 0.6.5 > langgraph_sdk: 0.2.0 > langgraph_supervisor: 0.0.27 > langgraph_swarm: 0.0.14 Optional packages not installed ------------------------------- > langserve Other Dependencies ------------------ > aiohttp<4.0.0,>=3.8.3: Installed. No version info available. > anthropic<1,>=0.52.0: Installed. No version info available. > async-timeout<5.0.0,>=4.0.0;: Installed. No version info available. > asyncpg>=0.30.0: Installed. No version info available. > beautifulsoup4: 4.13.4 > blockbuster<2.0.0,>=1.5.24: Installed. No version info available. > click>=8.1.7: Installed. No version info available. > cloudpickle>=3.0.0: Installed. No version info available. > cryptography<45.0,>=42.0.0: Installed. No version info available. > dataclasses-json<0.7,>=0.5.7: Installed. No version info available. > db-dtypes: Installed. No version info available. > fastembed: 0.7.1 > filetype: 1.2.0 > gapic-google-longrunning: Installed. No version info available. > google-ai-generativelanguage: 0.6.18 > google-api-core: 2.25.1 > google-api-python-client: 2.173.0 > google-auth: 2.40.3 > google-auth-httplib2: 0.2.0 > google-auth-oauthlib: 1.2.2 > google-cloud-aiplatform: Installed. No version info available. > google-cloud-bigquery: 3.34.0 > google-cloud-bigquery-storage: 2.32.0 > google-cloud-contentwarehouse: Installed. No version info available. > google-cloud-core: 2.4.3 > google-cloud-discoveryengine: Installed. No version info available. > google-cloud-documentai: 3.5.0 > google-cloud-documentai-toolbox: Installed. No version info available. > google-cloud-speech: Installed. No version info available. > google-cloud-storage: Installed. No version info available. > google-cloud-texttospeech: Installed. No version info available. > google-cloud-translate: Installed. No version info available. > google-cloud-vision: 3.10.2 > googlemaps: Installed. No version info available. > grpcio: 1.73.0 > httpx: 0.28.1 > httpx-sse<1.0.0,>=0.4.0: Installed. No version info available. > httpx>=0.25.0: Installed. No version info available. > httpx>=0.25.2: Installed. No version info available. > jsonpatch<2.0,>=1.33: Installed. No version info available. > jsonschema-rs<0.30,>=0.20.0: Installed. No version info available. > langchain-anthropic;: Installed. No version info available. > langchain-aws;: Installed. No version info available. > langchain-azure-ai;: Installed. No version info available. > langchain-cohere;: Installed. No version info available. > langchain-community;: Installed. No version info available. > langchain-core<0.4.0,>=0.2.13: Installed. No version info available. > langchain-core<0.4.0,>=0.3.40: Installed. No version info available. > langchain-core<1.0.0,>=0.3.51: Installed. No version info available. > langchain-core<1.0.0,>=0.3.63: Installed. No version info available. > langchain-core<1.0.0,>=0.3.66: Installed. No version info available. > langchain-core>=0.3.40: Installed. No version info available. > langchain-core>=0.3.64: Installed. No version info available. > langchain-deepseek;: Installed. No version info available. > langchain-fireworks;: Installed. No version info available. > langchain-google-genai;: Installed. No version info available. > langchain-google-vertexai;: Installed. No version info available. > langchain-groq;: Installed. No version info available. > langchain-huggingface;: Installed. No version info available. > langchain-mistralai;: Installed. No version info available. > langchain-ollama;: Installed. No version info available. > langchain-openai;: Installed. No version info available. > langchain-perplexity;: Installed. No version info available. > langchain-text-splitters<1.0.0,>=0.3.8: Installed. No version info available. > langchain-together;: Installed. No version info available. > langchain-xai;: Installed. No version info available. > langchain<1.0.0,>=0.3.26: Installed. No version info available. > langgraph-api<0.3.0,>=0.2.67;: Installed. No version info available. > langgraph-checkpoint>=2.0.23: Installed. No version info available. > langgraph-checkpoint>=2.0.25: Installed. No version info available. > langgraph-prebuilt>=0.1.7: Installed. No version info available. > langgraph-runtime-inmem<0.7,>=0.6.5: Installed. No version info available. > langgraph-runtime-inmem>=0.6.0;: Installed. No version info available. > langgraph-sdk>=0.1.0;: Installed. No version info available. > langgraph-sdk>=0.2.0: Installed. No version info available. > langgraph<0.7.0,>=0.6.0: Installed. No version info available. > langgraph>=0.2: Installed. No version info available. > langgraph>=0.3.0: Installed. No version info available. > langgraph>=0.3.5: Installed. No version info available. > langgraph>=0.4.0: Installed. No version info available. > langsmith-pyo3: Installed. No version info available. > langsmith>=0.1.125: Installed. No version info available. > langsmith>=0.1.17: Installed. No version info available. > langsmith>=0.3.45: Installed. No version info available. > numpy<3,>=1.21: Installed. No version info available. > numpy>=1.26.2;: Installed. No version info available. > numpy>=2.1.0;: Installed. No version info available. > openai-agents: Installed. No version info available. > openai<2.0.0,>=1.86.0: Installed. No version info available. > opentelemetry-api: Installed. No version info available. > opentelemetry-exporter-otlp-proto-http: Installed. No version info available. > opentelemetry-sdk: Installed. No version info available. > orjson: 3.10.18 > orjson>=3.10.1: Installed. No version info available. > orjson>=3.9.7: Installed. No version info available. > packaging: 24.2 > packaging>=23.2: Installed. No version info available. > pandas: 2.3.0 > pgvector<0.4,>=0.2.5: Installed. No version info available. > psycopg-pool<4,>=3.2.1: Installed. No version info available. > psycopg<4,>=3: Installed. No version info available. > pyarrow: Installed. No version info available. > pydantic: 2.11.7 > pydantic-settings<3.0.0,>=2.4.0: Installed. No version info available. > pydantic<3.0.0,>=2.7.4: Installed. No version info available. > pydantic>=2.7.4: Installed. No version info available. > pyjwt>=2.9.0: Installed. No version info available. > pytest: 8.4.1 > python-dotenv>=0.8.0;: Installed. No version info available. > PyYAML>=5.3: Installed. No version info available. > qdrant-client: 1.14.3 > requests: 2.32.4 > requests-toolbelt: 1.0.0 > requests<3,>=2: Installed. No version info available. > rich: 13.9.4 > SQLAlchemy<3,>=1.4: Installed. No version info available. > sqlalchemy<3,>=2: Installed. No version info available. > sse-starlette<2.2.0,>=2.1.0: Installed. No version info available. > sse-starlette>=2: Installed. No version info available. > starlette>=0.37: Installed. No version info available. > starlette>=0.38.6: Installed. No version info available. > structlog<26,>=24.1.0: Installed. No version info available. > structlog>23: Installed. No version info available. > tenacity!=8.4.0,<10,>=8.1.0: Installed. No version info available. > tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available. > tenacity>=8.0.0: Installed. No version info available. > tiktoken<1,>=0.7: Installed. No version info available. > truststore>=0.1: Installed. No version info available. > typing-extensions>=4.7: Installed. No version info available. > uvicorn>=0.26.0: Installed. No version info available. > watchfiles>=0.13: Installed. No version info available. > zstandard: 0.23.0
yindo added the bugpending labels 2026-02-20 17:42:10 -05:00
yindo closed this issue 2026-02-20 17:42:10 -05:00
Author
Owner

@hinthornw commented on GitHub (Jul 30, 2025):

Should be fixed in https://pypi.org/project/langgraph-runtime-inmem/ == 0.6.6

@hinthornw commented on GitHub (Jul 30, 2025): Should be fixed in https://pypi.org/project/langgraph-runtime-inmem/ == 0.6.6
Author
Owner

@althoff-brim commented on GitHub (Jul 30, 2025):

Indeed it was fixed. Thanks.

@althoff-brim commented on GitHub (Jul 30, 2025): Indeed it was fixed. Thanks.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langchain-ai/langgraph#863