Vous pouvez confier du développement aux sessions cloud de Claude Code sans ouvrir une nouvelle porte vers la production, à condition que le cloud ne puisse toucher qu’un seul dépôt GitHub et que votre serveur de production se contente de récupérer (pull) depuis ce dépôt. Pour en arriver là, j’ai pourtant bloqué plus d’une fois. Cet article est mon compte rendu (je gère ce site) de mes débuts avec les sessions cloud sur un projet de développement distinct, le 4 octobre 2026, revérifié par rapport au texte original de la documentation officielle.

Ce que le cloud peut toucher

Un seul dépôt GitHub

Installez la Claude GitHub App avec « Only select repositories » (uniquement les dépôts sélectionnés) et donnez-lui ce seul dépôt.

Serveur de production

Pull uniquement

La production récupère le code avec une clé en lecture seule. Ni le cloud ni GitHub ne reçoivent de clé d’accès à la production.

Environnement cloud

Un nouveau par projet

Toute personne qui utilise un environnement peut lire ses variables d’environnement. N’y mettez aucun secret.

Sources : Use Claude Code in the cloud et Configure cloud environments. Vérifié le 4 octobre 2026. Pour le fonctionnement, la prise en main et les tarifs, voir « Que sont les sessions cloud de Claude Code ? »

1. Une configuration qui protège la production : la production ne fait que des pulls

Ma plus grande crainte était que passer par GitHub ajoute une nouvelle voie d’accès au serveur de production. J’ai retenu la configuration ci-dessous (c’est mon propre choix, pas une recommandation officielle). Les flèches indiquent le sens dans lequel les données sont récupérées.

  • Session cloud Écrit le code et pousse des branches (ne peut pas entrer en production)
  • →push
  • Dépôt GitHub privé Le seul dépôt sur lequel l’App est installée
  • ←fetch
  • Serveur de production Fait des pulls avec une clé de déploiement en lecture seule ; c’est un humain qui lance le déploiement
CléPlacez sur la production une clé en lecture seule dédiée à ce dépôt (une deploy key). D’après la documentation de GitHub, une deploy key donne accès à un seul dépôt et est en lecture seule par défaut.
Ce que je ne fais pasJe ne donne pas à GitHub Actions de clé de production pour des déploiements automatiques. Cela ajouterait un chemin de plus vers la production.
DéploiementUn humain le lance à la main. Un script côté production récupère le dernier code, le compile et le met en place. En cas d’échec, la version en service reste en place.

Au début, j’ai essayé de réutiliser la clé d’un autre dépôt, et GitHub l’a refusée avec « Key is already in use. » D’après la documentation de GitHub, ce message apparaît quand la clé est déjà enregistrée sur un autre compte ou un autre dépôt. Comme chaque dépôt a sa propre clé, une clé qui fuit n’expose que ce seul dépôt.

2. Ce qui est envoyé si vous démarrez sans GitHub

D’habitude, je garde mon code dans un dépôt git sur mon propre serveur ; au départ, j’ai donc envisagé d’utiliser les sessions cloud sans GitHub. D’après la documentation officielle, quand vous lancez claude --cloud "task description" dans, par exemple, un dépôt sans remote, votre dépôt local est empaqueté en un seul bundle et envoyé dans le cloud. Voici ce qui est envoyé.

HistoriqueL’historique de toutes les branches. Un fichier commité un jour puis supprimé est envoyé lui aussi, tant qu’il reste dans l’historique.
Modifications non commitéesLes modifications non commitées des fichiers suivis par git.
Non envoyéLes fichiers que git ne suit pas (faites un git add si vous en avez besoin).

macOS, Linux, WSL

Les noms qui ressemblent à des secrets restent en local

Pour les fichiers nommés comme .env, *.tfvars, id_rsa ou *.pem, les modifications non commitées restent sur votre machine au lieu d’être envoyées.

Windows (hors WSL)

Envoyé quel que soit le nom

Les modifications non commitées des fichiers suivis sont envoyées telles quelles. Mettez de côté (stash) ou annulez avant de commencer toute modification que vous ne voulez pas envoyer.

Les cas à risque sont quand vous suivez dans git un fichier contenant des secrets et que vous l’avez modifié, et quand vous avez commité des secrets à un moment donné dans le passé. Un .env exclu par .gitignore n’est de toute façon pas envoyé.

Autre point : d’après la documentation officielle, une session créée à partir d’un bundle ne peut pousser que vers « repositories your GitHub connection has push access to » (les dépôts sur lesquels votre connexion GitHub a le droit de push). Je n’ai trouvé dans la documentation aucun moyen de renvoyer directement les résultats vers un dépôt auto-hébergé hors GitHub. Après être allé jusqu’à rédiger une procédure, j’ai renoncé et créé un dépôt privé sur GitHub.

3. Les cinq endroits où j’ai réellement bloqué

Voici les accrocs rencontrés entre la création d’un dépôt privé sur GitHub et le vrai démarrage, chacun présenté sous la forme symptôme, cause et solution.

1) Le dépôt n’apparaît pas dans la liste

SymptômeLe dépôt que je venais de créer n’était pas dans la liste. Seuls apparaissaient des dépôts de test d’un autre compte que j’avais essayé auparavant.
CauseLe compte GitHub connecté à claude.ai n’était pas celui que j’utilise habituellement. J’avais connecté un autre compte plus tôt et je l’avais oublié.
SolutionJ’ai déconnecté GitHub sur claude.ai/customize/connectors, je me suis reconnecté au bon compte dans le navigateur, puis j’ai refait la connexion. D’après la documentation officielle, la déconnexion supprime les identifiants GitHub utilisés par les sessions cloud.

2) Sur quelle étendue installer la GitHub App

SymptômeEn cours de connexion, on vous demande sur quelle étendue installer la Claude GitHub App. Choisir « All repositories » l’installe sur tous les dépôts du compte ou de l’organisation.
CauseMon compte appartient aussi à l’organisation d’un projet client, et je ne voulais pas que Claude y touche.
SolutionJe l’ai installée uniquement sur l’organisation de ma propre société et j’ai utilisé « Only select repositories » pour ne choisir que ce dépôt. Certaines organisations exigent qu’un propriétaire de l’organisation approuve l’installation.

3) Des dépôts d’organisations sans l’App s’affichent

SymptômeMême après avoir restreint l’étendue, plusieurs dépôts d’une autre organisation apparaissaient dans la liste.
CauseIl s’agissait tous de dépôts publics. D’après le tableau de la documentation officielle, une connexion via la GitHub App donne accès à « all public repositories, plus private repositories where the App is installed » (tous les dépôts publics, plus les dépôts privés où l’App est installée).
SolutionRien à corriger. Les dépôts publics sont déjà lisibles par tout le monde, donc rien de nouveau n’est exposé. Les dépôts privés ne sont utilisables que là où l’App est installée.

4) Un ancien environnement cloud traînait encore

SymptômeParmi mes environnements cloud (des configurations enregistrées qui regroupent les réglages d’accès réseau, les variables d’environnement et un script de configuration), il restait celui que j’avais créé pour un autre projet.
CauseD’après la documentation officielle, toute personne qui utilise un environnement peut lire ses variables d’environnement et son script de configuration. Si vous le réutilisez, les anciennes valeurs sont aussi visibles depuis le nouveau projet.
SolutionJ’ai créé un nouvel environnement pour ce projet et laissé ses variables d’environnement vides. L’accès réseau est resté sur la valeur par défaut, « Trusted ». Si vous avez besoin d’une clé d’API, avec Pro et Max vous pouvez l’enregistrer sous « API credentials » plutôt que dans une variable d’environnement, et la session ne peut pas lire la valeur de la clé (pas encore disponible sur Team et Enterprise).

5) J’ai voulu lui faire lire un fichier local

SymptômeJ’allais écrire « lis la procédure dans mon dossier local » dans ma première consigne.
CauseUne session cloud ne voit pas les fichiers de votre PC. Le tableau comparatif de la documentation officielle indique aussi que les sessions cloud n’utilisent pas votre configuration locale, mais « only the repository » (uniquement le dépôt).
SolutionJ’ai mis les règles du projet, les exigences de sécurité et les règles de base pour la production dans le premier message, et j’ai joint la spécification. Les règles que vous réutilisez peuvent aller dans le CLAUDE.md du dépôt et être commitées, ce qui évite de les réécrire à chaque fois.

4. Ce qui change pour les modes d’autorisation dans le cloud

Juste avant d’envoyer, j’ai remarqué que le mode d’autorisation était réglé sur « Accept edits ». Le nom laisse penser que c’est le mode qui fonce le plus, mais d’après la documentation officielle, Accept edits dans le cloud correspond au mode par défaut (Manual) de Claude Code en local. Dans le cloud, les modifications de fichiers sont pré-approuvées dans tous les modes, si bien que le mode par défaut apparaît simplement sous ce nom.

Accept edits

S’arrête aux commandes

Les modifications de fichiers passent automatiquement. Les commandes comme npm install, les builds et git push attendent votre approbation à chaque fois.

Plan

Planifie d’abord

Avant de modifier quoi que ce soit, il rédige et vous montre un plan de ce qu’il va faire.

Auto

Avance tout seul

Au lieu de demander une approbation, un classifieur (un mécanisme de contrôle de sécurité) examine chaque action et poursuit. Il n’apparaît que si votre organisation l’autorise et que le modèle sélectionné le prend en charge.

Je voulais qu’il continue à travailler sans moi, je suis donc passé en Auto. À noter : dans le cloud, vous ne pouvez pas choisir le mode qui saute toutes les vérifications (bypass permissions), et il est ignoré même s’il est défini dans le fichier de réglages du dépôt. Pour une comparaison détaillée de chaque mode, voir « Modes d’autorisation de Claude Code ».

5. Ce que ça a vraiment coûté : 226 $ pour une seule consigne

Une fois tout cela en place, j’ai lancé une session cloud avec le crédit à durée limitée du forfait Max (250 $). Dans le premier message, j’ai transmis le document de conception et les consignes, avec le mode d’autorisation sur Auto. Ensuite, je ne lui ai plus parlé une seule fois. En cours de route, j’ai consulté l’écran d’utilisation, j’ai été surpris par la vitesse à laquelle le crédit fondait, et je lui ai dit de s’arrêter. Au moment de l’arrêt, il me restait 24 $ de crédit. Si je ne l’avais pas arrêté, il aurait consommé la totalité des 250 $.

226 $

Crédit utilisé (sur 250 $, 24 $ restants)

676,7 k

Contexte à l’arrêt (68 % de 1 M)

86 %

Limite hebdomadaire du forfait utilisée (tous modèles)

Source : mon écran d’utilisation de Claude Code (4 octobre 2026, forfait Max 20x). Les 86 % de la limite hebdomadaire incluent l’utilisation hors cloud.

Voici, à partir d’une seule consigne, la quantité de travail que le cloud avait abattue au moment où je l’ai arrêté (d’après mon journal de travail).

SocleUn socle produit complet pour une application web (design, bascule japonais/anglais, formulaire de contact, notifications d’erreur, sitemap, fonctionnement hors ligne, etc.).
Fonctionnalités41 outils qui tournent dans le navigateur (texte, images, PDF, tableurs, etc.).
Tests695 tests unitaires et 142 tests d’interface. Tous au vert.
DiversVérification du build Docker, configuration de la CI, correction de 3 bugs liés à la production et un document de passation.

Pourquoi le crédit fond si vite

Le coût ne dépend pas du nombre de fois où vous lui parlez, mais du nombre de fois où Claude appelle le modèle et de la quantité de contexte qu’il lit à chaque fois. Quand il tourne en autonomie, chaque lecture de fichier, écriture de fichier et exécution de tests déclenche un appel ; il peut donc atteindre des centaines ou des milliers d’appels sans aucune conversation. La documentation officielle (Manage costs effectively) indique elle aussi que les coûts augmentent avec la taille du contexte.

Chaque appel relit tout le contexte accumulé jusque-là. Même avec le cache, les lectures ne sont pas gratuites : au prix de lecture en cache d’Opus 5.5 (0,20 $ par million de jetons), lire 500 000 jetons une fois coûte environ 0,10 $. Répétez cela 1 000 fois et vous arrivez à environ 100 $ (c’est un exemple que j’ai calculé à partir du prix unitaire ; je n’ai pas vérifié le nombre réel d’appels ni la répartition par modèle pour cette session). Le code et les tests qu’il écrit sont comptés à part, au prix de la sortie.

D’après ce que j’ai pu trouver dans la documentation officielle, il n’existe aucun réglage pour plafonner les dépenses de crédit (--max-budget-usd ne s’applique qu’aux exécutions non interactives, et la limite de dépense mensuelle concerne les crédits d’utilisation payés à l’usage). Les seuls moyens de fixer un point d’arrêt sont de l’écrire dans vos consignes ou de l’arrêter vous-même. Par ailleurs, une fois le crédit épuisé, les sessions cloud puisent dans la limite hebdomadaire de votre forfait, comme en local. Si vous lancez une tâche de la même ampleur alors qu’il vous reste peu de limite hebdomadaire, vous atteindrez la limite, Claude Code en local compris.

La répartition : relectures et sous-agents

Après l’arrêt, j’ai ouvert la répartition détaillée sur l’écran d’utilisation (ces chiffres couvrent toute la session, y compris le résumé que je lui ai fait rédiger après l’arrêt).

8 h 33 min

Temps de travail du modèle (j’ai été aux commandes 2 min 24 s)

99 %

Part d’Opus (Sonnet 1 %)

63 %

Part des sous-agents (general-purpose 34 %, Agent 29 %)

Source : la vue par session de mon écran d’utilisation de Claude Code (4 octobre 2026). Coût affiché : 231,09 $.

Lectures en cache242,5 millions de jetons. C’est la relecture de la conversation accumulée, et cela représente presque tous les jetons. Taux de succès du cache : 99 %.
Écritures en cache1,4 million de jetons.
Entrée et sortie1 200 jetons en entrée et 10 700 jetons en sortie (tels qu’affichés sur la ligne Opus 5.5 de l’écran).
Conseil affiché à l’écranEn substance : chaque sous-agent exécute ses propres requêtes ; envisagez un modèle moins coûteux pour les sous-agents simples, ou resserrez leurs prompts.

Je n’ai été aux commandes que 2 minutes 24 secondes ; pendant les plus de 8 heures restantes, Claude a travaillé seul. Pendant tout ce temps, la conversation principale sur Opus et les sous-agents, eux aussi sur Opus, relisaient encore et encore une conversation de plus en plus longue. Quand j’ai demandé à la session cloud de faire le décompte, elle a indiqué qu’achever un outil prenait environ 30 actions pour un sous-agent Sonnet et de 130 à 230 actions pour un sous-agent Opus (c’est le décompte de la session elle-même ; je ne les ai pas vérifiés un par un).

Le coût affiché à l’écran (231,09 $) était presque identique à la baisse du crédit au moment où j’ai ouvert cet écran (250 $ → 18 $, soit 232 $). Il me restait 24 $ quand j’ai arrêté la session ; j’ai ouvert cet écran ensuite, et le solde avait encore un peu baissé entre-temps. D’après la documentation officielle, le coût affiché sur cet écran est une estimation fondée sur le nombre de jetons multiplié par les prix catalogue. On peut donc, semble-t-il, supposer sans grand risque que le crédit est décompté aux prix catalogue de l’API (la documentation officielle ne l’indique pas explicitement).

Si vous ne précisez pas de modèle, les sous-agents utilisent le même modèle que la conversation principale (documentation officielle : « Create custom subagents »). Avec Opus comme modèle principal, même le travail de masse finit par tourner sur Opus.

Comment réduire les coûts (par ordre d’impact)

  • 1. Faire tourner les sous-agents sur Sonnet Écrivez « run subagents with model: sonnet » dans vos consignes. Vous pouvez aussi changer la valeur par défaut avec la variable d’environnement CLAUDE_CODE_SUBAGENT_MODEL (ce n’est pas un secret, on peut donc la mettre dans l’environnement).
  • 2. Garder des conversations courtes (/compact ou une nouvelle session) Plus la conversation est courte, moins chaque action coûte. Si vous restez sur le même sujet, résumer avec /compact la raccourcit sans changer de session (vous pouvez préciser ce qu’il faut garder, par exemple « garde les résultats des tests »). Quand le sujet change, ou quand vous reprenez après une longue pause, démarrez une nouvelle session. Si vous lui faites consigner l’avancement dans un document de passation, rien n’est perdu quand vous découpez le travail.
  • 3. Fixer un point d’arrêt dès le départ Écrivez par exemple « arrête-toi et fais le point une fois le socle terminé » ou « arrête-toi et fais le point vers 50 $ » (il n’existe pas de réglage de plafond de dépenses, servez-vous donc des consignes pour poser des limites).
  • 4. Déléguer aussi le travail d’intégration Laissez les sous-agents s’occuper des tests, des commits et des pushs, pour que moins de travail se fasse dans la conversation principale, longue et coûteuse.
  • 5. Alléger les vérifications Ne lancez les tests d’interface que pour les outils qui viennent d’être construits, et la suite de tests complète une fois avant la fusion. Prenez des captures d’écran une fois par outil en largeur ordinateur et une fois en largeur téléphone.
  • 6. Arrêter tout de suite le travail inutile Un sous-agent arrêté en cours de route ne laisse aucun résultat, et ce qu’il a consommé n’est pas remboursé.

En règle générale, faites-en tourner 2 à 3 en parallèle. D’après l’évaluation de la session cloud elle-même, réduire le parallélisme ne fait qu’allonger la durée sans beaucoup changer le coût total. Plus que le nombre de tâches en parallèle, ce qui compte, c’est de garder chaque conversation courte et chaque consigne précise.

En m’appuyant sur la documentation officielle, voici comment je choisis entre /compact et une nouvelle session. /compact relit toute la conversation pour produire un résumé, mais tant que le cache est encore chaud, une grande partie de cette relecture provient du cache ; ce n’est donc pas aussi cher que la taille de la conversation pourrait le laisser croire (« Prompt caching »). Après une longue période d’inactivité, une fois le cache expiré, tout est relu sans cache, ce qui coûte cher. Une nouvelle session, à l’inverse, ne coûte rien mais ne reprend pas ce qui précède (« Manage costs effectively »). Les résumés peuvent perdre des détails ; il est donc plus sûr de faire d’abord consigner dans un document tout ce que vous voulez garder. À noter : dans les sessions cloud, /compact fonctionne mais pas /clear ; on démarre une nouvelle session depuis la barre latérale (« Claude Code on the web »).

Voici le type de message que je colle au début de la session suivante (nom du projet masqué).

Reprends là où tu t’étais arrêté.
Lis CLAUDE.md → docs/HANDOFF.md → docs/TODO.md et respecte les règles.
Sujet de cette session : XX
Fais tourner les sous-agents avec model: sonnet, 2 à 3 en parallèle au maximum.
Arrête-toi et fais le point quand tu atteins un budget de XX $. Fais ton compte rendu en français.

Pour le résumé du contexte dans les sessions cloud, le cloud définit lui-même la variable d’environnement CLAUDE_AUTOCOMPACT_PCT_OVERRIDE ; l’ajouter à votre environnement n’a donc aucun effet. Pour déclencher le résumé plus tôt, utilisez CLAUDE_CODE_AUTO_COMPACT_WINDOW ou /autocompact, comme le conseille la documentation officielle.

6. Liste de vérification avant de commencer

  • Compte GitHub Le compte connecté à claude.ai est-il bien celui que vous voulez utiliser ?
  • Étendue de l’App L’avez-vous installée uniquement sur les dépôts nécessaires, avec « Only select repositories » ?
  • Historique Des secrets commités par le passé traînent-ils encore dans l’historique du dépôt ?
  • Environnement En avez-vous créé un nouveau pour ce projet ? Ses variables d’environnement sont-elles exemptes de secrets ?
  • Production Avez-vous évité de créer le moindre chemin du cloud ou de GitHub vers la production (la production fait-elle des pulls) ?
  • Règles Avez-vous mis les règles que vous réutilisez dans le CLAUDE.md du dépôt ?
  • Mode d’autorisation Avez-vous choisi Auto pour le laisser avancer, ou Accept edits pour valider chaque étape ?

Résumé

Utiliser les sessions cloud tout en protégeant la production se résume à trois points : le cloud ne touche qu’un seul dépôt GitHub, la production en fait des pulls avec une clé en lecture seule, et c’est un humain qui lance le déploiement. Vous pouvez démarrer sans GitHub, mais le dépôt est envoyé avec l’historique de toutes les branches, et sous Windows, les modifications non commitées des fichiers suivis sont envoyées quel que soit leur nom.

Là où j’ai réellement bloqué : un autre compte GitHub était connecté, l’étendue de l’App, un ancien environnement resté en place, des fichiers locaux invisibles, et « Accept edits » qui s’arrête à chaque commande. La liste de vérification ci-dessus permet d’éviter tout cela.

Côté coût, une seule consigne exécutée en autonomie a consommé 226 $ du crédit à durée limitée avant que je lui dise de s’arrêter en cours de route. Le coût ne dépend pas du nombre de fois où vous lui parlez, mais du nombre d’appels et de la longueur du contexte. Dans la répartition, l’essentiel venait de la relecture de la conversation et des sous-agents tournant sur le même modèle que la conversation principale. Mettez les sous-agents sur Sonnet, gardez des conversations courtes avec /compact ou une nouvelle session, et écrivez un point d’arrêt dans vos consignes.

FAQ

Q. Puis-je essayer les sessions cloud sans GitHub ?

R. Oui. claude --cloud "task description" empaquette et envoie votre dépôt local. Il doit faire moins de 100 Mo et contenir au moins un commit. L’historique de toutes les branches est envoyé, et la documentation officielle ne décrit aucun moyen de renvoyer directement les résultats vers un dépôt hors GitHub.

Q. Des dépôts d’organisations où je n’ai pas installé l’App apparaissent dans la liste. Y a-t-il une fuite ?

R. Pas s’il s’agit de dépôts publics. Quand vous vous connectez via la GitHub App, les sessions cloud peuvent utiliser tous les dépôts publics ; ils apparaissent donc comme options. Les dépôts privés ne sont utilisables que là où l’App est installée.

Q. Puis-je mettre une clé d’API dans une variable d’environnement ?

R. Je ne le recommande pas. La documentation officielle avertit que toute personne qui utilise un environnement peut lire ses variables d’environnement, et déconseille d’y mettre des secrets. Avec Pro et Max, vous pouvez plutôt l’enregistrer sous « API credentials », dont la session ne peut pas lire la valeur.

Q. J’ai choisi « Accept edits », mais il s’arrête à chaque commande.

R. C’est voulu. Dans le cloud, les modifications sont autorisées dans tous les modes ; le mode par défaut apparaît donc sous le nom « Accept edits ». Pour laisser les commandes s’exécuter sans approbation, choisissez Auto (il n’apparaît que si votre organisation l’autorise et que le modèle le prend en charge).

Q. Pourquoi le crédit baisse-t-il autant alors que je ne lui parle même pas ?

R. Parce que le coût ne dépend pas du nombre de fois où vous parlez, mais du nombre de fois où Claude appelle le modèle et de la quantité de contexte qu’il lit à chaque fois. Quand il tourne en autonomie, chaque lecture de fichier, écriture de fichier et exécution de tests déclenche un appel, et le contexte ne cesse de grossir. Dans mon cas, une seule consigne a consommé 226 $ avant que je l’arrête en cours de route (section 5).

Q. Le crédit à durée limitée peut-il aussi servir à cela ?

R. Oui. Le crédit de Pro et Max (Pro 100 $, Max 250 $) s’applique automatiquement à l’utilisation des sessions cloud, et tant qu’il dure, cette utilisation n’est pas décomptée des limites d’utilisation de votre forfait. Vous pouvez le réclamer jusqu’au 7 octobre, heure du Pacifique (États-Unis), et il expire à la fin du 4 novembre (le 5 novembre à 16 h 59, heure du Japon). Il ne peut pas servir pour Projects, Routines, Remote Control, etc. Pour plus de détails, voir l’article d’aide officiel et « Que sont les sessions cloud de Claude Code ? »

Sources

Toutes les spécifications officielles ont été vérifiées par rapport au texte original le 4 octobre 2026. Le compte rendu de configuration provient d’un seul essai sur un seul de mes projets, et ce qu’affichent les écrans peut changer selon les versions et avec le temps.