What problem does it solve? Building production LangChain agents often requires pausing execution for human approval of dangerous tool calls, intercepting tool execution for retries or logging, and resuming runs after human decisions. This Skill provides the exact middleware patterns, hook signatures, and resume syntax needed to implement these workflows correctly in Python and TypeScript. ## Core Features & Use Cases - Human-in-the-Loop Approval: Configure HumanInTheLoopMiddleware with per-tool policies and allowed decisions (approve, edit, reject), then resume execution with Command objects. - Custom Middleware Hooks: Use wrap_tool_call, wrap_model_call, before_model, after_model, before_agent, and after_agent hooks for retry logic, guardrails, and logging. - Common Pitfall Fixes: Correct patterns for missing checkpointers, missing thread_id, and wrong resume syntax. - Use Case: An agent that sends emails pauses before each send_email call; a human reviews, edits the recipient address, and approves, after which the agent resumes with the corrected arguments. ## Quick Start Add human approval to my LangChain agent so it pauses before calling the send_email tool and resumes after I approve.