Si solo usas Claude Code desde la ventana de chat, estás aprovechando la mitad. Al integrarlo en una canalización del terminal, funciona como herramientas Unix como grep o jq.
La clave es la opción -p (o --print). Procesa un único prompt sin interfaz interactiva, imprime solo el resultado y termina.
claude -p "auth Explica brevemente qué hace este módulo"
Si Claude Code, parte 13 trataba lo que ocurre dentro de una sesión, esta vez veremos cómo usarlo fuera de ella.
Introducir datos por tubería y recibirlos en un archivo
Con Documentación oficial, el modo -p lee la entrada estándar. Introduce los datos por tubería y redirige el resultado, igual que con cualquier otra herramienta CLI.
cat build-error.txt | claude -p 'Explica de forma concisa la causa raíz de este error de compilación' > output.txt
Según Documentación oficial, una ejecución correcta termina con el código 0 y una fallida con un código distinto de 0, lo que permite crear ramas en los scripts. La entrada por tubería admite hasta 10 MB; para datos mayores, indica la ruta del archivo en el prompt.
Al añadirlo a los scripts de package.json puedes crear un linter específico del proyecto. Por ejemplo, introduces un diff por tubería y haces que informe solo de los errores tipográficos.
Recibir JSON para que lo consuma un programa
Al añadir --output-format json, el resultado se devuelve estructurado junto con metadatos como el ID de sesión y el coste.
claude -p "Resume este proyecto" --output-format json | jq -r '.result'
Si necesitas una salida conforme a un esquema concreto, añade --json-schema a --output-format json. La respuesta llega con una estructura validada en el campo structured_output.
Para transmitir en tiempo real a nivel de token, usa la combinación --output-format stream-json --verbose --include-partial-messages.
Los permisos deben abrirse de antemano
En el modo -p no hay nadie que pulse el botón de aprobación. Debes permitir previamente las herramientas necesarias.
claude -p "Ejecuta las pruebas y corrige los fallos" --allowedTools "Bash,Read,Edit"
--allowedTools usa directamente la sintaxis de las reglas de permisos. Puedes restringirla como en Bash(git diff *). El espacio antes del asterisco es importante. Sin él, la coincidencia llega hasta git diff-index.
Al proporcionar --permission-mode acceptEdits se aprueban automáticamente la escritura de archivos y comandos habituales del sistema de archivos como mkdir y mv. Los demás comandos de shell y solicitudes de red siguen requiriendo --allowedTools.
Continuar la conversación
Para tareas que no terminan en una sola llamada, puedes continuar la sesión.
claude -p "Revisa los problemas de rendimiento de este código"
claude -p "Ahora DB concéntrate en la consulta" --continue
Si mantienes varias conversaciones en paralelo, guarda el session_id de la salida JSON y usa --resume para seleccionar y continuar una conversación concreta.
En CI, –bare es la opción estándar
Para scripts y CI, conviene usar también --bare. Omite la carga automática de hooks, skills, plugins, MCP y CLAUDE.md, acelera el inicio y produce el mismo resultado en cualquier máquina.
También hay una razón de seguridad. Una sesión -p no puede mostrar la ventana de confianza del espacio de trabajo, así que sin --bare ejecutará incluso los hooks y servidores MCP de un repositorio desconocido. La documentación oficial recomienda explícitamente --bare para las llamadas desde scripts. También indica que -p será el valor predeterminado en el futuro.
En --bare, recuerda que debes usar la variable de entorno ANTHROPIC_API_KEY en lugar del inicio de sesión mediante suscripción.
Resumen
claude -p convierte Claude Code en una herramienta Unix. Introduce datos por tubería, recibe JSON y crea ramas según el código de salida.
Abre los permisos de antemano con --allowedTools y ejecútalo de forma determinista y segura en CI con --bare.
En la próxima entrega volveremos a la interfaz interactiva y repasaremos el modo shell !, además de entradas especiales y atajos como Ctrl+O.
Fuentes y criterios de verificación
- Documentación oficial de Claude Code — Run Claude Code programmatically (Anthropic, comprobado el 2026-08-14)
Seguir leyendo
Serie de Claude Code
- Parte anterior: [Claude Code #2] /plan, modo de planificación: acordar el diseño antes de modificar
- Parte anterior: [Claude Code #1] /init: empezar con la generación automática de CLAUDE.md

![Imagen de portada de [Claude Code #14] claude -p sin interfaz: integrar la IA en tuberías](/assets/images/posts/17e2516d-ee89-4bf8-a9c3-106a60196e91/claude-code-headless-pipeline.jpg)