Headless-режим Claude Code: как запускать автономные задачи по коду из скриптов и CI
Headless-режим Claude Code: как запускать автономные задачи по коду из скриптов и CI Автор разбирает headless-режим Claude Code — способ запускать модель без интерактивного терминала. По его словам, команды часто обращаются с инструментом как с ассистентом под присмотром человека: открывают сессии в CI, вставляют промпты вручную или копируют код из переписки. Такой подход не выдерживает, когда нужны повторяемые, запланированные или параллельные запуски по множеству репозиториев. Ядро подхода — флаг -p: весь промпт передаётся аргументом командной строки, Claude обрабатывает его, выполняет операции с файлами и завершается с кодом успеха или ошибки. Никакого ожидания ввода: CI-пайплайны и ночные cron-задания не могут ждать человека. Примеры в статье — регенерация тестовых фикстур после изменения схемы и ночной рефакторинг устаревшего кода с логированием и ненулевым кодом выхода для cron. Отдельный сценарий GitHub Actions после падения тестов передаёт лог ошибок Claude и публикует анализ комментарием в pull request. Автор отмечает риск таймаутов: сканирование больших кодовых баз может превышать лимиты CI-раннеров, поэтому таймауты задают явно и считают их сбоем. Формат вывода выбирается под задачу: обычный текст удобен для людей, но ломает парсинг; --format возвращает предсказуемую структуру с текстом ответа, списком изменённых файлов и метаданными, что позволяет запускать действия только по затронутым файлам; стриминг выдаёт результаты частями и подходит для долгих задач, но требует более сложной обработки. По умолчанию Claude Code сохраняет сессии в.claude/sessions, а флаг --no-session-persistence полностью отключает это: каждый запуск стартует без контекста, и одинаковый промпт даёт одинаковый результат, если код не менялся. Автор советует stateless-режим для генерации кода в сборке, CI и параллельных задач, а сохранение сессий — для многошаговой интерактивной работы. Для нескольких агентов параллельно приводится TypeScript-шаблон: скрипт порождает независимые процессы claude по своим рабочим директориям, собирает результаты через Promise.allSettled и не блокирует соседей при отказе одного агента. Десять параллельных процессов почти линейно сокращают время выполнения, пока не упрёшься в лимиты API, при том же общем расходе токенов, поэтому для крупных объёмов задачи запускают батчами. Пример — рефакторинг аутентификации сразу по нескольким микросервисам. Оговорки важны: headless-режим жертвует обратной связью с человеком — промпт должен быть полностью описан заранее, включая обработку ошибок, валидацию и откат, иначе задачи с уточняющими вопросами дадут неполный результат. Отказы делят на повторяемые (лимиты запросов, таймауты, сетевые сбои) и терминальные (неверный промпт, нет прав); для первых показан шаблон с экспоненциальной задержкой и повторами, для вторых — немедленное оповещение. Также уточняется, что headless-запуск работает с правами вызвавшего процесса, что создаёт риски безопасности, а сам материал — технический разбор с примерами кода, написанный с помощью ИИ под контролем человека, без измеренного внедрения на реальных проектах. Источник: https://dev.to/jsmanifest/claude-code-headless-mode-in-2026-scripting-autonomous-coding-tasks-without-the-interactive-shell-13l3