Si acabas de actualizar y tu build rompió con ModuleNotFoundError: No module named 'claude_code_sdk' o un error de TypeScript que dice que @anthropic-ai/claude-code no exporta query, no estás haciendo nada mal. El paquete se mudó.
Lo confuso: npm install @anthropic-ai/claude-code sigue funcionando. Solo que ahora instala otra cosa. El nombre que recuerdas apunta a la herramienta CLI; el SDK hizo las maletas y se fue.
En junio de 2026 Anthropic renombró el Claude Code SDK a Claude Agent SDK. El paquete de TypeScript pasó a ser @anthropic-ai/claude-agent-sdk y el de Python, claude-agent-sdk. Los nombres viejos no devolvieron todos un 404 limpio, que es justo por lo que los errores confunden. Esto es un arreglo concreto, no una reescritura.
EL ARREGLO EN 30 SEGUNDOS
Antes → después
El rename toca el nombre del paquete, la ruta de import y (en Python) el nombre de una clase. Mapea tu línea vieja a la nueva y la mayor parte de tu código sigue funcionando.
| Qué | Viejo | Nuevo |
|---|---|---|
| Paquete TS/JS | @anthropic-ai/claude-code | @anthropic-ai/claude-agent-sdk |
| Import TS/JS | import { query, tool } from "@anthropic-ai/claude-code" | import { query, tool } from "@anthropic-ai/claude-agent-sdk" |
| Paquete Python | claude-code-sdk | claude-agent-sdk |
| Módulo de import Python | claude_code_sdk | claude_agent_sdk |
| Clase de opciones Python | ClaudeCodeOptions | ClaudeAgentOptions |
| System prompt por defecto | Preset de Claude Code activo por defecto | Off; activarlo con un preset |
Versiones actuales al escribir: @anthropic-ai/claude-agent-sdk está en 0.3.x, claude-agent-sdk en PyPI en 0.2.x. Los paquetes viejos congelados están en claude-code-sdk 0.0.25 (Python) y @anthropic-ai/claude-code es ahora el CLI en 2.1.x.
POR QUÉ ROMPIÓ TU IMPORT
La colisión de nombres CLI-vs-SDK
El SDK se mudó de @anthropic-ai/claude-code, pero ese nombre de paquete se quedó vivo como la herramienta CLI, así que la instalación funciona y la import falla. Ese desajuste es la mayor fuente de confusión de esta migración, así que vale la pena ser preciso sobre quién es dueño de cada nombre ahora.
| Paquete | Qué es ahora | Major actual |
|---|---|---|
| @anthropic-ai/claude-code | La herramienta CLI de Claude Code | 2.1.x |
| @anthropic-ai/claude-agent-sdk | El SDK programático | 0.3.x |
| claude-code-sdk (PyPI) | Congelado, último release | 0.0.25 |
| claude-agent-sdk (PyPI) | El SDK activo | 0.2.x |
Así que npm install @anthropic-ai/claude-code no falla. Instala el CLI. Después tu import { query } from "@anthropic-ai/claude-code" falla porque ese paquete ya no exporta símbolos del SDK. El mensaje de error apunta a la import, pero el problema real es el paquete que instalaste.
El rename refleja alcance. El SDK arrancó como un helper de código y creció hasta un framework general para construir agentes — bots de soporte, agentes de revisión, asistentes de finanzas — así que "Agent SDK" lo describe mejor que "Code SDK".
MENSAJE DE ERROR → ARREGLO
Encuentra tu error exacto
Cada mensaje de abajo mapea a una causa raíz: estás apuntando a un nombre viejo. Encuentra tu mensaje exacto, aplica el arreglo.
| Error que ves | Lenguaje | Causa raíz | Arreglo |
|---|---|---|---|
| ModuleNotFoundError: No module named 'claude_code_sdk' | Python | Importando el nombre viejo del módulo | pip install claude-agent-sdk, import claude_agent_sdk |
| ImportError: cannot import name 'ClaudeCodeOptions' | Python | La clase fue renombrada | Usa ClaudeAgentOptions de claude_agent_sdk |
| Module '"@anthropic-ai/claude-code"' has no exported member 'query' | TS | Instalaste el paquete CLI, no el SDK | Instala @anthropic-ai/claude-agent-sdk, actualiza la import |
| Cannot find module '@anthropic-ai/claude-agent-sdk' | TS | El paquete nuevo aún no está instalado | npm install @anthropic-ai/claude-agent-sdk |
| ModuleNotFoundError: No module named 'claude_agent_sdk' | Python | Instalado, pero Python o venv equivocados | Usa Python 3.10+, instala en el venv activo |
| El agente ignora el comportamiento de Claude Code tras actualizar | Ambos | System prompt por defecto eliminado en v0.1.0 | Activa el preset claude_code |
La mayoría colapsan al mismo movimiento: apuntar la instalación y la import al nuevo nombre de paquete. Los últimos dos no son problemas de rename de import — uno es un desajuste de intérprete, el otro un default de comportamiento — y son los que sobreviven después de que el build está verde.
ARREGLO PARA TYPESCRIPT / JAVASCRIPT
Desinstalar, reinstalar, reescribir la import
Desinstala el paquete viejo, instala el nuevo y reescribe la cadena de import. Los nombres de símbolos (query, tool, createSdkMcpServer) no cambiaron, así que la import es la única edición en la mayoría de los archivos.
npm uninstall @anthropic-ai/claude-code npm install @anthropic-ai/claude-agent-sdk
Actualiza cada import
// Antes
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-code";// Después
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";Si fijaste la dependencia, actualiza también la clave
{
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.3.0"
}
}Un gotcha que vale un grep
Si también usas el CLI en scripts (el comando claude), mantén @anthropic-ai/claude-code instalado para eso, pero nunca importes símbolos del SDK desde él. Mantén el CLI y el SDK como dos dependencias separadas con dos trabajos separados. Dejar la entrada vieja es como terminas con ambos paquetes instalados y un editor que resuelve query del equivocado.
ARREGLO PARA PYTHON
Desinstalar, reinstalar, renombrar la clase
Desinstala claude-code-sdk, instala claude-agent-sdk, luego cambia el módulo de import y el nombre de la clase de opciones. Los argumentos del constructor son idénticos, así que model, permission_mode y similares pasan sin cambios.
pip uninstall claude-code-sdk pip install claude-agent-sdk
Reescribe la import y la clase
# Antes from claude_code_sdk import query, ClaudeCodeOptions options = ClaudeCodeOptions(model="claude-opus-4-7", permission_mode="acceptEdits")
# Después from claude_agent_sdk import query, ClaudeAgentOptions options = ClaudeAgentOptions(model="claude-opus-4-7", permission_mode="acceptEdits")
El segundo fallo escondido detrás del primero
claude-agent-sdk requiere Python 3.10 o más nuevo. Si creas un venv con 3.9, pip se niega a instalar o no instala nada, y obtienes ModuleNotFoundError: No module named 'claude_agent_sdk' aunque lo "instalaste". Comprueba el intérprete bajo el que la import corre realmente:
python -c "import sys; print(sys.version)" python -c "import claude_agent_sdk; print(claude_agent_sdk.__file__)"
Si el primero imprime 3.9.x, reconstruye el venv con 3.10+. Si el segundo lanza pero pip show claude-agent-sdk lo lista, instalaste en un entorno distinto al que corre tu script. Es la causa más común de los reportes de "instalado pero no encontrado" en el issue tracker del SDK.
EL BREAKING CHANGE QUE NADIE LEE
El system prompt por defecto desapareció
El system prompt por defecto se fue en v0.1.0 y posteriores, así que tu agente se comporta distinto incluso después de que las imports compilan. Es el único cambio que arregla tu build pero altera el comportamiento en silencio, así que muerde a la gente una semana después de que la migración parece lista.
Las versiones viejas del SDK inyectaban automáticamente el system prompt enfocado en CLI de Claude Code. Desde v0.1.0 el SDK trae un default mínimo. Para restaurar el comportamiento viejo, activa el preset:
import { query } from "@anthropic-ai/claude-agent-sdk";
// Restaura el comportamiento viejo de Claude Code:
const result = query({
prompt: "Hello",
options: {
systemPrompt: { type: "preset", preset: "claude_code" }
}
});from claude_agent_sdk import query, ClaudeAgentOptions
# Restaura el comportamiento viejo de Claude Code:
async for message in query(
prompt="Hello",
options=ClaudeAgentOptions(
system_prompt={"type": "preset", "preset": "claude_code"}
),
):
print(message)O pasa una cadena plana (systemPrompt: "You are a helpful coding assistant" en TS, system_prompt="..." en Python) para definir la tuya. Para agentes desplegados este es el mejor default, ya que normalmente no quieres instrucciones con sabor a CLI filtrándose en un bot de soporte.
Si tu agente depende de definiciones de tools, el cambio de prompt puede alterar cómo se seleccionan las tools.
Un matiz más: settingSources
settingSources brevemente fue por defecto a "cargar nada" en v0.1.0 y luego se revirtió. Omitirlo ahora carga los settings de usuario, proyecto y filesystem local, igualando el CLI. Pasa settingSources: [] (TS) o setting_sources=[] (Python) para una ejecución aislada, lo que importa en CI y deploys multi-tenant. El SDK de Python 0.1.59 y anteriores trataban una lista vacía como omitir la opción, así que actualiza antes de depender de ello.
CUÁNDO ESTE ARREGLO NO AYUDA
Y qué hacer en su lugar
Aplica el arreglo del rename cuando tu error sea un módulo faltante, un export faltante o una clase renombrada. Salta a otro arreglo cuando el síntoma sea uno de estos.
Aún estás en Python 3.9 y no puedes actualizar
El rename no importa; el SDK no se instalará. O actualizas el intérprete o fijas el viejo claude-code-sdk 0.0.25 y aceptas que no recibe arreglos.
Errores de auth o de red (401, ECONNRESET, timeouts)
Son de runtime, no de import. El nombre del paquete es correcto; revisa credenciales, base URL y reintentos.
Picos de coste tras migrar
El rename es gratis; tu uso de tokens no. Audita el prompt caching y el manejo de contexto en vez de releer el rename.
Regla de corte. Si python -c "import claude_agent_sdk" funciona y tu import de TS resuelve en el editor, la migración está lista. Todo lo que venga después es un problema normal de runtime, no un artefacto del rename.
CUANDO EL SDK ES LA CAPA EQUIVOCADA
Correr el mismo bucle de agente en varios modelos
El Claude Agent SDK es la herramienta correcta cuando quieres el harness nativo de Anthropic. Cuando quieres hacer A/B entre proveedores sin reescribir el código del cliente, el SDK es la capa equivocada — un gateway compatible con OpenAI es la correcta.
Un gateway compatible con OpenAI expone una base URL y una key para muchos modelos, así que puedes correr el mismo bucle de tool-use contra Claude, GPT, Gemini o el modelo que elijas, y cambiar de modelo con un solo cambio de cadena en vez de re-plumear SDKs:
from openai import OpenAI
# apunta a cualquier gateway compatible con OpenAI que elijas
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://your-gateway.example/v1")
resp = client.chat.completions.create(
model="anthropic/claude-opus-4.8", # cambia esta cadena para cambiar de modelo
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)Esto no reemplaza al Agent SDK — se senta a su lado. Usa el harness nativo cuando quieres las features de agente integradas de Anthropic, soporte MCP y el preset claude_code. Usa un gateway cuando la portabilidad entre proveedores es el objetivo. Los dos no compiten; responden a preguntas distintas, y tus controles de seguridad y config se mantengan sin importar por cuál enrutes.
ALTERNATIVAS Y HERRAMIENTAS RELACIONADAS
Si el Agent SDK no encaja
Las opciones honestas, en orden de cuándo es cada una la llamada correcta.
| Camino | Cómo funciona | Mejor cuando | Notas |
|---|---|---|---|
| Gateway compatible con OpenAI | Un base_url + una key, muchos IDs de modelo | Quieres portabilidad de proveedor | Cambia modelos con una edición de una cadena |
| Claude Agent SDK directo | @anthropic-ai/claude-agent-sdk / claude-agent-sdk | Quieres el harness nativo de Anthropic | Soporte MCP, preset claude_code |
| Claude Code CLI | @anthropic-ai/claude-code, v2.1.x | Trabajo de terminal interactivo o con scripts | Una herramienta, no una librería — no importes query de ella |
| Fijar el SDK congelado | claude-code-sdk 0.0.25, sin arreglos | Estás atascado en Python 3.9 | Acepta que no recibe fixes de seguridad ni bugs |
La mayoría de equipos debería aterrizar en la primera o la segunda. El paquete congelado es un parche temporal, no un destino — una dependencia que ya no recibe arreglos es un pasivo desde el momento en que está en un camino de producción.
LO QUE DE VERDAD ENSEÑA
Un rename que no hace 404 en ningún lado es el peor tipo de rename
El arreglo de arriba es una línea. La lección es que el nombre viejo aún instala algo, y eso es un fallo de diseño que puedes diseñar alrededor.
Puedes leer este break de dos formas. La estrecha: actualiza el nombre del paquete, actualiza la import, sigue. La útil: una dependencia cuyo nombre viejo aún resuelve a una instalación que funciona — solo que a la cosa equivocada — es una clase de fallo que te costará una tarde entera la primera vez que la pegues a ciegas.
Vemos esto en casi todo stack de IA que auditamos: un equipo fija un paquete por nombre, el vendor lo divide o renombra, y la instalación sigue funcionando contra un nombre que ya no significa lo que ellos creen. El rename de Claude Code → Agent SDK es una instancia limpia y documentada. El próximo puede que no traiga guía de migración.
Fija el trabajo, no el nombre
Tu manifiesto de dependencias debería codificar para qué es cada paquete — CLI vs SDK, harness vs gateway — así un rename que mantiene vivo el nombre viejo no puede instalar silenciosamente la cosa equivocada en tu build.
Trata una instalación verde como señal, no como prueba
Una instalación que funciona contra un nombre que cambió de significado es peor que un 404 limpio. Verifica que las imports resuelven y que el comportamiento coincide tras cualquier rename, no solo que pip o npm salieron en cero.
Vigila los defaults de comportamiento, no solo la API
El break silencioso aquí no fue la import — fue el system prompt por defecto eliminado. El build se puso verde y el agente empezó a comportarse distinto. Los defaults tienen fecha de caducidad; bloquea los que dependes.
Cuando el nombre viejo aún instala algo, el rename no está hecho hasta que tu comportamiento lo está — no tu build.
FAQ
Preguntas que recibimos sobre esto
¿claude-code-sdk está deprecado?+
Sí. El claude-code-sdk de Python (congelado en 0.0.25) y el SDK de TypeScript que vivía en @anthropic-ai/claude-code ya no son el SDK. Usa claude-agent-sdk y @anthropic-ai/claude-agent-sdk.
¿Qué reemplazó a ClaudeCodeOptions?+
ClaudeAgentOptions, importado de claude_agent_sdk. Mismos argumentos de constructor, nuevo nombre.
¿Por qué npm install @anthropic-ai/claude-code funciona pero la import falla?+
Porque ese paquete es ahora la herramienta CLI (v2.1.x), no el SDK. Los símbolos del SDK se mudaron a @anthropic-ai/claude-agent-sdk. La instalación funciona contra el nombre viejo; solo que ahora instala otra cosa.
¿Cómo arreglo ModuleNotFoundError: No module named 'claude_code_sdk'?+
pip uninstall claude-code-sdk, pip install claude-agent-sdk, luego importa de claude_agent_sdk. Confirma que estás en Python 3.10+, ya que el paquete nuevo lo requiere.
¿Cambió la API o solo el nombre del paquete?+
Sobre todo el nombre. El único break de comportamiento es que v0.1.0+ ya no carga el system prompt de Claude Code por defecto; actívalo con el preset claude_code o pasa tu propio system_prompt.
¿Necesito cambiar mis IDs de modelo tras migrar?+
No. Las cadenas de modelo no se ven afectadas por el rename.
¿Por qué mi agente se comporta distinto tras actualizar a v0.1.0+?+
Se eliminó el system prompt por defecto. Pasa el preset claude_code para restaurar el comportamiento previo, o define tu propia cadena system_prompt. El build compila bien — lo que cambió fue el comportamiento.
¿@anthropic-ai/claude-code es lo mismo que @anthropic-ai/claude-agent-sdk?+
No, dos paquetes distintos. Uno es el CLI, el otro el SDK. Mantén ambos instalados si usas el CLI en scripts, pero solo importa símbolos del SDK desde el paquete agent-sdk.
Sobre FACTA
FACTA ayuda a startups y equipos en fase de crecimiento a convertir IA en sistemas de producción que siguen corriendo — no demos que impresionan una vez.
Diseñamos la arquitectura alrededor de las partes que de verdad se rompen bajo uso real: manifiestos de dependencias que sobreviven renames, credenciales que controlas, failover, controles de coste, observabilidad. La infraestructura aburrida que mantiene vivo a un sistema después del lanzamiento.
Liderados por Matías Baglieri y Carolina Fogliato, nos enfocamos en una cosa:
Liderazgo en IA que construye. No solo asesora.
Deja de apagar incendios de renames de SDK. Sé dueño de la capa de dependencias.
Cuando un rename de vendor mantiene vivo el nombre viejo, una instalación verde puede instalar silenciosamente la cosa equivocada — y el break silencioso está en los defaults de comportamiento, no en las imports. FACTA diseña la capa de dependencias, config y failover que mantiene tu stack de IA confiable a través de renames, deprecaciones y breaking changes para los que no te dieron guía de migración.
Explorar Automatización con IA