langchain-core breaking changes
Every breaking API change we have recorded in langchain-core on PyPI: 1,149 breaking changes in 18 versions. Below are its newest 6 versions, removals and renames first, each with its source.
Newest change May 5, 2026

On this page
1.3.3
- Signature changed
langchain_core.load.load.load
Was def load(obj: Any, *, allowed_objects: Iterable[AllowedObject] | Literal['all', 'core'] = 'core', secrets_map: dict[str, str] | None = None, valid_namespaces: list[str] | None = None, secrets_from_env: bool = False... pypi.org - Signature changed
langchain_core.load.load.Reviver.__init__
Was def __init__(self, allowed_objects: Iterable[AllowedObject] | Literal['all', 'core'] = 'core', secrets_map: dict[str, str] | None = None, valid_namespaces: list[str] | None = None, secrets_from_env: bool = False... pypi.org - Signature changed
langchain_core.load.loads
Was def loads(text: str, *, allowed_objects: Iterable[AllowedObject] | Literal['all', 'core'] = 'core', secrets_map: dict[str, str] | None = None, valid_namespaces: list[str] | None = None, secrets_from_env: bool = False... pypi.org - Signature changed
langchain_core.runnables.history.load
Was def load(obj: Any, *, allowed_objects: Iterable[AllowedObject] | Literal['all', 'core'] = 'core', secrets_map: dict[str, str] | None = None, valid_namespaces: list[str] | None = None, secrets_from_env: bool = False... pypi.org - Signature changed
langchain_core.tracers.log_stream.load
Was def load(obj: Any, *, allowed_objects: Iterable[AllowedObject] | Literal['all', 'core'] = 'core', secrets_map: dict[str, str] | None = None, valid_namespaces: list[str] | None = None, secrets_from_env: bool = False... pypi.org
1.3.0
- Signature changed
langchain_core.callbacks.CallbackManager.configure
Was @classmethod def configure(cls, inheritable_callbacks: Callbacks = None, local_callbacks: Callbacks = None, verbose: bool = False, inheritable_tags: list[str] | None = None, local_tags: list[str] | None = None, inheritable_metadata... pypi.org - Signature changed
langchain_core.tracers.BaseTracer.__init__
Was def __init__(self, *, _schema_format: Literal['original', 'streaming_events', 'original+chat'] = 'original', **kwargs: Any) -> None; now def __init__(self, *, _schema_format: Literal['original', 'streaming_events', 'original+chat'] =... pypi.org - Signature changed
langchain_core.tracers.BaseTracer.order_map
Was order_map: dict[UUID, tuple[UUID, str]]; now order_map. pypi.org - Signature changed
langchain_core.tracers.BaseTracer.run_map
Was run_map: dict[str, Run]; now run_map. pypi.org - Signature changed
langchain_core.tracers.LangChainTracer.__init__
Was def __init__(self, example_id: UUID | str | None = None, project_name: str | None = None, client: Client | None = None, tags: list[str] | None = None, **kwargs: Any) -> None; now def __init__(self, example_id: UUID | str | None = None... pypi.org
1.2.22
- Signature changed
langchain_core.prompts.load_prompt
Was def load_prompt(path: str | Path, encoding: str | None = None) -> BasePromptTemplate; now def load_prompt(path: str | Path, encoding: str | None = None, *, allow_dangerous_paths: bool = False) -> BasePromptTemplate. pypi.org - Signature changed
langchain_core.prompts.loading.load_prompt_from_config
Was def load_prompt_from_config(config: dict) -> BasePromptTemplate; now def load_prompt_from_config(config: dict, *, allow_dangerous_paths: bool = False) -> BasePromptTemplate. pypi.org - Signature changed
langchain_core.prompts.loading.type_to_loader_dict
Was type_to_loader_dict: dict[str, Callable[[dict], BasePromptTemplate]]; now type_to_loader_dict: dict[str, Callable[..., BasePromptTemplate]]. pypi.org
1.2.15
- Removed
langchain_core.callbacks.manager.ConsoleCallbackHandler
langchain_core.callbacks.manager.ConsoleCallbackHandler was removed in langchain-core 1.2.15 pypi.org - Removed
langchain_core.callbacks.manager.LangChainTracer
langchain_core.callbacks.manager.LangChainTracer was removed in langchain-core 1.2.15 pypi.org - Removed
langchain_core.callbacks.manager.tracing_v2_callback_var
langchain_core.callbacks.manager.tracing_v2_callback_var was removed in langchain-core 1.2.15 pypi.org - Removed
langchain_core.runnables.config.LangChainTracer
langchain_core.runnables.config.LangChainTracer was removed in langchain-core 1.2.15 pypi.org
1.2.10
- Signature changed
langchain_core.messages.utils.count_tokens_approximately
Was def count_tokens_approximately(messages: Iterable[MessageLikeRepresentation], *, chars_per_token: float = 4.0, extra_tokens_per_message: float = 3.0, count_name: bool = True, tokens_per_image: int = 85, use_usage_metadata_scaling: bool... pypi.org
1.2.9
- Signature changed
langchain_core.messages.utils.count_tokens_approximately
Was def count_tokens_approximately(messages: Iterable[MessageLikeRepresentation], *, chars_per_token: float = 4.0, extra_tokens_per_message: float = 3.0, count_name: bool = True, tokens_per_image: int = 85) -> int; now def... pypi.org
Check your code
These are the changes. To see which of them reach your code, scan a public repository, or have your coding agent call check_code with your manifest or lockfile over MCP. The API reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

Put your code on continuous management.
Scan a public repository now, or give your agent one line.
See how out of date your code is.
Tell your agent what changed since it was trained.
claude mcp add --transport http since https://api.since.dev/mcp