Headless Mode and CI Automation
claude -p as a unix utility: output formats, permission flags, GitHub Actions, and safe code-automation patterns.
Lesson content is currently available in Russian.
What you will learn
- →Встраивать claude -p в скрипты и конвейеры с JSON-выводом и кодами возврата.
- →Задавать безопасные рамки автономного запуска: allowedTools, permission-mode, max-turns.
- →Настраивать GitHub Actions с @claude и строить автоматизации, заканчивающиеся PR.
claude -p: агент как unix-утилита
Флаг -p (print) превращает Claude Code в неинтерактивную команду: прочитал промпт, выполнил, напечатал результат, завершился. Это открывает композицию с обычным unix-конвейером:
# разовый вопрос к репозиторию
claude -p "перечисли публичные функции без тестов в src/billing"
# stdin как вход
cat build-error.log | claude -p "найди первопричину, ответь одной строкой"
# структурированный вывод для скриптов
claude -p "суммаризируй изменения за неделю" --output-format json
Формат json возвращает объект с результатом, стоимостью и метаданными сессии — его удобно разбирать jq и складывать в логи. Формат stream-json отдаёт события по мере работы: он нужен длинным задачам, где важен прогресс, и конвейерам, реагирующим на промежуточные шаги. Код возврата стандартный: ноль при успехе, ненулевой при ошибке — привычные условия в bash-скриптах работают без обвязки.
Ментальная модель: claude -p — это grep по смыслу и sed по намерению. Логи, диффы, отчёты линтеров — всё, что течёт по конвейеру, можно пропустить через агента. Начинайте с read-only сценариев: суммаризация, классификация, поиск первопричин. Они безопасны при любой ошибке модели и окупаются с первого дня.
Флаги автономии и границы прав
В headless-режиме некому нажать «разрешить», поэтому права задаются заранее флагами:
claude -p "почини падающие юнит-тесты в пакете billing" \
--allowedTools "Read,Grep,Edit,Bash(npm run test:*)" \
--permission-mode acceptEdits \
--max-turns 30
--allowedTools — белый список инструментов на весь запуск: всё, чего нет в списке, недоступно. --permission-mode acceptEdits автоматически подтверждает правки файлов, оставляя остальные действия под запретом; режим plan разрешает только исследование без правок; bypassPermissions снимает всё — использовать исключительно в изолированном контейнере. --max-turns страхует от зацикливания: агент, не уложившийся в лимит шагов, останавливается, а не выжигает бюджет бесконечным циклом.
Принцип наименьших прав здесь не абстракция. Headless-агент с широкими правами и без человека рядом — худшая комбинация из возможных. Правильная рамка: read-only инструменты по умолчанию; запись — точечными allow-правилами; разрушительные команды — в deny; окружение — контейнер без продакшен-секретов и с ограниченной сетью.
И журналируйте всё: сохраняйте json-вывод каждого прогона с меткой времени. Когда автоматизация однажды сделает что-то странное — а это вопрос времени, — разбирать инцидент будете по фактам, а не по памяти.
GitHub Actions: @claude в PR
Официальный экшен anthropics/claude-code-action добавляет агента в CI. Базовая настройка:
name: Claude
on:
issue_comment:
types: [created]
jobs:
claude:
runs-on: ubuntu-latest
steps:
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
После этого упоминание @claude в комментарии issue или pull request запускает агента: «@claude почини этот баг» — он прочитает тред, внесёт правки и откроет PR; «@claude почему падает этот тест?» — ответит анализом в комментарии. Быстрая установка из терминала — команда /install-github-app: она проведёт через выдачу прав и настройку секретов.
Тот же экшен работает и без упоминаний — по событиям. Параметр prompt задаёт задачу, а триггером может быть pull_request или расписание. Так строятся автоматические ревью каждого PR по чек-листу проекта, еженедельная сводка изменений, триаж свежих issues по меткам. Важная деталь: агент в CI получает тот же CLAUDE.md, те же команды и hooks, что и локальный, — конфигурация проекта, которую вы строили в прошлых уроках, работает и здесь. Чем лучше настроен проект, тем полезнее автоматика.
Паттерны автоматизации и техника безопасности
Рабочие паттерны, проверенные командами в проде.
- Авторевью: на каждый PR агент проходит по диффу с чек-листом проекта и оставляет комментарии. Человек решает, агент подсвечивает.
- Триаж issues: по расписанию агент размечает новые issues метками, находит дубликаты, вежливо запрашивает недостающие детали воспроизведения.
- Санитары кодовой базы: ночной прогон чинит линт, обновляет сгенерированную документацию, открывает PR с результатом.
- Release notes: по диффу между тегами агент собирает черновик изменений для человека-редактора.
Общий инвариант всех паттернов: результат работы агента — pull request, а не прямой пуш в защищённую ветку. PR даёт ревью, прогон CI и откат одним нажатием; прямой пуш не даёт ничего из этого.
Техника безопасности. Токены — минимальные: права на contents и pull-requests, никакого admin. Бюджет — ограничен: max-turns в каждом прогоне, лимиты расходов на API-ключе. Мониторинг — обязателен: стоимость и длительность прогонов из json-вывода собираются в дашборд, аномалии видны за день, а не за квартал. Автоматизация без этих рамок однажды сгенерирует тысячу строк в main в пятницу вечером. Рамки дешевле разбора последствий — установите их до первого инцидента.
Practice
Конвейер с агентом внутри
Соберите один headless-сценарий: либо локальный скрипт, где claude -p анализирует вывод линтера и предлагает фиксы в json-формате, либо GitHub Action, где агент комментирует PR сводкой изменений. Ограничьте права белым списком инструментов и --max-turns.
Deliverable
Скрипт или workflow-файл, json-вывод успешного прогона и список выданных прав с обоснованием каждого.
Checkpoint
Покажите ваш headless-прогон: какие права выданы, чем ограничен бюджет и куда попадает результат?
- ✓ Инструменты ограничены явным белым списком, разрушительные действия недоступны.
- ✓ Есть предохранители: --max-turns, изоляция окружения, отсутствие продакшен-секретов.
- ✓ Результат оформлен как PR или отчёт, а не прямой пуш в защищённую ветку.
Check yourself
Sources