Claude puede analizar datos, crear visualizaciones, realizar cálculos complejos, ejecutar comandos del sistema, crear y editar archivos, y procesar archivos cargados directamente dentro de la conversación de la API. La herramienta de ejecución de código permite a Claude ejecutar comandos Bash y manipular archivos, incluyendo escribir código, en un entorno seguro y aislado.
La ejecución de código es gratuita cuando se usa con búsqueda web o recuperación web. Cuando web_search_20260209 (o posterior) o web_fetch_20260209 (o posterior) se incluye en tu solicitud, no hay cargos adicionales por las llamadas a la herramienta de ejecución de código más allá de los costos estándar de tokens de entrada y salida. Los cargos estándar de ejecución de código se aplican cuando estas herramientas no están incluidas.
La ejecución de código es una primitiva fundamental para construir agentes de alto rendimiento. Permite el filtrado dinámico en las herramientas de búsqueda web y recuperación web, lo que permite a Claude procesar resultados antes de que lleguen a la "context window" (ventana de contexto), mejorando la precisión mientras reduce el consumo de tokens.
Comunícate a través del formulario de comentarios para compartir tu opinión sobre esta función.
Esta función no es elegible para Zero Data Retention (ZDR). Los datos se conservan de acuerdo con la política de retención estándar de la función.
La herramienta de ejecución de código está disponible en los siguientes modelos:
| Modelo | Versiones de herramienta |
|---|---|
| Claude Fable 5 (claude-fable-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Mythos 5 (claude-mythos-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 5 (claude-sonnet-5) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.8 (claude-opus-4-8) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.7 (claude-opus-4-7) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.6 (claude-opus-4-6) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 4.6 (claude-sonnet-4-6) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Opus 4.5 (claude-opus-4-5-20251101) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Sonnet 4.5 (claude-sonnet-4-5-20250929) | code_execution_20250825, code_execution_20260120, code_execution_20260521 |
| Claude Haiku 4.5 (claude-haiku-4-5-20251001) | code_execution_20250825 |
| Claude Opus 4.1 (claude-opus-4-1-20250805) (obsoleto) | code_execution_20250825 |
code_execution_20250825 admite comandos Bash y operaciones de archivos, y está disponible en todos los modelos de la tabla. code_execution_20260120 añade persistencia de estado REPL y llamadas programáticas a herramientas desde dentro del sandbox, y está disponible únicamente en Claude Fable 5, Claude Mythos 5, Opus 4.5+ y Sonnet 4.5+. code_execution_20260521 es el mismo entorno de ejecución que _20260120 con el límite de tiempo de ejecución por celda divulgado en la descripción de la herramienta, para que Claude pueda planificar celdas de larga duración en consecuencia. Cada celda tiene un límite de tiempo real de 90 segundos; el código que lo excede devuelve un resultado detection_timeout. Si todavía estás usando la versión heredada code_execution_20250522 (solo Python), consulta Actualizar a la versión más reciente de la herramienta para migrar desde ella.
No se garantiza que las versiones anteriores de la herramienta sean retrocompatibles con modelos más nuevos. Usa siempre la versión de la herramienta que corresponda a tu versión del modelo.
La ejecución de código está disponible en:
La ejecución de código no está disponible actualmente en Amazon Bedrock ni en Google Cloud.
Para Claude Mythos Preview, la ejecución de código solo es compatible con la API de Claude y Microsoft Foundry. No está disponible para Mythos Preview en Amazon Bedrock, Google Cloud ni Claude Platform en AWS.
Aquí tienes un ejemplo simple que le pide a Claude que realice un cálculo:
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Calculate the mean and standard deviation of [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response)Cuando agregas la herramienta de ejecución de código a tu solicitud de API:
Claude ejecuta código cuando la solicitud se beneficia de la computación o el manejo de archivos:
Claude responde directamente sin ejecutar código para:
Si quieres que Claude ejecute código para una solicitud ambigua, pídelo explícitamente (por ejemplo, "ejecuta código para verificar esto").
Cuando proporcionas la ejecución de código junto con herramientas proporcionadas por el cliente que también ejecutan código (como una herramienta bash o un REPL personalizado), Claude está operando en un entorno de múltiples computadoras. La herramienta de ejecución de código se ejecuta en el contenedor aislado de Anthropic, mientras que tus herramientas proporcionadas por el cliente se ejecutan en un entorno separado que tú controlas. Claude a veces puede confundir estos entornos, intentando usar la herramienta incorrecta o asumiendo que el estado se comparte entre ellos.
Para evitar esto, agrega instrucciones a tu indicación del sistema que aclaren la distinción:
When multiple code execution environments are available, be aware that:
- Variables, files, and state do NOT persist between different execution environments
- Use the code_execution tool for general-purpose computation in Anthropic's sandboxed environment
- Use client-provided execution tools (e.g., bash) when you need access to the user's local system, files, or data
- If you need to pass results between environments, explicitly include outputs in subsequent tool calls rather than assuming shared stateEsto es especialmente importante cuando se combina la ejecución de código con búsqueda web o recuperación web, que habilitan la ejecución de código automáticamente. Si tu aplicación ya proporciona una herramienta de shell del lado del cliente, la ejecución de código automática crea un segundo entorno de ejecución que Claude necesita distinguir.
Para analizar tus propios archivos de datos (como CSV, Excel o imágenes), cárgalos a través de la Files API y haz referencia a ellos en tu solicitud:
Usar la Files API con la ejecución de código requiere el encabezado beta de la Files API: "anthropic-beta": "files-api-2025-04-14"
El entorno de Python puede procesar varios tipos de archivos cargados a través de la Files API, incluyendo:
container_uploadclient = anthropic.Anthropic()
# Sube un archivo
file_object = client.beta.files.upload(
file=open("data.csv", "rb"),
)
# Usa el file_id con la ejecución de código
response = client.beta.messages.create(
model="claude-opus-4-8",
betas=["files-api-2025-04-14"],
max_tokens=4096,
messages=[
{
"role": "user",
"content": [
{"type": "text", "text": "Analyze this CSV data"},
{"type": "container_upload", "file_id": file_object.id},
],
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response)Cuando Claude crea archivos durante la ejecución de código, puedes recuperar estos archivos usando la Files API:
# Inicializa el cliente
client = Anthropic()
# Solicita la ejecución de código que crea archivos
response = client.beta.messages.create(
model="claude-opus-4-8",
betas=["files-api-2025-04-14"],
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Create a matplotlib visualization and save it as output.png",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Extrae los IDs de archivo de la respuesta
def extract_file_ids(response):
file_ids = []
for item in response.content:
if item.type == "bash_code_execution_tool_result":
content_item = item.content
if content_item.type == "bash_code_execution_result":
# lista con tipo concreto: List[BashCodeExecutionOutputBlock]
for file in content_item.content:
file_ids.append(file.file_id)
return file_ids
# Descarga los archivos creados
for file_id in extract_file_ids(response):
file_metadata = client.beta.files.retrieve_metadata(file_id)
file_content = client.beta.files.download(file_id)
file_content.write_to_file(file_metadata.filename)
print(f"Downloaded: {file_metadata.filename}")La herramienta de ejecución de código no requiere parámetros adicionales:
{
"type": "code_execution_20250825",
"name": "code_execution"
}Cuando se proporciona esta herramienta, Claude obtiene automáticamente acceso a dos subherramientas:
bash_code_execution: Ejecutar comandos de shelltext_editor_code_execution: Ver, crear y editar archivos, incluyendo escribir códigoLa herramienta de ejecución de código puede devolver dos tipos de resultados según la operación:
{
"type": "server_tool_use",
"id": "srvtoolu_01B3C4D5E6F7G8H9I0J1K2L3",
"name": "bash_code_execution",
"input": {
"command": "ls -la | head -5"
}
},
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01B3C4D5E6F7G8H9I0J1K2L3",
"content": {
"type": "bash_code_execution_result",
"stdout": "total 24\ndrwxr-xr-x 2 user user 4096 Jan 1 12:00 .\ndrwxr-xr-x 3 user user 4096 Jan 1 11:00 ..\n-rw-r--r-- 1 user user 220 Jan 1 12:00 data.csv\n-rw-r--r-- 1 user user 180 Jan 1 12:00 config.json",
"stderr": "",
"return_code": 0
}
}Ver archivo:
{
"type": "server_tool_use",
"id": "srvtoolu_01C4D5E6F7G8H9I0J1K2L3M4",
"name": "text_editor_code_execution",
"input": {
"command": "view",
"path": "config.json"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01C4D5E6F7G8H9I0J1K2L3M4",
"content": {
"type": "text_editor_code_execution_result",
"file_type": "text",
"content": "{\n \"setting\": \"value\",\n \"debug\": true\n}",
"numLines": 4,
"startLine": 1,
"totalLines": 4
}
}Crear archivo:
{
"type": "server_tool_use",
"id": "srvtoolu_01D5E6F7G8H9I0J1K2L3M4N5",
"name": "text_editor_code_execution",
"input": {
"command": "create",
"path": "new_file.txt",
"file_text": "Hello, World!"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01D5E6F7G8H9I0J1K2L3M4N5",
"content": {
"type": "text_editor_code_execution_result",
"is_file_update": false
}
}Editar archivo (str_replace):
{
"type": "server_tool_use",
"id": "srvtoolu_01E6F7G8H9I0J1K2L3M4N5O6",
"name": "text_editor_code_execution",
"input": {
"command": "str_replace",
"path": "config.json",
"old_str": "\"debug\": true",
"new_str": "\"debug\": false"
}
},
{
"type": "text_editor_code_execution_tool_result",
"tool_use_id": "srvtoolu_01E6F7G8H9I0J1K2L3M4N5O6",
"content": {
"type": "text_editor_code_execution_result",
"oldStart": 3,
"oldLines": 1,
"newStart": 3,
"newLines": 1,
"lines": ["- \"debug\": true", "+ \"debug\": false"]
}
}Todos los resultados de ejecución incluyen:
stdout: Salida de la ejecución exitosastderr: Mensajes de error si la ejecución fallareturn_code: 0 para éxito, distinto de cero para falloCampos adicionales para operaciones de archivos:
file_type, content, numLines, startLine, totalLinesis_file_update (si el archivo ya existía)oldStart, oldLines, newStart, newLines, lines (formato diff)Cada tipo de herramienta puede devolver errores específicos:
Errores comunes (todas las herramientas):
{
"type": "bash_code_execution_tool_result",
"tool_use_id": "srvtoolu_01VfmxgZ46TiHbmXgy928hQR",
"content": {
"type": "bash_code_execution_tool_result_error",
"error_code": "unavailable"
}
}Códigos de error por tipo de herramienta:
| Herramienta | Código de error | Descripción |
|---|---|---|
| Todas las herramientas | unavailable | La herramienta no está disponible temporalmente |
| Todas las herramientas | execution_time_exceeded | La ejecución excedió el límite máximo de tiempo |
| Todas las herramientas | container_expired | El contenedor expiró y ya no está disponible |
| Todas las herramientas | invalid_tool_input | Se proporcionaron parámetros no válidos a la herramienta |
| Todas las herramientas | too_many_requests | Se excedió el límite de velocidad para el uso de la herramienta |
| bash | output_file_too_large | La salida del comando excedió el tamaño máximo |
| text_editor | file_not_found | El archivo no existe (para operaciones de ver/editar) |
| text_editor | string_not_found | No se encontró old_str en el archivo (para str_replace) |
pause_turnLa respuesta puede incluir un stop_reason pause_turn, que indica que la API pausó un turno de larga duración. Puedes
proporcionar la respuesta tal cual en una solicitud posterior para permitir que Claude continúe su turno, o modificar el contenido si
deseas interrumpir la conversación.
La herramienta de ejecución de código se ejecuta en un entorno seguro y contenedorizado diseñado específicamente para la ejecución de código, con un mayor enfoque en Python.
El entorno de Python aislado incluye estas bibliotecas de uso común:
Puedes reutilizar un contenedor existente en múltiples solicitudes de API proporcionando el ID del contenedor de una respuesta anterior. Esto te permite mantener los archivos creados entre solicitudes.
# Primera solicitud: Crea un archivo con un número aleatorio
response1 = client.messages.create(
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Write a file with a random number and save it to '/tmp/number.txt'",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
# Extrae el ID del contenedor de la primera respuesta
container_id = response1.container.id
# Segunda solicitud: Reutiliza el contenedor para leer el archivo
response2 = client.messages.create(
container=container_id, # Reuse the same container
model="claude-opus-4-8",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Read the number from '/tmp/number.txt' and calculate its square",
}
],
tools=[{"type": "code_execution_20250825", "name": "code_execution"}],
)
print(response2)Con el streaming habilitado, recibirás eventos de ejecución de código a medida que ocurren:
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "server_tool_use", "id": "srvtoolu_xyz789", "name": "code_execution"}}
// Code execution streamed
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "input_json_delta", "partial_json": "{\"code\":\"import pandas as pd\\ndf = pd.read_csv('data.csv')\\nprint(df.head())\"}"}}
// Pause while code executes
// Execution results streamed
event: content_block_start
data: {"type": "content_block_start", "index": 2, "content_block": {"type": "code_execution_tool_result", "tool_use_id": "srvtoolu_xyz789", "content": {"stdout": " A B C\n0 1 2 3\n1 4 5 6", "stderr": ""}}}Puedes incluir la herramienta de ejecución de código en la Messages Batches API. Las llamadas a la herramienta de ejecución de código a través de la Messages Batches API tienen el mismo precio que las de las solicitudes regulares de la Messages API.
La ejecución de código es gratuita cuando se usa con búsqueda web o recuperación web. Cuando web_search_20260209 (o posterior) o web_fetch_20260209 (o posterior) se incluye en tu solicitud de API, no hay cargos adicionales por las llamadas a la herramienta de ejecución de código más allá de los costos estándar de tokens de entrada y salida.
Cuando se usa sin estas herramientas, la ejecución de código se factura por tiempo de ejecución, que se registra de forma separada del uso de tokens:
El uso de la ejecución de código se registra en la respuesta:
{
"usage": {
"input_tokens": 105,
"output_tokens": 239,
"server_tool_use": {
"code_execution_requests": 1
}
}
}Al actualizar a code-execution-2025-08-25, obtienes acceso a capacidades de manipulación de archivos y Bash, incluyendo código en múltiples lenguajes. No hay diferencia de precio.
| Componente | Heredado | Actual |
|---|---|---|
| Encabezado beta | code-execution-2025-05-22 | code-execution-2025-08-25 |
| Tipo de herramienta | code_execution_20250522 | code_execution_20250825 |
| Capacidades | Solo Python | Comandos Bash, operaciones de archivos |
| Tipos de respuesta | code_execution_result | bash_code_execution_result, text_editor_code_execution_result |
Para actualizar, modifica el tipo de herramienta en tus solicitudes de API:
- "type": "code_execution_20250522"
+ "type": "code_execution_20250825"Revisa el manejo de respuestas (si procesas respuestas programáticamente):
Para ejecutar herramientas dentro del contenedor de ejecución de código, consulta Llamadas programáticas a herramientas.
La ejecución de código se ejecuta en contenedores sandbox del lado del servidor. Los datos del contenedor, incluidos los artefactos de ejecución, los archivos cargados y las salidas, se retienen hasta por 30 días. Esta retención se aplica a todos los datos procesados dentro del entorno del contenedor. Los archivos que la ejecución de código crea en la Files API (recuperables mediante client.beta.files.download()) persisten hasta que se eliminen explícitamente.
Para conocer la elegibilidad de ZDR en todas las funciones, consulta API y retención de datos.
La herramienta de ejecución de código permite a Claude usar Agent Skills. Las Skills son capacidades modulares que consisten en instrucciones, scripts y recursos que extienden la funcionalidad de Claude.
Obtén más información en Agent Skills y Uso de Agent Skills con la API.
Was this page helpful?