-p con su indicación y cualquier opción de CLI:
claude -p). Para los paquetes SDK de Python y TypeScript con salidas estructuradas, devoluciones de llamada de aprobación de herramientas y objetos de mensaje nativos, consulte la documentación completa del Agent SDK.
Uso básico
Agregue la bandera-p (o --print) a cualquier comando claude para ejecutarlo de forma no interactiva. Todas las opciones de CLI funcionan con -p, incluyendo:
--continuepara continuar conversaciones--allowedToolspara aprobar herramientas automáticamente--output-formatpara obtener salida estructurada
Comenzar más rápido con modo bare
Agregue--bare para reducir el tiempo de inicio omitiendo el descubrimiento automático de hooks, skills, plugins, servidores MCP, memoria automática y CLAUDE.md. Sin él, claude -p carga el mismo contexto que una sesión interactiva, incluyendo cualquier cosa configurada en el directorio de trabajo o ~/.claude.
El modo bare es útil para CI y scripts donde necesita el mismo resultado en cada máquina. Un hook en el ~/.claude de un compañero de equipo o un servidor MCP en el .mcp.json del proyecto no se ejecutarán, porque el modo bare nunca los lee. Solo las banderas que pasa explícitamente tienen efecto.
Este ejemplo ejecuta una tarea de resumen única en modo bare y aprueba previamente la herramienta Read para que la llamada se complete sin una solicitud de permiso:
El modo bare omite lecturas de OAuth y llavero. La autenticación de Anthropic debe provenir de
ANTHROPIC_API_KEY o un apiKeyHelper en el JSON pasado a --settings. Amazon Bedrock, Google Cloud’s Agent Platform y Microsoft Foundry utilizan sus credenciales de proveedor habituales.
--bare es el modo recomendado para llamadas con scripts y SDK, y se convertirá en el predeterminado para -p en una versión futura.Tareas en segundo plano al salir
Si Claude inicia una tarea Bash en segundo plano durante una ejecución declaude -p, por ejemplo un servidor de desarrollo o una compilación de vigilancia, esa tarea se termina aproximadamente cinco segundos después de que Claude haya devuelto su resultado final y stdin se haya cerrado. El período de gracia permite que una tarea que finaliza justo después del resultado aún entregue su salida. Antes de v2.1.163, un proceso en segundo plano que nunca se cerraba mantendría la invocación de claude -p abierta indefinidamente.
Los subagentes y flujos de trabajo en segundo plano están exentos del período de gracia de cinco segundos porque su resultado es parte de la salida final, por lo que claude -p espera a que se completen. A partir de v2.1.182, esa espera se limita a diez minutos de forma predeterminada para que un agente en segundo plano atascado no pueda mantener el proceso abierto indefinidamente. Ajuste el límite con CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS, o establézcalo en 0 para esperar sin límite.
Ejemplos
Estos ejemplos destacan patrones comunes de CLI. Para CI y otras llamadas con scripts, agregue--bare para que no recojan lo que esté configurado localmente.
Canalizar datos a través de Claude
El modo no interactivo lee stdin, por lo que puede canalizar datos y redirigir la respuesta como cualquier otra herramienta de línea de comandos. Este ejemplo canaliza un registro de compilación a Claude y escribe la explicación en un archivo:--output-format json, la carga útil de respuesta incluye total_cost_usd y un desglose de costos por modelo, por lo que los llamadores con scripts pueden rastrear el gasto por invocación sin consultar el panel de uso.
A partir de Claude Code v2.1.128, stdin canalizado está limitado a 10MB. Si excede el límite, Claude Code sale con un error claro y un estado distinto de cero. Para trabajar con entradas más grandes, escriba el contenido en un archivo y haga referencia a la ruta del archivo en su indicador en lugar de canalizarlo.
Agregar Claude a un script de compilación
Puede envolver una llamada no interactiva en un script para usar Claude como un linter o revisor específico del proyecto. Este scriptpackage.json canaliza el diff contra main a Claude y le pide que informe sobre errores tipográficos. Canalizar el diff significa que Claude no necesita permiso de Bash para leerlo, y las comillas dobles escapadas mantienen el script portátil a Windows:
Obtener salida estructurada
Utilice--output-format para controlar cómo se devuelven las respuestas:
text(predeterminado): salida de texto sin formatojson: JSON estructurado con resultado, ID de sesión y metadatosstream-json: JSON delimitado por saltos de línea para transmisión en tiempo real
result:
--output-format json con --json-schema y una definición de JSON Schema. La respuesta incluye metadatos sobre la solicitud (ID de sesión, uso, etc.) con la salida estructurada en el campo structured_output.
Este ejemplo extrae nombres de funciones y los devuelve como una matriz de cadenas:
claude sale con Error: --json-schema is not a valid JSON Schema seguido del diagnóstico del validador. Claude Code acepta esquemas que utilizan la palabra clave format, como "format": "email", pero trata format como una anotación y no la aplica. Antes de v2.1.205, Claude Code ignoraba silenciosamente un esquema inválido y devolvía texto no estructurado, y trataba cualquier esquema que contenía format como inválido.
Transmitir respuestas
Utilice--output-format stream-json con --verbose e --include-partial-messages para recibir tokens a medida que se generan. Cada línea es un objeto JSON que representa un evento:
result con el texto de respuesta final, el costo y los metadatos de la sesión. Antes de v2.1.208, canalizar una respuesta grande podría truncar la línea final y omitir el mensaje result.
El siguiente ejemplo utiliza jq para filtrar deltas de texto y mostrar solo el texto transmitido. La bandera -r genera cadenas sin formato (sin comillas) y -j se une sin saltos de línea para que los tokens se transmitan continuamente:
system/api_retry antes de reintentar. Puede usar esto para mostrar el progreso del reintento o implementar lógica de retroceso personalizada.
El evento
system/init informa metadatos de sesión incluyendo el modelo, herramientas, servidores MCP y plugins cargados. Es el primer evento en la transmisión a menos que eventos de inicio lo precedan:
- eventos
plugin_install, cuandoCLAUDE_CODE_SYNC_PLUGIN_INSTALLestá configurado. - eventos
hook_started,hook_progressyhook_response, mientras se ejecuta un hookSessionStartoSetupconfigurado. Estos se transmiten a medida que el hook los produce. Claude Code v2.1.169 a v2.1.203 los entregó en un lote después de que el hook se completó, aún antes desystem/init; v2.1.204 restauró la entrega en vivo.
capabilities opcional de cadenas que nombran los comportamientos del protocolo que esta versión de Claude Code implementa, como interrupt_receipt_v1. Verifíquelo para detectar características en lugar de comparar cadenas de versión, e ignore valores que no reconozca. El campo requiere Claude Code v2.1.205 o posterior y está ausente en versiones anteriores. Consulte SDKSystemMessage para la lista de capacidades.
Use los campos de plugin para fallar CI cuando un plugin no se cargó:
Cuando
CLAUDE_CODE_SYNC_PLUGIN_INSTALL está configurado, Claude Code emite eventos system/plugin_install mientras los plugins del marketplace se instalan antes del primer turno. Use estos para mostrar el progreso de instalación en su propia interfaz de usuario.
Para transmisión programática con devoluciones de llamada y objetos de mensaje, consulte Transmitir respuestas en tiempo real en la documentación del Agent SDK.
Aprobar herramientas automáticamente
Utilice--allowedTools para permitir que Claude use ciertas herramientas sin solicitar confirmación. Este ejemplo ejecuta un conjunto de pruebas y corrige fallos, permitiendo que Claude ejecute comandos Bash y lea/edite archivos sin pedir permiso:
dontAsk deniega cualquier cosa que no esté en sus reglas permissions.allow o el conjunto de comandos de solo lectura, que es útil para ejecuciones de CI bloqueadas. AskUserQuestion, herramientas de conector que su organización configuró para ask, y herramientas MCP marcadas requiresUserInteraction se deniegan incluso cuando una regla de permiso coincide.
acceptEdits permite que Claude escriba archivos sin solicitar y también aprueba automáticamente comandos comunes del sistema de archivos como mkdir, touch, mv y cp. Otros comandos de shell y solicitudes de red aún necesitan una entrada --allowedTools o una regla permissions.allow, de lo contrario la ejecución se aborta cuando se intenta uno:
Crear una confirmación
Este ejemplo revisa los cambios preparados y crea una confirmación con un mensaje apropiado:--allowedTools utiliza sintaxis de regla de permiso. El * final habilita la coincidencia de prefijo, por lo que Bash(git diff *) permite cualquier comando que comience con git diff. El espacio antes de * es importante: sin él, Bash(git diff*) también coincidiría con git diff-index.
Las skills invocadas por el usuario y los comandos personalizados funcionan en modo
-p: incluya /skill-name en la cadena de indicador y Claude Code lo expande antes de ejecutar. Los comandos integrados que solo se ejecutan en la interfaz de terminal, como /login, no están disponibles en modo -p. /model, /effort, /fast, /color y /rename aceptan el valor como argumento, por ejemplo /model sonnet, y /mcp sin argumento imprime un resumen de texto del estado del servidor; estas formas requieren Claude Code v2.1.205 o posterior y siguen las notas de disponibilidad de cada comando. Para cambiar una configuración desde una invocación -p, pase key=value a /config, por ejemplo /config thinking=false.Personalizar el indicador del sistema
Utilice--append-system-prompt para agregar instrucciones mientras mantiene el comportamiento predeterminado de Claude Code. Este ejemplo canaliza un diff de PR a Claude e le indica que revise las vulnerabilidades de seguridad:
--system-prompt para reemplazar completamente el indicador predeterminado.
Continuar conversaciones
Utilice--continue para continuar la conversación más reciente, o --resume con un ID de sesión para continuar una conversación específica. Este ejemplo ejecuta una revisión y luego envía indicaciones de seguimiento:
Próximos pasos
- Inicio rápido del Agent SDK: construya su primer agente con Python o TypeScript
- Referencia de CLI: todas las banderas y opciones de CLI
- GitHub Actions: utilice el Agent SDK en flujos de trabajo de GitHub
- GitLab CI/CD: utilice el Agent SDK en canalizaciones de GitLab