-
Notifications
You must be signed in to change notification settings - Fork 21.6k
Open
Open
InjectedState with a NotRequired state field raises KeyError when the field is absent from state#35585
Bug
#35684 (+2)
Copy link
Labels
bugRelated to a bug, vulnerability, unexpected error with an existing featureRelated to a bug, vulnerability, unexpected error with an existing featureexternallangchain`langchain` package issues & PRs`langchain` package issues & PRs
Description
Checked other resources
- This is a bug, not a usage question.
- I added a clear and descriptive title that summarizes this issue.
- I used the GitHub search to find a similar question and didn't find it.
- I am sure that this is a bug in LangChain rather than my code.
- The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).
- This is not related to the langchain-community package.
- I posted a self-contained, minimal, reproducible example. A maintainer can copy it and run it AS IS.
Package (Required)
- langchain
- langchain-openai
- langchain-anthropic
- langchain-classic
- langchain-core
- langchain-model-profiles
- langchain-tests
- langchain-text-splitters
- langchain-chroma
- langchain-deepseek
- langchain-exa
- langchain-fireworks
- langchain-groq
- langchain-huggingface
- langchain-mistralai
- langchain-nomic
- langchain-ollama
- langchain-openrouter
- langchain-perplexity
- langchain-qdrant
- langchain-xai
- Other / not sure / general
Related Issues / PRs
No response
Reproduction Steps / Example Code (Python)
from typing import Annotated
from langchain_core.tools import tool
from langchain.agents import create_agent
from typing_extensions import NotRequired
from langgraph.prebuilt import InjectedState
from langchain.agents import AgentState
class CustomAgentState(AgentState):
city: NotRequired[str]
@tool
def get_weather(city: Annotated[str, InjectedState("city")]) -> str:
"""Get weather for a given city."""
return f"It's always sunny in {city}!"
def build_graph():
"""Build and compile the agent graph."""
return create_agent(
model="claude-sonnet-4-6",
tools=[get_weather],
system_prompt="You are a helpful assistant",
state_schema=CustomAgentState,
)Error Message and Stack Trace (if applicable)
File ".../langgraph/prebuilt/tool_node.py", line 1358, in _inject_tool_args
state[state_field] if state_field else state
~~~~~^^^^^^^^^^^^^
KeyError: 'city'Description
Description
When using InjectedState(<field>) on a tool parameter, and the referenced field is declared as NotRequired in the custom state schema, the ToolNode crashes with an unhandled KeyError if that field was never populated in the state.
We noticed this behaviour after upgrading to langchain >= 1.0.0. The same behaviour could not be reproduced with earlier versions.
System Info
System Information
------------------
> OS: Darwin
> OS Version: Darwin Kernel Version 23.5.0: Wed May 1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000
> Python Version: 3.13.2 (main, Feb 4 2025, 14:51:09) [Clang 16.0.0 (clang-1600.0.26.6)]
Package Information
-------------------
> langchain_core: 1.2.17
> langchain: 1.2.10
> langsmith: 0.7.13
> langchain_anthropic: 1.3.4
> langchain_openai: 1.1.10
> langgraph_sdk: 0.3.9
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugRelated to a bug, vulnerability, unexpected error with an existing featureRelated to a bug, vulnerability, unexpected error with an existing featureexternallangchain`langchain` package issues & PRs`langchain` package issues & PRs