Guide · IA & agents

Claude Code dans un workflow GitHub

Action GitHub de Claude Code, lue le 2026-10-18. Installation non rejouée, aucun secret recopié.

Claude Code dans GitHub, sur la page relue le 2026-10-19, est l’action anthropics/claude-code-action. Elle lance Claude Code dans un workflow du dépôt. Ce n’est pas la CI qui construit et teste une app, déjà écrite dans GitHub Actions pour un SaaS. Ce n’est pas non plus Code Review, que la même page sépare : une revue automatique sur chaque pull request, sans fichier de workflow à maintenir.

La page couvre l’intégration par fichiers de workflow. L’installation n’a pas été rejouée. Aucun secret n’est recopié. La carte du produit est sur Claude Code : la carte.

Deux chemins, un droit d’admin

Les deux installations demandent un accès admin au dépôt, d’après la documentation Anthropic.

Le chemin court est /install-github-app, depuis Claude Code, dans le dépôt à connecter. Il ne marche qu’avec un remote github.com. Un remote GitLab ou Bitbucket fait afficher un avis, puis sortir. Avant de lancer la commande, la page demande la GitHub CLI, authentifiée avec gh auth login. Claude Code prévient si elle manque. Je n’ai pas lancé la commande.

Le chemin court installe l’app GitHub Claude, pose un secret, pousse une branche avec les workflows choisis, et ouvre le navigateur sur une pull request à créer. Si une clé d’API est déjà là, elle est réutilisée. Sinon, la page propose un jeton long lié à l’abonnement, ou une clé d’API collée. Le secret s’appelle ANTHROPIC_API_KEY pour une clé, CLAUDE_CODE_OAUTH_TOKEN pour un jeton d’abonnement. Après l’app, on peut choisir Skip for now et finir plus tard. Avant la v2.1.187, la page dit que Claude Code enchaînait sur le choix du workflow sans cette question. Je n’ai pas vérifié la version locale.

Le chemin manuel, si la commande échoue ou si vous voulez tenir les fichiers vous-même : installer l’app Claude, ajouter l’un des deux secrets, copier examples/claude.yml dans .github/workflows/. Le fichier copié, tel que la page le décrit, répond à @claude avec le secret ANTHROPIC_API_KEY. Si vous avez posé le jeton OAuth à la place, il faut changer la ligne d’entrée du workflow. Ce copier-coller n’a pas été fait.

L’action utilise trois permissions de l’app : Contents, Issues et Pull requests, en lecture et écriture. L’app officielle demande aussi des permissions utiles à d’autres fonctions Claude. La documentation Anthropic précise qu’on ne peut pas n’accepter qu’une partie des permissions demandées lors de l’installation. Si l’organisation veut limiter son app aux trois permissions nécessaires à l’action, elle peut créer sa propre app GitHub. Code Review et l’auto-fix web restent liés à l’app officielle.

Un secret d’organisation évite d’en poser un par dépôt. La page dit alors de prendre une clé d’API, pas un jeton OAuth : le jeton est lié à l’abonnement de la personne qui a lancé claude setup-token. Une fédération d’identité est aussi décrite, pour ne pas stocker de secret long. Je ne l’ai pas configurée.

Mention, ou prompt

Sans entrée prompt, le mode est interactif. Claude attend @claude, ou la phrase fixée dans trigger_phrase, dans un commentaire d’issue ou de pull request, dans une revue, ou dans le titre ou le corps d’une issue nouvellement ouverte. Le progrès s’affiche en commentaire.

Avec un prompt, le mode est automatique. Claude n’attend pas la mention. Par défaut, le résultat va dans le journal du run, pas dans un commentaire. Il peut poster si le prompt le demande et si un outil sait poster.

Dans les deux modes, deux contrôles précèdent le démarrage. Sur un événement d’issue ou de pull request, l’auteur doit avoir l’accès en écriture, sauf liste allowed_non_write_users avec votre propre github_token. Un acteur bot est refusé, sauf s’il est dans allowed_bots, pour éviter qu’un bot relance Claude en boucle. Un schedule n’a pas d’auteur humain au sens du premier contrôle. Le second s’applique quand même : GitHub attribue le schedule à un utilisateur du dépôt, souvent celui qui a touché le cron en dernier.

L’exemple interactif de la page, non lancé :

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 }}

La page commente quatre lignes. id-token: write sert à l’authentification par défaut via l’app. actions: read laisse lire les résultats de CI. actions/checkout@v6 donne une copie locale du dépôt. Le if évite de démarrer un runner pour un commentaire sans @claude. L’action revérifie la phrase de son côté.

Les workflows encore épinglés sur @beta ont une migration écrite : passer à @v1, retirer mode, remplacer direct_prompt par prompt, et déplacer modèle et nombre de tours dans claude_args. Je n’ai pas de workflow beta à migrer.

Ce que le workflow ne décide pas seul

CLAUDE.md à la racine du dépôt tient le style, les critères de revue et les motifs à suivre. Claude est décrit comme s’y conformant quand il ouvre une pull request ou répond. Comment écrire un bon CLAUDE.md et Skills couvrent ces fichiers. Un skill du dépôt n’est visible sur le runner que si actions/checkout a tourné avant l’action.

Un prompt en texte n’a ni shell ni API GitHub tant que vous n’accordez pas les outils, via --allowedTools dans claude_args, ou une règle permissions.allow dans settings. Un skill, lui, peut utiliser les outils nommés dans son frontmatter allowed-tools.

Les secrets restent des secrets GitHub. La page interdit de committer une clé ou un jeton. Sécuriser Claude Code tient les droits et les secrets côté machine. Cette page ne les rejoue pas.

Sur un dépôt public, GitHub ne donne pas les secrets aux runs déclenchés par une pull request de fork. La page le dit pour le workflow de revue : la revue ne tourne alors que pour les branches du même dépôt. Les workflows planifiés ne partent que de la branche par défaut, et, sur un dépôt public, GitHub coupe le schedule après 60 jours sans activité. Ce délai est celui de la page. Il n’a pas été mesuré.

La page nomme deux consommations par run : les minutes du runner GitHub, et les jetons d’API, ou l’abonnement si vous authentifiez avec le jeton OAuth. Elle renvoie aux pages de facturation. Les barèmes ne sont pas recopiés. Le guide sur le coût d’un agent détaillera ces postes dans un lot ultérieur, sans montant.

Ne pas confondre les pages

Produit nommé sur la pageOù le lireCe que cette page ne fait pas
Action dans un workflowCette pageL’installation
Revue sans workflow à tenirPage Code Review de Claude CodeUn fichier claude-code-review.yml
CI de build et de testGitHub Actions pour un SaaSLe modèle Node.js
Installation localeInstaller Claude Codegh auth login

Le choix entre Claude Code et un autre outil n’est pas ici. Claude Code ou Cursor existe.

Ce qui n’a pas tourné

Aucune app installée, aucun secret posé, aucun @claude envoyé. Les noms de secrets, le numéro de version et le délai de 60 jours viennent des pages officielles relues le 2026-10-19. Les prix restent sur les pages de facturation, pas ici.

Sources

Documentation officielle consultée le 2026-10-19 :