Intégration GitHub
Sur cette page
Jusqu’ici, Claude Code a vécu dans votre terminal, sur votre machine, sous votre regard. La Claude Code GitHub Action déplace le même assistant là où votre équipe discute du code : les issues et les pull requests. Claude ne tourne plus sur votre poste mais dans GitHub Actions, déclenché par les événements du dépôt. Vous mentionnez @claude dans un commentaire pour lui confier une tâche, ou vous lui donnez un prompt qui s’exécute automatiquement sur n’importe quel événement : transformer une issue en pull request, corriger un bug depuis un commentaire, produire un rapport chaque matin.
Mise en place
Tout part d’une commande, /install-github-app, lancée depuis Claude Code dans le dépôt à connecter. Il vous faut un accès administrateur au dépôt et le GitHub CLI authentifié (gh auth login) ; la commande ne fonctionne qu’avec github.com (pour GitLab, voir la page GitLab CI/CD). Elle enchaîne trois étapes :
- Installer l’application Claude GitHub App sur le dépôt.
- Enregistrer un secret d’authentification : une clé d’API (
ANTHROPIC_API_KEY) ou, avec un abonnement Claude, un jeton longue durée (CLAUDE_CODE_OAUTH_TOKEN, généré parclaude setup-token). - Pousser une branche avec les fichiers de workflow choisis et ouvrir GitHub sur une pull request prête à créer.
Vous relisez cette pull request comme n’importe quelle contribution, vous la fusionnez, et @claude fonctionne. C’est aussi le premier endroit où vous reviendrez pour ajuster la configuration. Le workflow de revue, si vous le sélectionnez, publie ses constats sur la pull request elle-même, en commentaires en ligne. Pour une organisation entière, installez l’application une fois au niveau de l’organisation, stockez le secret au niveau de l’organisation (de préférence une clé d’API, un jeton OAuth étant lié à l’abonnement d’une personne), et ajoutez le workflow aux dépôts concernés, ou définissez-le une fois comme workflow réutilisable.
Les deux modes
L’action détecte son mode d’après votre workflow. Sans entrée prompt, elle est en mode interactif : Claude attend la phrase de déclenchement, @claude par défaut, dans un commentaire d’issue ou de pull request, une revue, ou le corps d’une issue nouvellement ouverte, puis répond dans le fil, en mettant son commentaire à jour au fil du travail. Avec une entrée prompt, elle est en mode automatique : Claude s’exécute sans attendre de mention, sur l’événement que vous avez choisi, et ses résultats vont dans le journal du run, sauf si le prompt lui demande de publier et qu’il a un outil pour le faire.
Dans les deux modes, deux vérifications précèdent tout travail : sur les événements d’issue et de pull request, l’auteur doit avoir un accès en écriture au dépôt ; et un acteur robot est refusé, sauf s’il figure dans allowed_bots, ce qui évite qu’un bot ne déclenche Claude en boucle.
Répondre aux mentions
Voici le workflow du mode interactif, tel que la documentation le donne :
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 }}
Quatre lignes ne sont pas du remplissage : id-token: write sert à l’authentification de l’action en tant qu’application GitHub ; actions: read lui permet de lire les résultats de CI sur les pull requests ; actions/checkout lui donne une copie locale du dépôt ; la condition if évite de démarrer un runner pour les commentaires qui ne mentionnent pas @claude. Avec un abonnement, remplacez la dernière ligne par claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}.
Lancer une skill ou un rapport planifié
L’entrée prompt accepte un texte libre ou l’invocation d’une skill. Le workflow de revue installe le plugin officiel code-review et le lance à chaque pull request ouverte, mise à jour ou rouverte :
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
plugin_marketplaces: "https://github.com/anthropics/claude-plugins-official.git"
plugins: "code-review@claude-plugins-official"
prompt: "/code-review:code-review --comment ${{ github.repository }}/pull/${{ github.event.pull_request.number }}"
claude_args: '--allowedTools "mcp__github_inline_comment__create_inline_comment"'
--comment publie les constats sur la pull request ; sans lui, ils restent dans le journal. La ligne claude_args est indispensable : l’action ne démarre le serveur MCP qui écrit les commentaires que si --allowedTools le nomme. Claude saute les pull requests en brouillon, celles qu’il juge triviales et celles qu’il a déjà commentées.
Un prompt en texte libre n’a aucun accès au shell ni à l’API GitHub tant que vous ne lui accordez pas d’outils. Ce rapport quotidien lit les commits et les issues par deux outils MCP, sans même cloner le dépôt :
on:
schedule:
- cron: "0 9 * * *"
# ...
- uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: "Generate a summary of yesterday's commits and open issues"
claude_args: |
--model claude-opus-5-5
--allowedTools "mcp__github__list_commits,mcp__github__list_issues"
Configurer l’action
Les paramètres principaux, sous with: : prompt ; claude_args, qui accepte n’importe quel argument de la ligne de commande (--max-turns 5, --model, --allowedTools, --mcp-config, --append-system-prompt) ; anthropic_api_key ou claude_code_oauth_token ; plugin_marketplaces et plugins ; settings, un JSON de réglages Claude Code ou le chemin d’un fichier ; trigger_phrase pour changer @claude ; use_bedrock, use_vertex ou use_foundry pour router l’inférence par votre fournisseur cloud, authentifié par fédération d’identité OIDC, sans secret statique.
Comme en local, c’est le CLAUDE.md du dépôt qui donne à Claude vos conventions, vos critères de revue et vos règles : il est lu à chaque run, donc gardez-le concis. Si vos workflows référencent encore anthropics/claude-code-action@beta, passez à @v1 : l’entrée mode disparaît, direct_prompt devient prompt, max_turns et model passent dans claude_args, et custom_instructions devient --append-system-prompt.
Coûts, sécurité, alternatives
Chaque exécution consomme des minutes GitHub Actions et des tokens (ou votre abonnement, avec un jeton OAuth). Limitez les deux avec des demandes précises, des gabarits d’issue, --max-turns, un timeout-minutes sur le job et les contrôles de concurrence de GitHub. Ne commitez jamais une clé : toujours un secret GitHub. Accordez au workflow les seules permissions nécessaires et relisez les changements de Claude avant de fusionner.
Deux autres produits partagent le nom. Code Review (offres Team et Enterprise) relit automatiquement chaque pull request d’un dépôt, sans fichier de workflow : un propriétaire l’active dans les réglages de l’organisation, et REVIEW.md ajuste ce qui est signalé. Les sessions cloud de claude.ai/code peuvent surveiller la pull request d’une branche et pousser des corrections quand la CI échoue (/autofix-pr). Et si votre équipe est sur GitLab, la page Claude Code GitLab CI/CD décrit l’équivalent.
À vous de jouer
- Dans un dépôt GitHub de test, lancez
/install-github-app, choisissez le workflow de mentions, puis fusionnez la pull request créée. - Ouvrez une issue qui décrit un petit bug et commentez :
@claude propose un correctif et ouvre une PR. Suivez le commentaire de Claude. - Ajoutez le workflow de revue à partir de l’exemple ci-dessus, ouvrez une pull request et lisez les commentaires en ligne.
- Dans le workflow, ajoutez
--max-turns 10dansclaude_argset vérifiez que le run respecte la limite.
Sources officielles : Claude Code GitHub Actions · Code Review · Use Claude Code GitHub Actions with cloud providers · Claude Code GitLab CI/CD
Points clés à retenir
/install-github-appinstalle l’application, enregistre le secret (ANTHROPIC_API_KEYouCLAUDE_CODE_OAUTH_TOKEN) et ouvre une PR avec les workflows- Sans
prompt, Claude répond aux mentions@claude; avecprompt, il s’exécute sur n’importe quel événement, y compris un cron - Seuls les auteurs avec accès en écriture (et les bots listés) déclenchent un run
- Un prompt n’a aucun outil tant que
claude_args --allowedToolsou une skill ne lui en donne ;--commentpublie la revue sur la PR CLAUDE.mdvaut aussi dans GitHub Actions ; Code Review et les sessions cloud sont les alternatives sans workflow