langchain-claude-code
LangChain chat model wrapper for the Claude Code Agent SDK. Use Claude Code as a drop-in LangChain BaseChatModel with full tool support, streaming, and LangGraph compatibility.
Prerequisites
Claude Code CLI (required):
npm install -g @anthropic-ai/claude-code
Installation
pip install langchain-claude-code
With example dependencies:
pip install langchain-claude-code[examples]
Authentication
Option 1: API Key (for Anthropic API users)
from langchain_claude_code import ClaudeCodeChatModel
model = ClaudeCodeChatModel(api_key="sk-ant-...")
Or set the environment variable:
export ANTHROPIC_API_KEY="sk-ant-..."
Option 2: OAuth Token (for Claude Max subscribers)
from langchain_claude_code import ClaudeCodeChatModel
model = ClaudeCodeChatModel(oauth_token="...")
Or set the environment variable:
export CLAUDE_CODE_OAUTH_TOKEN="..."
Quick Start
Basic Usage
import asyncio
from langchain_claude_code import ClaudeCodeChatModel
from langchain_core.messages import HumanMessage
async def main():
model = ClaudeCodeChatModel(model="sonnet")
response = await model.ainvoke([HumanMessage(content="What is 2 + 2?")])
print(response.content)
asyncio.run(main())
With Tool Binding
from langchain_claude_code import ClaudeCodeChatModel
from langchain_community.tools.ddg_search.tool import DuckDuckGoSearchTool
model = ClaudeCodeChatModel(model="haiku")
model = model.bind_tools([DuckDuckGoSearchTool()])
response = await model.ainvoke([
HumanMessage(content="Search for the latest news about AI")
])
Using Claude Code's Built-in Tools
from langchain_claude_code import ClaudeCodeChatModel, ClaudeTool
model = ClaudeCodeChatModel(
model="sonnet",
allowed_tools=[
ClaudeTool.WEB_SEARCH,
ClaudeTool.WEB_FETCH,
ClaudeTool.BASH,
ClaudeTool.READ,
ClaudeTool.WRITE,
],
)
Streaming
async for chunk in model.astream([HumanMessage(content="Write a poem")]):
print(chunk.content, end="", flush=True)
Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
model |
str |
"opus" |
Model to use: opus, sonnet, haiku |
permission_mode |
str |
"default" |
Permission mode: default, acceptEdits, plan, bypassPermissions |
allowed_tools |
list |
[] |
List of allowed Claude Code tools |
disallowed_tools |
list |
[] |
List of disallowed tools |
system_prompt |
str |
None |
Custom system prompt |
max_turns |
int |
None |
Maximum conversation turns |
max_budget_usd |
float |
None |
Maximum budget in USD |
cwd |
str |
None |
Working directory for file operations |
api_key |
str |
None |
Anthropic API key |
oauth_token |
str |
None |
Claude Code OAuth token |
Permission Modes
| Mode | Description |
|---|---|
default |
Prompts for confirmation on potentially dangerous operations |
acceptEdits |
Automatically accepts file edits without confirmation |
plan |
Planning mode - generates plans without executing |
bypassPermissions |
Bypasses all permission checks (use with caution) |
Security Note: When using
acceptEditsorbypassPermissions, Claude Code will modify your filesystem without confirmation. Use these modes only in sandboxed environments or when you trust the input.
Available Tools
from langchain_claude_code import ClaudeTool
# File operations
ClaudeTool.READ
ClaudeTool.WRITE
ClaudeTool.EDIT
ClaudeTool.GLOB
ClaudeTool.GREP
# Shell
ClaudeTool.BASH
ClaudeTool.BASH_OUTPUT
# Web
ClaudeTool.WEB_SEARCH
ClaudeTool.WEB_FETCH
# Other
ClaudeTool.TASK
ClaudeTool.TODO_WRITE
Examples
See the examples/ directory for complete examples:
bind_tools_example.py- Using LangChain tools with Claude Codedeepagents_example.py- Integration with DeepAgents/LangGraph
License
MIT License - see LICENSE for details.
Release files for langchain-claude-code-mimir 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langchain_claude_code_mimir-0.1.2.tar.gz | 193.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langchain_claude_code_mimir-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 208.5 kB
Release files / langchain_claude_code_mimir-0.1.2.tar.gz
| Download URL | langchain_claude_code_mimir-0.1.2.tar.gz |
|---|---|
| Size | 193.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
99c11e0b34c852c4b93f5e75f69beae2ca296f28277f5532d12b54651ad6886e
|
|
BLAKE2b-256 checksum How to use checksums |
8a65db66e7baa08aacefa2a51f3339cf2d0c99718e8a8a94845458345f0d56c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 2, 2026.
Transparency logRelease files / langchain_claude_code_mimir-0.1.2-py3-none-any.whl
| Download URL | langchain_claude_code_mimir-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
78757df574b2efe7cd6f4deb2984f9f40d0817f8c70c68ac83955a770c645d0e
|
|
BLAKE2b-256 checksum How to use checksums |
68a831f84fdf856dffae16c77739663cb69c24ad616a94f523d47fa8a321dd42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 2, 2026.
Transparency log