GitHub Repo
LangChain 1.4.2 preserves original tool proposals, fixes context inconsistencies in agent retries
The update applies human edits to tool execution requests and tells the model what actually ran. This can reduce unexpected retries after review, but provider interfaces and tool side effects still require individual validation.

LangChain released version 1.4.2 on September 18, fixing how conversation history is handled when humans review tool calls. When a user changes a tool name or its arguments, the agent now preserves the model’s original proposal and separately reports what actually ran, preventing subsequent reasoning from mistaking human edits for the model’s own decisions. The release is also available on PyPI. Both the [release notes](https://github.com/langchain-ai/langchain/releases/tag/langchain==1.4.2) and the [package page](https://pypi.org/project/langchain/1.4.2/) are available for verification.
The problem arose because previous versions directly rewrote `AIMessage.tool_calls`: the tool ran with the edited arguments, but the conversation history was also replaced. If the model’s original reasoning pointed toward a different action, the history it read on the next turn could contain contradictions. Maintainers noted that this could prompt the model to retry its original call rather than recognize that a human had intervened. [Fix details](https://github.com/langchain-ai/langchain/pull/40463)
The update applies edits to the `ToolCallRequest` at the execution layer and adds an intervention notice to the returned `ToolMessage`, specifying the actual tool name and arguments used. The engineering benefit is that both what the model proposed and what the human approved for execution remain in context, supporting subsequent reasoning and investigation. This also means applications that reconstruct execution records solely from the model’s original messages must revisit their assumptions: a proposal cannot be treated as a completed operation.
The existing human-in-the-loop mechanism still relies on interrupts and checkpoints to preserve state before receiving decisions to approve, edit, or reject a call. Production deployments require persistent checkpoints and must resume execution using the same thread ID. The official documentation also warns that substantial argument changes may still cause the model to replan or call tools multiple times, so this fix should not be treated as a guaranteed solution to every duplicate execution problem. [Human-in-the-loop documentation](https://docs.langchain.com/oss/python/langchain/human-in-the-loop)
Maintainers reported improvements in unexpected retries across multiple models but did not publish comprehensive success-rate benchmarks. Some provider interfaces already avoided writing edits back into their native content blocks, so the practical change for those interfaces is primarily the added notice. Teams adopting the update should replay the review workflow with their own tools, checking the original proposal, edited arguments, and resulting side effects, while watching whether the agent proposes the same operation again after resuming. If existing monitoring matches call contents against execution results, it should also correlate human intervention events to distinguish legitimate edits, tool failures, and retries initiated by the agent. [Implementation limitations](https://github.com/langchain-ai/langchain/pull/40463)