Неинтерактивный режим, CI и безопасная автоматизация
Claude Code можно запускать программно с флагом -p или --print, получать структурированный ответ и включать в CI.
Краткий ответ
Claude Code можно запускать программно с флагом -p или --print, получать структурированный ответ и включать в CI. Автоматизация убирает интерактивный контроль, поэтому требует более строгих входов, разрешений, лимитов и проверки результата, чем локальный диалог.
Claude Code можно запускать программно с флагом -p или --print, получать структурированный ответ и включать в CI. Автоматизация убирает интерактивный контроль, поэтому требует более строгих входов, разрешений, лимитов и проверки результата, чем локальный диалог.
Базовый неинтерактивный запуск
claude -p "What does the auth module do?"
Для машинной обработки доступен JSON:
claude -p "Summarize this project" --output-format json
--output-format json возвращает результат, session ID и метаданные. stream-json предназначен для потока событий. Для валидируемого контракта можно совместить JSON-вывод с --json-schema.
Воспроизводимое окружение
Обычный claude -p загружает применимые CLAUDE.md, hooks, Skills, плагины, MCP и auto memory. Для CI документация рекомендует рассмотреть --bare: он пропускает auto-discovery и снижает зависимость от пользовательской конфигурации. Тогда всё необходимое нужно явно передать и настроить в pipeline.
Версии, рабочая директория и набор входных файлов должны быть фиксированы.
Минимальные разрешения
--allowedTools позволяет ограниченно разрешить требуемые инструменты. Не выдавайте CI-агенту write-доступ, если задача только анализирует diff. Для создания коммита официальная документация показывает узко перечисленные Git-команды, а не общий неограниченный Bash.
Токены храните в secrets CI и ограничивайте их scope. Недоверенный pull request не должен автоматически получать production credentials.
GitHub Actions
Интеграция может реагировать на issue или PR, анализировать код и готовить изменения. Workflow обязан явно определять trigger, права GITHUB_TOKEN, допустимых инициаторов и команды проверки. Для fork PR особенно важна граница между недоверенным кодом и секретами.
Практический чек-лист pipeline
- Prompt версионируется или формируется детерминированно.
- Ввод ограничен размером и считается недоверенным.
- Разрешены только необходимые tools и домены.
- Ответ проверяется JSON Schema или строгим парсером.
- Есть timeout, лимит стоимости и обработка non-zero exit.
- Логи не раскрывают секреты.
- Запись в репозиторий или внешнюю систему требует отдельной политики.
- Человек может воспроизвести запуск локально.
Частые вопросы
claude -p автоматически безопасен для CI?
Нет. Неинтерактивность не устраняет доступ к инструментам и недоверенный ввод. Необходимы узкие права, изоляция и проверка результата.
Зачем нужен --bare?
Он исключает автоматическую загрузку пользовательских и проектных расширений, помогая получить одинаковое окружение на разных runner. Нужный контекст тогда задаётся явно.
Можно ли продолжить программный сеанс?
Да. Поддерживаются --continue для последнего разговора и --resume с session ID. В параллельной автоматизации идентификатор следует сохранять явно.
Что важно запомнить
- -p запускает Claude Code без интерактивного диалога.
- Структурированный вывод нужно валидировать, а не просто парсить как доверенный.
- CI требует минимальных tools, secrets и сетевого доступа.
- Воспроизводимость важнее скрытой локальной настройки.
https://yadro-code.ru/lessons/without-university/claude-code-workflows/claude-code-17