Claude Code GitHub Actions позволяет запускать Claude Code внутри workflow GitHub. Вы упоминаете @claude в issue или pull request, и Claude читает код, отвечает, пишет исправление в новой ветке или проверяет diff — всё на раннере GitHub. Быстрее всего настроить это так: откройте Claude Code в своём репозитории и выполните /install-github-app. Команда установит Claude GitHub App, сохранит ваш ключ как секрет репозитория и откроет pull request с файлами workflow.
В этом руководстве — оба способа настройки, входные параметры официального anthropics/claude-code-action, два режима (упоминания и автоматизация), готовый workflow для ревью PR, секреты, контроль расходов и прав, а также случаи, когда лучше запускать Claude локально. Всё здесь опирается на документацию Anthropic и README action по состоянию на октябрь 2026 года. Если вам нужен агент, который сам чинит красные сборки CI, об этом есть отдельная статья: автоматическое исправление падений CI с помощью AI.
Что делает action
anthropics/claude-code-action@v1 — это GitHub Action, который запускает агента Claude Code на вашем собственном раннере GitHub. Он работает в двух режимах:
- Интерактивный (упоминания). Если вы не задали
prompt, action ждёт фразу-триггер, по умолчанию@claude. Она может быть в комментарии к issue или PR, в ревью PR или в заголовке или тексте нового issue. Claude отвечает комментарием и может запушить ветку с изменениями. - Автоматизация. Если задан
prompt, Claude выполняет эту задачу сразу, как только срабатывает workflow, упоминание не нужно. Результаты попадают в лог запуска, если только prompt или плагин не велят Claude опубликовать их где-то ещё. Так строятся ревью PR, отчёты по расписанию и разбор issue.
Агент следует тем же правилам, что и в вашем терминале. Он читает CLAUDE.md, пользуется разрешёнными вами инструментами и останавливается на заданном лимите ходов.
Шаг 1: быстрая настройка через /install-github-app
Откройте Claude Code в репозитории и выполните:
/install-github-app
Перед началом проверьте три вещи:
- Вы администратор репозитория. И установка приложения, и добавление секретов требуют прав администратора.
- Репозиторий находится на github.com. Если remote указывает на gitlab.com или bitbucket.org, команда покажет уведомление и завершится.
- GitHub CLI авторизован. Если ещё нет, сначала выполните
gh auth login.
Команда проведёт вас по шагам. Она установит Claude GitHub App в репозиторий и спросит, как Claude должен проходить аутентификацию. Затем сохранит как секрет репозитория либо ANTHROPIC_API_KEY (API-ключ), либо CLAUDE_CODE_OAUTH_TOKEN (токен, привязанный к вашей подписке Claude). Если ключ уже есть, его можно использовать повторно. В конце она запушит ветку с файлами workflow и откроет pull request, который вам останется слить.
Вы получите два workflow: claude.yml отвечает на упоминания @claude, а claude-code-review.yml проверяет pull request. Нажмите Esc, чтобы остановиться на полпути, или выберите «Skip for now» после установки приложения, если хотите написать workflow сами. Если позже запустить команду снова, она предложит обновить файл workflow до последней версии.
Быстрая настройка работает с Claude API и с подписками Claude. Если вы используете Amazon Bedrock, Google Cloud или Microsoft Foundry, идите ручным путём и смотрите раздел документации про облачных провайдеров.
Шаг 2: ручная настройка
Если команда вам не подходит, те же три шага вручную выглядят так:
- Установите Claude GitHub App со страницы
github.com/apps/claudeв репозиторий. Action использует его права Contents, Issues и Pull requests, каждое с доступом на чтение и запись. - Добавьте секрет в Settings → Secrets and variables → Actions:
ANTHROPIC_API_KEY: API-ключ из Claude Console с оплатой за токены, илиCLAUDE_CODE_OAUTH_TOKEN: чтобы создать его, выполните локальноclaude setup-token; он работает с тарифами Pro, Max, Team и Enterprise.
- Скопируйте пример workflow
claude.ymlиз папкиexamples/action в.github/workflows/.
Вот рабочий workflow для упоминаний:
name: Claude Code
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
claude:
if: contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
id-token: write
actions: read
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
Два права легко упустить. id-token: write нужен для стандартной аутентификации через GitHub App. actions: read позволяет Claude читать результаты CI, так что можно спросить его, почему упала проверка. Если вы используете токен подписки, замените последнюю строку на claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}.
Для организации документация предлагает установить приложение на уровне организации, положить ключ в секрет Actions организации и вызывать переиспользуемый workflow из каждого репозитория. Для общих секретов там же рекомендуют API-ключ, а не OAuth-токен, потому что токен принадлежит подписке одного человека. Если вы вообще не хотите хранить долгоживущий ключ, action поддерживает workload identity federation (OIDC) через входные параметры anthropic_federation_rule_id и anthropic_organization_id.
Шаг 3: @claude в issue и pull request
Когда workflow окажется в ветке по умолчанию, напишите комментарий:
@claude why does the checkout test fail on Node 22? Fix it if the cause is in our code.
@claude implement this issue. Keep the public API unchanged and add tests.
@claude review the error handling in src/payments/ and suggest changes inline.
Claude отвечает комментарием. Когда он меняет код, то пушит в ветку, имя которой начинается с claude/ (это меняется входным параметром branch_prefix), и даёт ссылку, чтобы открыть pull request. Кто может запустить action, решают несколько правил:
- У автора комментария должны быть права на запись. Пользователей без них action игнорирует, если только вы не перечислите их в
allowed_non_write_users, для чего нужен и ваш собственныйgithub_token. - Боты игнорируются, если вы не назовёте их в
allowed_bots. Значение"*"принимает всех ботов, и README предостерегает от этого в публичных репозиториях. - Триггер — отдельное слово.
@claudeработает,/claudeи@claude-bot— нет. При необходимости поменяйте его черезtrigger_phrase.
Есть также assignee_trigger (запуск, когда issue назначают определённому пользователю) и label_trigger (запуск, когда добавляют метку, по умолчанию claude). Сочетайте их с нужными типами событий issues в on:.
Шаг 4: workflow для автоматического ревью PR
Ниже — workflow для ревью из документации. Он запускается на каждый открытый, обновлённый, повторно открытый или готовый к ревью pull request, и никому не нужно писать @claude:
name: Code Review
on:
pull_request:
types: [opened, synchronize, ready_for_review, reopened]
jobs:
review:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: read
issues: read
id-token: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 1
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-code.git"
plugins: "code-review@claude-code-plugins"
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
Что делает каждая часть:
plugin_marketplacesиpluginsзагружают официальный плагинcode-review.promptзапускает его команду на текущем PR.--commentпубликует находки комментариями в строках кода или одним итоговым комментарием.- Строка
claude_argsобязательна. Без--allowedToolsдля инструмента комментариев в строках MCP-сервер, который публикует комментарии, не запускается.
Плагин пропускает черновые, закрытые и тривиальные PR, а также PR, которые он уже прокомментировал. Pull request из форков публичного репозитория не получают секреты репозитория, поэтому ревью на них не запустится. Anthropic также предлагает отдельный управляемый продукт Code Review, который проверяет PR без всякого файла workflow. Action же — тот вариант, который вы контролируете и запускаете на своём раннере.
Шире о том, что AI-ревью находит, а что пропускает, читайте в статье AI-ревью кода.
Шаг 5: автоматизации по расписанию и свои сценарии
С prompt можно запустить любую задачу на любое событие GitHub. Ежедневная сводка выглядит так:
name: Daily report
on:
schedule:
- cron: "0 9 * * *"
jobs:
report:
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
id-token: write
steps:
- uses: actions/checkout@v6
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Summarize yesterday's commits and open issues"
claude_args: |
--model claude-opus-5-5
--allowedTools "mcp__github__list_commits,mcp__github__list_issues"
Помните: с простым prompt у Claude нет ни оболочки, ни доступа к GitHub API, пока вы не выдадите инструменты через --allowedTools или правило permissions.allow во входном параметре settings. Workflow по расписанию запускаются только из ветки по умолчанию, а в публичных репозиториях GitHub отключает их после 60 дней без активности.
Входные параметры, которые вам действительно понадобятся
У action много входных параметров. Вот самые ходовые:
| Параметр | Что делает |
|---|---|
prompt | Текст задачи или slash-команда. Если задан, action работает в режиме автоматизации. |
claude_args | Любые флаги CLI Claude Code, например --max-turns, --model, --allowedTools, --mcp-config, --append-system-prompt. |
anthropic_api_key | API-ключ для Claude API. |
claude_code_oauth_token | Токен из claude setup-token как альтернатива API-ключу. |
github_token | Ваш собственный токен, если вы не хотите, чтобы действовало Claude GitHub App. |
trigger_phrase | Слово для упоминания. По умолчанию @claude. |
settings | Настройки Claude Code в виде JSON или пути к файлу: права, хуки и окружение. |
plugin_marketplaces, plugins | Загрузка плагинов, например code-review. |
use_bedrock, use_vertex, use_foundry | Работа через облачного провайдера вместо Claude API. |
Другие полезные параметры из README: base_branch и branch_prefix — куда Claude пушит, use_sticky_comment — один обновляемый комментарий, track_progress — комментарии с отслеживанием прогресса на событиях PR и issue, use_commit_signing — подпись коммитов и additional_permissions (например, actions: read). Action также возвращает выходные значения, такие как branch_name, session_id и structured_output, для следующих шагов.
Если вы пользовались бета-версией, переход механический. Замените @beta на @v1, уберите mode, переименуйте direct_prompt в prompt, перенесите max_turns и model в claude_args, а custom_instructions превратите в --append-system-prompt.
Секреты: что и куда
- Никогда не кладите ключ в файл workflow. Используйте
${{ secrets.ANTHROPIC_API_KEY }}или${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}. - Храните секреты на самом узком уровне, который работает: секрет репозитория для одного репозитория, секрет организации, ограниченный выбранными репозиториями, — для многих.
- Не включайте
show_full_outputв публичных репозиториях. README предупреждает, что полный вывод в логах может раскрыть секреты. - Считайте текст issue недоверенным вводом. Любой, кто может написать issue, может попытаться управлять Claude через спрятанные в нём инструкции. Правило прав на запись — ваша главная защита, поэтому не ослабляйте
allowed_non_write_usersилиallowed_botsбез веской причины. Подробнее о рисках — в материалах prompt injection и безопасность AI-агентов для программирования.
Контроль расходов и прав
Каждый запуск стоит дважды: минуты GitHub Actions на раннере и токены Claude (или использование подписки, если у вас OAuth-токен). Рычаги, которые советует документация:
- Ограничьте число ходов:
claude_args: "--max-turns 5"не даст запуску зациклиться. - Задайте таймаут job через
timeout-minutes. - Используйте concurrency, чтобы серия пушей не запустила пять ревью одного и того же PR:
concurrency:
group: claude-${{ github.event.pull_request.number || github.event.issue.number }}
cancel-in-progress: true
- Сузьте инструменты. Давайте в
--allowedToolsтолько те команды, которые нужны задаче, и оставляйтеpermissionsjob только на чтение для ревью, как в workflow выше. - Держите CLAUDE.md коротким и конкретным. Claude загружает его при каждом запуске, так что длинный файл каждый раз стоит токенов. Шаблон есть в статье как написать CLAUDE.md.
- Пишите конкретные запросы. «@claude fix the null check in parseDate» дешевле, чем «@claude look at this». Шаблоны issue помогают людям формулировать запросы лучше.
Частые ошибки
- Workflow не лежит в ветке по умолчанию. Workflow с
issue_commentзапускаются только из ветки по умолчанию, так что сначала слейте PR с настройкой. - CI не запускается на коммитах Claude. GitHub не запускает workflow для коммитов, сделанных со стандартным
GITHUB_TOKEN. Уберитеgithub_token: ${{ secrets.GITHUB_TOKEN }}, чтобы action использовал Claude GitHub App, или передайте токен своего приложения. - Ревью ничего не публикует. Проверьте строку
--allowedTools "mcp__github_inline_comment__create_inline_comment"и посмотрите, не черновой ли это PR и не из форка ли он. - Claude говорит, что не может выполнять команды. В режиме автоматизации по умолчанию ничего не разрешено. Добавьте инструменты в
--allowedTools.
Когда лучше запускать Claude локально
Action хорош для задач, где фиксированный триггер ведёт к ограниченной работе: ответить на вопрос, реализовать небольшой issue, проверить diff, написать ежедневную сводку. Он плохо подходит, когда:
- Вы хотите направлять агента по ходу работы. Ветка комментариев слишком медленная, если поправлять агента нужно каждые несколько минут. В локальной сессии можно прервать, одобрить и перенаправить.
- Задаче нужно ваше окружение: запущенная база данных, локальный сервис, секреты, которым не место в CI, или графический интерфейс, на который нужно посмотреть.
- Вы исследуете. Долгое расследование сжигает минуты раннера и токены, пока никто не смотрит. Локально вы видите, что агент уходит в сторону, и останавливаете его.
- Вам нужно несколько агентов сразу, каждый в своём worktree, чтобы сравнить подходы.
Многие команды используют оба варианта. Action берёт на себя рутинные ревью и небольшие issue, а тяжёлая работа идёт локально, где за ней кто-то следит.
Локальная часть с AgentVera
AgentVera — десктопное приложение, которое запускает Claude Code, Codex, opencode и другие CLI-агенты для программирования рядом друг с другом, в настоящих терминалах, используя ваши собственные установки и входы. Оно закрывает локальную часть описанного выше разделения:
- Агенты в панелях и worktree. Запускайте несколько агентов Claude Code рядом, каждого в своём git worktree, и смотрите diff и коммиты в панели Git и GitHub.
- Автоматическое код-ревью до пуша: когда агент заканчивает ход, выбранная вами модель Claude проверяет написанное и выводит находки с уровнем серьёзности и file:line. Она может отправить их обратно агенту. Это есть на бесплатном тарифе.
- Центр CI/CD собирает запуски GitHub Actions, GitLab CI и Jenkins в одном месте. Логи упавшего запуска уходят новому агенту одним кликом.
- Автоматизации (Pro и Team) могут запустить агента, когда CI краснеет или участник репозитория комментирует открытый PR. Агент работает в своём worktree, и AgentVera никогда не пушит напрямую в ветку по умолчанию.
Поскольку AgentVera запускает любой CLI-агент, та же схема работает и с другими агентами. Статья как пользоваться opencode показывает эту сторону на примере агента, не привязанного к провайдеру. Скачайте AgentVera и попробуйте.
Подведём итог
Чтобы подключить Claude Code к GitHub Actions, выполните /install-github-app, слейте открытый командой PR и напишите @claude в issue. Для автоматических ревью добавьте workflow с плагином code-review и его строкой --allowedTools. Дальше держите всё в рамках: --max-turns, таймауты job, concurrency, права только на чтение, где это возможно, и секреты, которые никогда не попадают в файл workflow. Долгую, исследовательскую и зависящую от окружения работу оставьте локальной сессии, где вы можете за ней следить.