SpyBara
Go Premium

Documentation 2026-09-18 23:58 UTC to 2026-09-19 23:57 UTC

12 files changed +456 −232. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02
Details

94| `id_token_signed_response_alg` | Non | Algorithme de signature id\_token attendu. Par défaut `RS256`. Définissez pour les IdPs qui signent avec ES256, PS256 ou EdDSA. |94| `id_token_signed_response_alg` | Non | Algorithme de signature id\_token attendu. Par défaut `RS256`. Définissez pour les IdPs qui signent avec ES256, PS256 ou EdDSA. |

95| `additional_authorized_parties` | Non | Valeurs `azp` supplémentaires à accepter au-delà de `client_id`, pour les flux de courtier Keycloak et d'échange de jetons |95| `additional_authorized_parties` | Non | Valeurs `azp` supplémentaires à accepter au-delà de `client_id`, pour les flux de courtier Keycloak et d'échange de jetons |

96| `discovery_url` | Non | Récupérer le document de découverte à partir de cette URL au lieu de le dériver de `issuer`, pour les IdPs derrière un proxy qui réécrit l'hôte émetteur. Le chemin doit contenir `/.well-known/`. |96| `discovery_url` | Non | Récupérer le document de découverte à partir de cette URL au lieu de le dériver de `issuer`, pour les IdPs derrière un proxy qui réécrit l'hôte émetteur. Le chemin doit contenir `/.well-known/`. |

97| `use_proxy` | Non | Envoyer les propres demandes IdP de la passerelle via le proxy de transfert dans `HTTPS_PROXY` ou `HTTP_PROXY`, en honorer `NO_PROXY`. Non défini ou `false`, ces demandes vont directement. Nécessite v2.1.227 ou ultérieur ; voir [Demandes IdP via un proxy de transfert](#idp-requests-through-a-forward-proxy) ci-dessous. |97| `use_proxy` | Non | Envoyer les propres demandes IdP de la passerelle via le proxy de transfert dans `HTTPS_PROXY` ou `HTTP_PROXY`, en honorer `NO_PROXY`. `false` garde ces demandes directes. Nécessite v2.1.227 ou ultérieur ; voir [Demandes IdP via un proxy de transfert](#idp-requests-through-a-forward-proxy) ci-dessous. |

98| `form_action_origins` | Non | Origines supplémentaires pour la directive `Content-Security-Policy: form-action` de la page `/device`. La passerelle autorise déjà `'self'` et l'origine du `authorization_endpoint` découverte, mais Chrome applique `form-action` à toute la chaîne de redirection. Si votre IdP redirige via un deuxième hôte, tel que Azure AD fédéré à ADFS, Okta hub-spoke ou un intercepteur SSO d'entreprise, listez chaque origine par laquelle la demande d'autorisation peut rediriger. |98| `form_action_origins` | Non | Origines supplémentaires pour la directive `Content-Security-Policy: form-action` de la page `/device`. La passerelle autorise déjà `'self'` et l'origine du `authorization_endpoint` découverte, mais Chrome applique `form-action` à toute la chaîne de redirection. Si votre IdP redirige via un deuxième hôte, tel que Azure AD fédéré à ADFS, Okta hub-spoke ou un intercepteur SSO d'entreprise, listez chaque origine par laquelle la demande d'autorisation peut rediriger. |

99| `ca_cert_pem` | Non | Le certificat CA PEM lui-même, pas un chemin vers un fichier. Il remplace le magasin de confiance système pour les demandes IdP uniquement. Pour charger un fichier monté, écrivez `${file:/etc/gateway/idp-ca.pem}`. Utilisez pour Keycloak ou Dex derrière une PKI d'entreprise. |99| `ca_cert_pem` | Non | Le certificat CA PEM lui-même, pas un chemin vers un fichier. Il remplace le magasin de confiance système pour les demandes IdP uniquement. Pour charger un fichier monté, écrivez `${file:/etc/gateway/idp-ca.pem}`. Utilisez pour Keycloak ou Dex derrière une PKI d'entreprise. |

100 100 


106 106 

107Avec `use_proxy: true`, le pod résout lui-même le nom d'hôte de chaque point de terminaison IdP et demande au proxy de `CONNECT` à l'adresse IP résolue, donc le proxy doit accepter `CONNECT` à l'adresse IP de chaque hôte que le document de découverte nomme, pas seulement l'émetteur. Utilisez une URL de proxy `http://`. `ca_cert_pem` et la [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) s'appliquent également sur le chemin proxifié.107Avec `use_proxy: true`, le pod résout lui-même le nom d'hôte de chaque point de terminaison IdP et demande au proxy de `CONNECT` à l'adresse IP résolue, donc le proxy doit accepter `CONNECT` à l'adresse IP de chaque hôte que le document de découverte nomme, pas seulement l'émetteur. Utilisez une URL de proxy `http://`. `ca_cert_pem` et la [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) s'appliquent également sur le chemin proxifié.

108 108 

109[Egress proxy uniquement](#proxy-only-egress) change les deux : pendant qu'il est actif, les demandes IdP suivent le proxy sauf si vous définissez `use_proxy: false`, et la passerelle remet au proxy chaque nom d'hôte IdP sans le résoudre d'abord.

110 

111<h4 id="proxy-only-egress">

112 Egress proxy uniquement

113</h4>

114 

115Définissez `CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1` dans l'environnement de la passerelle, à côté de `HTTPS_PROXY`, lorsque le pod atteint d'autres hôtes uniquement via ce proxy de transfert et ne peut pas résoudre les noms DNS publics lui-même, ou lorsque le proxy refuse `CONNECT` à une adresse IP. Nécessite v2.1.277 ou ultérieur. C'est une variable d'environnement plutôt qu'une clé `gateway.yaml` pour que rien dans le fichier de configuration ne puisse assouplir la vérification d'adresse de la passerelle.

116 

117```bash theme={null}

118export HTTPS_PROXY=http://proxy.corp.example.com:3128

119export NO_PROXY=

120export no_proxy=

121export CLAUDE_GATEWAY_PROXY_IS_EGRESS_BOUNDARY=1

122```

123 

124La passerelle enregistre une ligne `network:` au démarrage pendant que l'egress proxy uniquement est actif.

125 

126Chaque ligne ci-dessous est une classe de demande sortante sur une passerelle avec `HTTPS_PROXY` défini, par défaut et pendant que l'egress proxy uniquement est actif.

127 

128| Demande sortante | Par défaut | Egress proxy uniquement actif |

129| ------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |

130| Upstreams `provider: anthropic`, échange de jeton Workload Identity Federation, exports `telemetry.forward_to` | Résolus et vérifiés localement, puis `CONNECT` à l'adresse IP vérifiée via le proxy. Un collecteur de télémétrie listé dans `NO_PROXY` est atteint directement à la place | Nom d'hôte remis au proxy |

131| Découverte IdP, JWKS, jeton et userinfo | Direct sauf si [`oidc.use_proxy: true`](#idp-requests-through-a-forward-proxy), puis `CONNECT` à l'adresse IP vérifiée | Nom d'hôte remis au proxy, sauf si `oidc.use_proxy: false` garde un IdP interne direct |

132| Upstreams Amazon Bedrock, Claude Platform on AWS, Agent Platform de Google Cloud et Microsoft Foundry ; recherches de groupes Google | Nom d'hôte remis au proxy | Inchangé |

133 

134L'egress proxy uniquement reste désactivé sauf si l'environnement de la passerelle répond à ces trois conditions :

135 

136* `HTTPS_PROXY` ou `HTTP_PROXY` est défini.

137* `NO_PROXY` et `no_proxy` sont vides. Si votre plateforme injecte l'un ou l'autre dans les pods, définissez les deux sur une valeur vide sur le conteneur de la passerelle. Lister un collecteur de télémétrie dans `NO_PROXY` garde l'egress proxy uniquement désactivé.

138* `CLAUDE_GATEWAY_ALLOW_LOOPBACK` n'est pas activé. Un collecteur ou IdP sur la propre boucle locale du pod ne peut pas être combiné avec l'egress proxy uniquement, car une adresse loopback remise au proxy serait la propre boucle locale de l'hôte proxy, donc donnez à ces services une adresse que le proxy peut atteindre à la place. Pour la même raison, la passerelle refuse les noms de style `localhost` directement pendant que l'egress proxy uniquement est actif.

139 

140Lorsqu'une de ces conditions n'est pas remplie, la passerelle enregistre un avertissement au démarrage nommant la variable qui l'a arrêtée et garde le comportement par défaut.

141 

142Une fois que l'egress proxy uniquement est actif, autorisez chaque destination dans le proxy, y compris un collecteur interne et tout hôte configuré par adresse IP. Vous pouvez toujours garder un IdP interne direct avec [`oidc.use_proxy: false`](#idp-requests-through-a-forward-proxy).

143 

144<Warning>

145 Activez ceci uniquement lorsque la liste d'autorisation du proxy est au moins aussi stricte que la vérification propre de la passerelle. Le proxy doit refuser les points de terminaison de métadonnées cloud tels que `169.254.169.254` et `metadata.google.internal`, les adresses link-local et la propre boucle locale de l'hôte proxy, et il doit les refuser par l'adresse à laquelle un nom se résout, pas seulement par nom, car la passerelle ne capture plus un nom d'hôte qui se résout à l'un d'eux. Un proxy qui se connecte n'importe où où on lui demande supprime la [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) de la passerelle pour ces demandes.

146</Warning>

147 

109<h3 id="session">148<h3 id="session">

110 `session`149 `session`

111</h3>150</h3>


124Le bloc `store` pointe la passerelle vers sa base de données PostgreSQL, qui contient les subventions d'appareils et les compteurs de limite de débit.163Le bloc `store` pointe la passerelle vers sa base de données PostgreSQL, qui contient les subventions d'appareils et les compteurs de limite de débit.

125 164 

126| Champ | Requis | Description |165| Champ | Requis | Description |

127| ----------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |166| ------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

128| `postgres_url` | Oui | URL `postgres://` ou `postgresql://`. Requis : le rendez-vous de subvention d'appareil, où le rappel du navigateur écrit et le CLI d'interrogation lit, a besoin d'un état entre répliques. La passerelle exécute ses propres migrations de schéma au démarrage et à la mise à niveau, donc le rôle a besoin de droits pour créer et modifier les tables sur le schéma cible. Voir [Mises à jour](/docs/fr/claude-apps-gateway-deploy#upgrades) et [Postgres](/docs/fr/claude-apps-gateway-deploy#postgres). |167| `postgres_url` | Oui | URL `postgres://` ou `postgresql://`. Requis : le rendez-vous de subvention d'appareil, où le rappel du navigateur écrit et le CLI d'interrogation lit, a besoin d'un état entre répliques. La passerelle exécute ses propres migrations de schéma au démarrage et à la mise à niveau, donc le rôle a besoin de droits pour créer et modifier les tables sur le schéma cible. Voir [Mises à jour](/docs/fr/claude-apps-gateway-deploy#upgrades) et [Postgres](/docs/fr/claude-apps-gateway-deploy#postgres). |

129| `username` | Non | Remplace l'utilisateur dans `postgres_url` |168| `username` | Non | Remplace l'utilisateur dans `postgres_url` |

130| `password` | Non | Identifiant de base de données. Définissez-le ici plutôt que dans `postgres_url` pour que l'identifiant reste hors de l'URL. Accepte n'importe quel caractère et prend la priorité sur les identifiants d'URL. |169| `password` | Non | Identifiant de base de données. Définissez-le ici plutôt que dans `postgres_url` pour que l'identifiant reste hors de l'URL. Accepte n'importe quel caractère et prend la priorité sur les identifiants d'URL. |

131| `max_connections` | Non | Taille du pool de connexions Postgres par réplique. Par défaut `5`, ce qui est conservateur et convivial pour les bases de données partagées. Avec les [limites de dépenses](#admin) activées, le chemin chaud effectue quelques opérations par demande d'inférence, donc augmentez-le pour une base de données dédiée sous charge, et gardez les répliques × ceci en dessous du `max_connections` de la base de données. |170| `max_connections` | Non | Taille du pool de connexions Postgres par réplique. Par défaut `5`, ce qui est conservateur et convivial pour les bases de données partagées. Avec les [limites de dépenses](#admin) activées, le chemin chaud effectue quelques opérations par demande d'inférence, donc augmentez-le pour une base de données dédiée sous charge, et gardez les répliques × ceci en dessous du `max_connections` de la base de données. |

171| `connect_timeout_seconds` | Non | Secondes que la passerelle attend lorsqu'elle ouvre une connexion Postgres. Un nombre entier de `1` à `60`, par défaut `5`. Augmentez-le si les tentatives de connexion expirent lorsqu'une nouvelle instance de passerelle démarre. Nécessite Claude Code v2.1.274 ou ultérieur sur le serveur de la passerelle. Les versions antérieures refusent de démarrer lorsque la clé est définie. |

132 172 

133Pour le développement local, pointez `postgres_url` sur un conteneur Postgres jetable, par exemple `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.173Pour le développement local, pointez `postgres_url` sur un conteneur Postgres jetable, par exemple `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`.

134 174 


365| ACI / App Service | Activez l'identité gérée affectée par le système ou l'utilisateur sur la ressource. `use_azure_ad: true` le récupère. |405| ACI / App Service | Activez l'identité gérée affectée par le système ou l'utilisateur sur la ressource. `use_azure_ad: true` le récupère. |

366| N'importe où ailleurs | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Citez `${…}` à l'intérieur de `{ }`. |406| N'importe où ailleurs | `auth: { api_key: "${FOUNDRY_API_KEY}" }`. Citez `${…}` à l'intérieur de `{ }`. |

367 407 

408<h4 id="static-headers-on-upstream-requests">

409 En-têtes statiques sur les demandes d'upstream

410</h4>

411 

412Pour ajouter des en-têtes fixes aux demandes que la passerelle envoie à un upstream, définissez `headers:` sur cet upstream. Utilisez-le lorsqu'un proxy que vous exécutez devant le fournisseur route ou attribue le trafic par un en-tête.

413 

414`headers:` nécessite Claude Code v2.1.277 ou ultérieur sur le serveur de la passerelle. Une passerelle antérieure refuse de démarrer lorsqu'elle trouve la clé. Mettez à niveau chaque réplique avant d'ajouter la clé, et supprimez la clé avant de revenir à une version antérieure.

415 

416Les en-têtes vont au serveur que `base_url` nomme, ou au point de terminaison propre du fournisseur lorsque `base_url` n'est pas défini. Le fournisseur les reçoit également sauf si votre proxy les supprime.

417 

418Cet exemple atteint un upstream `provider: vertex` via un proxy à `upstream-proxy.internal.example.com`. Il définit l'en-tête `x-source` que le proxy lit, et envoie un jeton de la variable d'environnement `PROXY_TOKEN` en tant que `x-proxy-token` :

419 

420```yaml theme={null}

421upstreams:

422 - provider: vertex

423 region: us-east5

424 project_id: example-prod

425 base_url: https://upstream-proxy.internal.example.com

426 auth: {}

427 headers:

428 x-source: claude-apps-gateway

429 x-proxy-token: ${PROXY_TOKEN}

430```

431 

432Les valeurs sont du texte ASCII imprimable sans espace à chaque extrémité. Citez un nombre, `true` ou `false` pour que YAML le lise comme du texte.

433 

434Pour garder un secret hors du fichier de configuration, utilisez [l'expansion de secret](#secret-expansion) pour charger la valeur à partir d'une variable d'environnement avec `${VAR}` ou à partir d'un fichier avec `${file:/path}`. Un `${VAR}` qui se résout à une valeur vide arrête le démarrage de la passerelle.

435 

436`headers:` fonctionne sur chaque fournisseur, et chaque upstream envoie uniquement le sien.

437 

438Pas chaque demande que la passerelle envoie à un upstream les porte :

439 

440| Demande que la passerelle envoie à cet upstream | Porte `headers:` |

441| ---------------------------------------------------------------------------------- | --------------------------------------------- |

442| `/v1/messages`, streaming ou non, et `/v1/messages/count_tokens` | Oui |

443| Une demande qui a basculé à partir d'un autre upstream | Oui, uniquement le `headers:` de cet upstream |

444| L'appel `CountTokens` d'Amazon Bedrock pour une demande que le client a abandonnée | Non |

445| L'échange de jeton Workload Identity Federation | Non |

446 

447Sur un upstream Amazon Bedrock ou Claude Platform on AWS qui signe les demandes avec AWS SigV4, ces en-têtes font partie de la signature, donc votre proxy doit les transmettre inchangés.

448 

449Si vous utilisez un nom que la passerelle réserve, elle refuse de démarrer, et l'erreur de démarrage nomme l'en-tête. Les noms réservés incluent :

450 

451* `authorization` et `x-api-key`

452* `host`, `content-type` et `user-agent`

453* Tout nom commençant par `anthropic-`, `x-goog-`, `x-amz-` ou `x-amzn-`

454 

368<h4 id="multiple-upstreams">455<h4 id="multiple-upstreams">

369 Plusieurs upstreams456 Plusieurs upstreams

370</h4>457</h4>


375 462 

376`429` est la capacité par upstream, donc l'épuisement du débit provisionné (PT) bascule vers la demande. Si vous définissez [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run) sur un upstream, un `429` à une demande qui portait l'e-mail du développeur est un déni par utilisateur au lieu et ne bascule pas.463`429` est la capacité par upstream, donc l'épuisement du débit provisionné (PT) bascule vers la demande. Si vous définissez [`forward_user_identity: true`](#per-user-identity-headers-for-a-proxy-you-run) sur un upstream, un `429` à une demande qui portait l'e-mail du développeur est un déni par utilisateur au lieu et ne bascule pas.

377 464 

465Chaque demande commence au premier upstream. Une demande atteint un upstream ultérieur uniquement lorsque chaque upstream devant lui a échoué ou ne sert pas le modèle demandé.

466 

467La passerelle ne garde aucun enregistrement des upstreams défaillants, donc pendant qu'un upstream est en panne, chaque demande qui l'atteint l'essaie toujours et attend qu'il échoue avant de passer au suivant.

468 

469Pour un upstream Anthropic API, [`timeouts.upstream_ttfb_ms`](#http-tuning) limite l'attente sur un upstream en panne. Ce paramètre ne s'applique pas aux autres fournisseurs, où la passerelle attend jusqu'à une heure pour qu'un upstream commence à répondre.

470 

378`404` est la disponibilité du modèle par upstream, donc un upstream qui n'a pas activé un modèle ne bloque pas un upstream ultérieur qui le sert. Un upstream qui ne peut pas résoudre le modèle demandé est ignoré sans un aller-retour réseau.471`404` est la disponibilité du modèle par upstream, donc un upstream qui n'a pas activé un modèle ne bloque pas un upstream ultérieur qui le sert. Un upstream qui ne peut pas résoudre le modèle demandé est ignoré sans un aller-retour réseau.

379 472 

380Cet exemple route une allocation Bedrock de débit provisionné en premier, déborde vers la demande et un deuxième compte, et revient à l'API Anthropic en dernier :473Cet exemple route une allocation Bedrock de débit provisionné en premier, déborde vers la demande et un deuxième compte, et revient à l'API Anthropic en dernier :


435 `admin`528 `admin`

436</h3>529</h3>

437 530 

438Optionnel. Active `/v1/organizations/spend_limits`, qui reflète l'API Admin publique d'Anthropic, et l'application des dépenses par développeur sur `/v1/messages`. Consultez [Limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) pour savoir comment les plafonds sont définis et appliqués ; cette section couvre les clés `gateway.yaml` qui activent la fonctionnalité et l'ajustent.531Optionnel. Active `/v1/organizations/spend_limits`, qui reflète l'API Admin publique d'Anthropic, et l'application des limites de dépenses par développeur sur `/v1/messages`. Consultez [Limites de dépenses](/docs/fr/claude-apps-gateway-spend-limits) pour savoir comment les plafonds sont définis et appliqués ; cette section couvre les clés `gateway.yaml` qui activent la fonctionnalité et l'ajustent.

439 532 

440```yaml theme={null}533```yaml theme={null}

441admin:534admin:

442 # Clés API statiques nommées pour les points de terminaison admin, envoyées en tant que x-api-key.535 # Clés API statiques nommées pour les points de terminaison admin, envoyées en tant que x-api-key.

443 # L'id apparaît dans le journal d'audit en tant que admin-key:<id> afin que chaque clé soit536 # L'id apparaît dans le journal d'audit en tant que admin-key:<id> afin que chaque clé soit

444 # attribuable. Tableau pour la rotation : ajoutez la nouvelle clé, déployez les clients,537 # attribuable. Tableau pour la rotation : ajoutez la nouvelle clé, mettez à jour les clients,

445 # supprimez l'ancienne.538 # supprimez l'ancienne.

446 write_keys:539 write_keys:

447 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }540 - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }


456| Champ | Requis | Description |549| Champ | Requis | Description |

457| ------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |550| ------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

458| `write_keys` | Non | Tableau de `{id, key}`. Une `x-api-key` correspondant à l'une de ces clés peut lister, définir et supprimer les limites de dépenses. Les valeurs de clé doivent comporter au moins 32 caractères ; les `id` doivent être uniques dans `read_keys` et `write_keys`. |551| `write_keys` | Non | Tableau de `{id, key}`. Une `x-api-key` correspondant à l'une de ces clés peut lister, définir et supprimer les limites de dépenses. Les valeurs de clé doivent comporter au moins 32 caractères ; les `id` doivent être uniques dans `read_keys` et `write_keys`. |

459| `read_keys` | Non | Tableau de `{id, key}`. Lecture seule : tous les points de terminaison `GET`, y compris le listage des plafonds, la récupération d'un par ID, et la lecture de [`/effective`](/docs/fr/claude-apps-gateway-spend-limits#%2Feffective) et [`/audit`](/docs/fr/claude-apps-gateway-spend-limits#%2Faudit). |552| `read_keys` | Non | Tableau de `{id, key}`. Lecture seule : tous les points de terminaison `GET`, y compris la liste des plafonds, la récupération d'un par ID, et la lecture de [`/effective`](/docs/fr/claude-apps-gateway-spend-limits#%2Feffective) et [`/audit`](/docs/fr/claude-apps-gateway-spend-limits#%2Faudit). |

460| `admin_groups` | Non | Noms de groupes IdP. Un JWT de passerelle dont la revendication `groups` inclut l'un de ces groupes dispose d'un accès admin complet, lecture et écriture, et effectue un audit en tant que `oidc:<sub>`. Utilisez ceci pour les administrateurs humains ; utilisez les clés API pour les machines. Une entrée vide dans cette liste arrête la passerelle au démarrage. Consultez [Valeurs de correspondance qui arrêtent la passerelle au démarrage](#matcher-values-that-stop-the-gateway-at-boot). |553| `admin_groups` | Non | Noms de groupes IdP. Un JWT de passerelle dont la revendication `groups` inclut l'un de ces groupes dispose d'un accès admin complet, lecture et écriture, et effectue un audit en tant que `oidc:<sub>`. Utilisez ceci pour les administrateurs humains ; utilisez les clés API pour les machines. Une entrée vide dans cette liste arrête la passerelle au démarrage. Consultez [Valeurs de correspondance qui arrêtent la passerelle au démarrage](#matcher-values-that-stop-the-gateway-at-boot). |

461| `blocked_message` | Non | Ajouté textuellement à l'erreur `429 billing_error` qu'un développeur bloqué voit. Écrivez l'instruction complète, comme une URL ou un canal Slack. Lorsqu'il n'est pas défini, la passerelle envoie uniquement le message par défaut. Consultez [Comment l'application fonctionne](/docs/fr/claude-apps-gateway-spend-limits#how-enforcement-works). |554| `blocked_message` | Non | Ajouté textuellement à l'erreur `429 billing_error` qu'un développeur bloqué voit. Écrivez l'instruction complète, comme une URL ou un canal Slack. Lorsqu'il n'est pas défini, la passerelle envoie uniquement le message par défaut. Consultez [Comment l'application fonctionne](/docs/fr/claude-apps-gateway-spend-limits#how-enforcement-works). |

462| `audit_retention_days` | Non | Par défaut `365`. Les lignes `admin_audit` plus anciennes sont supprimées. |555| `audit_retention_days` | Non | Par défaut `365`. Les lignes `admin_audit` plus anciennes sont supprimées. |


471Le bloc `enforcement` contrôle le comportement des vérifications de limite de dépenses lorsque le magasin est indisponible.564Le bloc `enforcement` contrôle le comportement des vérifications de limite de dépenses lorsque le magasin est indisponible.

472 565 

473| Champ | Requis | Description |566| Champ | Requis | Description |

474| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |567| ---------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

475| `fail_closed_on_error` | Non | Par défaut `false`. L'application des limites de dépenses échoue ouvertement en cas de panne Postgres, afin que l'inférence reste active. Définissez `true` pour échouer fermé : les développeurs au-delà du plafond sont bloqués, mais tout le monde l'est aussi si le magasin est inaccessible. Nécessite un bloc [`admin:`](#admin) : l'application des limites de dépenses ne s'exécute que lorsque `admin` est configuré, et la passerelle refuse de démarrer si vous définissez ceci à `true` sans un. |568| `fail_closed_on_error` | Non | Par défaut `false`. L'application des limites de dépenses échoue de manière permissive en cas de panne Postgres, afin que l'inférence reste opérationnelle. Définissez `true` pour échouer de manière restrictive : les développeurs au-delà du plafond sont bloqués, mais tout le monde l'est aussi si le magasin est inaccessible. Nécessite un bloc [`admin:`](#admin) : l'application des limites de dépenses ne s'exécute que lorsque `admin` est configuré, et la passerelle refuse de démarrer si vous définissez ceci à `true` sans bloc. |

476 569 

477<h3 id="pricing">570<h3 id="pricing">

478 `pricing`571 `pricing`

479</h3>572</h3>

480 573 

481Le bloc `pricing` indique au compteur de dépenses ce qu'il faut facturer au lieu du prix catalogue USD, afin que les plafonds et [`/effective`](/docs/fr/claude-apps-gateway-spend-limits#%2Feffective) reflètent vos tarifs contractuels. Les montants restent en USD et restent une estimation, pas une facture. Deux conditions préalables :574Le bloc `pricing` indique au compteur de dépenses quoi facturer au lieu du prix catalogue USD, afin que les plafonds et [`/effective`](/docs/fr/claude-apps-gateway-spend-limits#%2Feffective) reflètent vos tarifs contractuels. Les montants restent en USD et restent une estimation, pas une facture. Deux conditions préalables :

482 575 

483* Claude Code v2.1.227 ou ultérieur sur le serveur de passerelle. Les versions antérieures rejettent la clé inconnue au démarrage.576* Claude Code v2.1.227 ou ultérieur sur le serveur de passerelle. Les versions antérieures rejettent la clé inconnue au démarrage.

484* Un bloc [`admin:`](#admin) ou, dans v2.1.268 ou ultérieur, un bloc [`managed:`](#managed) avec au moins une politique. La passerelle refuse de démarrer avec `pricing` défini et aucun bloc, car rien ne le lirait.577* Un bloc [`admin:`](#admin) ou, dans v2.1.268 ou ultérieur, un bloc [`managed:`](#managed) avec au moins une politique. La passerelle refuse de démarrer avec `pricing` défini et aucun bloc, car rien ne le lirait.


502 595 

503Comment le compteur correspond à une ligne de remplacement :596Comment le compteur correspond à une ligne de remplacement :

504 597 

505* Une ligne remplace le prix catalogue pour les demandes que `upstream`, un [`upstreams[].name`](#upstreams), traite pour `model`. Cela inclut le tarif [mode rapide](/docs/fr/fast-mode#understand-the-cost-tradeoff) plus élevé, donc les demandes en mode rapide et standard sont mesurées aux mêmes quatre tarifs.598* Une ligne remplace le prix catalogue pour les demandes que `upstream`, un [`upstreams[].name`](#upstreams), traite pour `model`. Cela inclut le tarif [mode rapide](/docs/fr/fast-mode#understand-the-cost-tradeoff) plus élevé, afin que les demandes en mode rapide et standard soient mesurées aux mêmes quatre tarifs.

506* Un ID intégré tel que `claude-sonnet-4-6`, correspondant comme [`models[].id`](#models), couvre chaque forme datée, forme Amazon Bedrock régionale, ou forme Google Cloud Agent Platform que le compteur évalue comme ce modèle. Toute autre chaîne, comme un alias ou un ARN de profil d'inférence, correspond à l'ID que le client a envoyé ou à la chaîne envoyée en amont, insensible à la casse.599* Un ID intégré tel que `claude-sonnet-4-6`, correspondant comme [`models[].id`](#models), couvre chaque forme datée, forme régionale Amazon Bedrock, ou forme Google Cloud Agent Platform que le compteur évalue comme ce modèle. Toute autre chaîne, comme un alias ou un ARN de profil d'inférence, correspond à l'ID que le client a envoyé ou à la chaîne envoyée en amont, insensible à la casse.

507* Lorsque les lignes se chevauchent, le compteur choisit la ligne la plus spécifique plutôt que la première ligne : une ligne dont `model` est la chaîne de modèle exacte envoyée en amont, puis une ligne correspondant à l'ID exact que le client a envoyé, puis une ligne nommant le modèle intégré.600* Lorsque les lignes se chevauchent, le compteur choisit la ligne la plus spécifique plutôt que la première ligne : une ligne dont `model` est la chaîne de modèle exacte envoyée en amont, puis une ligne correspondant à l'ID exact que le client a envoyé, puis une ligne nommant le modèle intégré.

508* Un nom d'upstream inconnu échoue au démarrage, tout comme deux lignes pour un upstream qui nomment le même modèle, y compris deux orthographes d'un modèle intégré. La passerelle avertit au démarrage à propos d'une ligne qu'aucun modèle demandable ne peut utiliser.601* Un nom d'amont inconnu échoue au démarrage, tout comme deux lignes pour un amont qui nomment le même modèle, y compris deux orthographes d'un modèle intégré. La passerelle avertit au démarrage à propos d'une ligne qu'aucun modèle demandable ne peut utiliser.

509* Les demandes de recherche Web restent au prix catalogue de \$0,01 ; le multiplicateur s'y applique toujours.602* Les demandes de recherche Web restent au prix catalogue de \$0,01 ; le multiplicateur s'y applique toujours.

510 603 

511Pour les tarifs par région, donnez à chaque région son propre upstream nommé et une ligne par upstream.604Pour les tarifs par région, donnez à chaque région son propre amont nommé et une ligne par amont.

512 605 

513<h4 id="mark-prices-up">606<h4 id="mark-prices-up">

514 Majorer les prix607 Majorer les prix

515</h4>608</h4>

516 609 

517Avec v2.1.271 ou ultérieur sur le serveur de passerelle, vous pouvez définir `multiplier` au-dessus de 1, jusqu'à 10, pour facturer plus que ce que le fournisseur facture, par exemple un tarif de rétrofacturation interne. Cet exemple facture chaque demande à 120 % du prix :610Avec v2.1.271 ou ultérieur sur le serveur de passerelle, vous pouvez définir `multiplier` au-dessus de 1, jusqu'à 10, pour mesurer plus que ce que le fournisseur facture, par exemple un tarif de rétrofacturation interne. Cet exemple mesure chaque demande à 120 % du prix :

518 611 

519```yaml theme={null}612```yaml theme={null}

520pricing:613pricing:


533 Envoyer les tarifs aux clients connectés626 Envoyer les tarifs aux clients connectés

534</h4>627</h4>

535 628 

536Avec v2.1.268 ou ultérieur sur le serveur de passerelle, la passerelle place également les tarifs de `pricing` dans les politiques [`managed`](#managed) qu'elle sert, en tant que paramètre géré [`modelPricing`](/docs/fr/settings-reference#modelpricing). Les développeurs correspondant à une politique voient alors les tarifs `pricing` pour le premier upstream qui sert chaque ID de modèle dans `/usage`, la ligne d'état et OpenTelemetry. Un développeur qui ne correspond à aucune politique ne reçoit aucun paramètre géré, donc ses chiffres restent au prix catalogue. Les clients appliquent le paramètre dans Claude Code v2.1.242 ou ultérieur.629Avec v2.1.268 ou ultérieur sur le serveur de passerelle, la passerelle place également les tarifs de `pricing` dans les politiques [`managed`](#managed) qu'elle sert, en tant que paramètre géré [`modelPricing`](/docs/fr/settings-reference#modelpricing). Les développeurs correspondant à une politique voient alors les tarifs `pricing` pour le premier amont qui sert chaque ID de modèle dans `/usage`, la ligne d'état et OpenTelemetry. Un développeur qui ne correspond à aucune politique ne reçoit aucun paramètre géré, afin que ses chiffres restent au prix catalogue. Les clients appliquent le paramètre dans Claude Code v2.1.242 ou ultérieur.

537 630 

538* Ce que la passerelle ajoute : à moins qu'un bloc `cli` de politique ne définisse déjà `modelPricing`, la passerelle ajoute le `multiplier` et, pour chaque ID de modèle qu'un client peut demander, la ligne de remplacement du premier upstream qui sert cet ID. Un tarif que seul un upstream de basculement facture reste sur la passerelle.631* Ce que la passerelle ajoute : à moins que le bloc `cli` d'une politique ne définisse déjà `modelPricing`, la passerelle ajoute le `multiplier` et, pour chaque ID de modèle qu'un client peut demander, la ligne de remplacement du premier amont qui sert cet ID. Un tarif que seul un amont de basculement facture reste sur la passerelle.

539* Exclure une politique : définissez `modelPricing` à `{}` dans le bloc `cli` de cette politique, et ses développeurs restent au prix catalogue.632* Exclure une politique : définissez `modelPricing` à `{}` dans le bloc `cli` de cette politique, et ses développeurs restent au prix catalogue.

540* Conserver les tarifs propres d'une politique : une politique dont le bloc `cli` définit `modelPricing` avec son propre `multiplier` ou `overrides` conserve ce `modelPricing` entièrement, et la passerelle n'ajoute aucun tarif qui lui est propre.633* Conserver les tarifs propres d'une politique : une politique dont le bloc `cli` définit `modelPricing` avec son propre `multiplier` ou `overrides` conserve ce `modelPricing` entièrement, et la passerelle n'ajoute aucun de ses propres tarifs à celui-ci.

541 634 

542<h3 id="models">635<h3 id="models">

543 `models`636 `models`

544</h3>637</h3>

545 638 

546Le bloc `models` est une liste de modèles optionnelle organisée par l'administrateur, servie à `/v1/models` et utilisée pour traduire les ID de modèles par upstream. Elle est obligatoire pour les régions Amazon Bedrock non-US, les ARN de débit provisionné Amazon Bedrock et les noms de déploiement Microsoft Foundry.639Le bloc `models` est une liste de modèles optionnelle organisée par l'administrateur, servie à `/v1/models` et utilisée pour traduire les ID de modèles par amont. Elle est obligatoire pour les régions Amazon Bedrock non-US, les ARN de débit provisionné Amazon Bedrock et les noms de déploiement Microsoft Foundry.

547 640 

548```yaml theme={null}641```yaml theme={null}

549auto_include_builtin_models: true # false: expose only the list below642auto_include_builtin_models: true # false: expose only the list below


557 foundry: your-opus-deployment-name650 foundry: your-opus-deployment-name

558```651```

559 652 

560Chaque clé sous `upstream_model` doit correspondre au `name` d'un upstream configuré, qui par défaut est le nom du fournisseur. Une clé qui ne correspond à aucun upstream échoue au démarrage, donc omettez les lignes pour les fournisseurs que vous n'utilisez pas.653Chaque clé sous `upstream_model` doit correspondre au `name` d'un amont configuré, qui par défaut est le nom du fournisseur. Une clé qui ne correspond à aucun amont échoue au démarrage, donc omettez les lignes pour les fournisseurs que vous n'utilisez pas.

561 654 

562<h3 id="managed">655<h3 id="managed">

563 `managed`656 `managed`

564</h3>657</h3>

565 658 

566Le bloc `managed` définit les politiques d'accès basées sur les rôles basées sur les groupes IdP ou le domaine de messagerie. Les politiques sont évaluées dans l'ordre ; la première correspondance est sélectionnée, puis fusionnée sur la base de capture-tout `match: {}` décrite ci-dessous. Elles sont servies par utilisateur à `GET /managed/settings` avec mise en cache ETag/304.659Le bloc `managed` définit les politiques d'accès basées sur les rôles basées sur les groupes IdP ou le domaine de messagerie. Les politiques sont évaluées dans l'ordre ; la première correspondance est sélectionnée, puis fusionnée sur la base de capture-tout `match: {}`. Elles sont servies par utilisateur à `GET /managed/settings` avec mise en cache ETag/304.

567 660 

568```yaml theme={null}661```yaml theme={null}

569managed:662managed:


579 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]672 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

580```673```

581 674 

582Une capture-tout `match: {}`, conventionnellement listée en dernier, est traitée comme une couche de base. Chaque autre politique hérite de toute clé qu'elle ne définit pas de la capture-tout, donc les entrées par rôle n'ont besoin que de lister ce qui diffère de la valeur par défaut de l'organisation. Les règles de fusion dépendent du type de clé :675Une capture-tout `match: {}`, conventionnellement listée en dernier, est traitée comme une couche de base. Chaque autre politique hérite de toute clé qu'elle ne définit pas de la capture-tout, afin que les entrées par rôle n'aient besoin de lister que ce qui diffère de la valeur par défaut de l'organisation. Les règles de fusion dépendent du type de clé :

583 676 

584* **Listes d'autorisation** : `availableModels` et `permissions.allow`. La liste d'une politique spécifique remplace entièrement celle de la base.677* **Listes d'autorisation** : `availableModels` et `permissions.allow`. La liste d'une politique spécifique remplace entièrement celle de la base.

585* **Listes de refus et tableaux de hooks** : `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` et chaque tableau d'événement de type `hooks`. Ceux-ci prennent l'union de la base et de la politique, afin qu'un refus à l'échelle de l'organisation ou un hook d'audit ne puisse pas être accidentellement supprimé par un remplacement par rôle.678* **Listes de refus et tableaux de hooks** : `permissions.deny`, `permissions.ask`, `disabledMcpjsonServers`, `deniedMcpServers`, `blockedMarketplaces` et chaque tableau d'événement de type `hooks`. Ceux-ci prennent l'union de la base et de la politique, afin qu'un refus à l'échelle de l'organisation ou un hook d'audit ne soit pas accidentellement supprimé par un remplacement par rôle.

586* **Clés de type enregistrement** : `env`, `modelOverrides` et `skillOverrides`. Ceux-ci fusionnent superficiellement, donc un bloc `env` par rôle remplace les clés qu'il définit et hérite du reste de la base.679* **Clés de type enregistrement** : `env`, `modelOverrides` et `skillOverrides`. Ceux-ci fusionnent superficiellement, afin qu'un bloc `env` par rôle remplace les clés qu'il définit et hérite du reste de la base.

587 680 

588`availableModels` est également appliqué côté serveur à `/v1/messages`, donc un modèle refusé retourne `400` indépendamment de ce que le client envoie.681`availableModels` est également appliqué côté serveur à `/v1/messages`, afin qu'un modèle refusé retourne `400` indépendamment de ce que le client envoie.

589 682 

590La passerelle valide la valeur `model` elle-même avant de relayer une demande, donc une valeur mal formée n'atteint jamais un upstream. Elle rejette la demande avec un `400` dans deux cas :683La passerelle valide la valeur `model` elle-même avant de relayer une demande, afin qu'une valeur mal formée n'atteigne jamais un amont. Elle rejette la demande avec un `400` dans deux cas :

591 684 

592* Lorsque la valeur est manquante ou vide, la passerelle rejette la demande avec le message `model is required`. Cette vérification nécessite une passerelle exécutant Claude Code v2.1.228 ou ultérieur.685* Lorsque la valeur est manquante ou vide, la passerelle rejette la demande avec le message `model is required`. Cette vérification nécessite une passerelle exécutant Claude Code v2.1.228 ou ultérieur.

593* Lorsque la valeur est présente mais n'est pas une chaîne, la passerelle rejette la demande avec le message `model must be a string`. Nécessite une passerelle exécutant Claude Code v2.1.221 ou ultérieur.686* Lorsque la valeur est présente mais n'est pas une chaîne, la passerelle rejette la demande avec le message `model must be a string`. Nécessite une passerelle exécutant Claude Code v2.1.221 ou ultérieur.


602Un utilisateur authentifié qui ne correspond à aucune politique obtient les valeurs par défaut de la passerelle, ce qui signifie chaque modèle du catalogue et aucun paramètre géré. Ajoutez une capture-tout `match: {}` en dernier si vous voulez une politique par défaut garantie.695Un utilisateur authentifié qui ne correspond à aucune politique obtient les valeurs par défaut de la passerelle, ce qui signifie chaque modèle du catalogue et aucun paramètre géré. Ajoutez une capture-tout `match: {}` en dernier si vous voulez une politique par défaut garantie.

603 696 

604<Note>697<Note>

605 La passerelle ne conserve aucun répertoire d'utilisateurs qui lui est propre. Elle autorise chaque demande à partir du jeton IdP de l'utilisateur, en lisant l'appartenance au groupe à partir de la revendication `groups` du jeton et en évaluant les politiques par rapport à celle-ci. Il n'y a pas de liste à énumérer et aucun compte à pré-créer, et donc aucun point de terminaison SCIM, car il n'y a rien pour que SCIM se synchronise.698 La passerelle ne conserve aucun répertoire d'utilisateurs propre. Elle autorise chaque demande à partir du jeton IdP de l'utilisateur, en lisant l'appartenance au groupe à partir de la revendication `groups` du jeton et en évaluant les politiques par rapport à celui-ci. Il n'y a pas de liste à énumérer et aucun compte à pré-créer, et donc aucun point de terminaison SCIM, car il n'y a rien pour que SCIM se synchronise.

606 699 

607 Exécutez la gestion du cycle de vie des utilisateurs et des groupes à la source de vérité, qui est l'approvisionnement SCIM natif de votre IdP ou une plateforme de gouvernance des identités dédiée. L'appartenance et la déprovision gouvernées là-bas s'écoulent dans la passerelle automatiquement via le jeton. Si vous voulez l'approvisionnement SCIM des comptes Claude eux-mêmes, c'est une capacité [Claude for Enterprise](/docs/fr/admin-setup).700 Exécutez la gestion du cycle de vie des utilisateurs et des groupes à la source de vérité, qui est le provisionnement SCIM natif de votre IdP ou une plateforme de gouvernance des identités dédiée. L'appartenance et la déprovision gouvernées là-bas s'écoulent dans la passerelle automatiquement via le jeton. Si vous voulez le provisionnement SCIM des comptes Claude eux-mêmes, c'est une capacité de [Claude for Enterprise](/docs/fr/admin-setup).

608 701 

609 Deux horloges de propagation s'appliquent :702 Deux horloges de propagation s'appliquent :

610 703 

611 * **Contenu de la politique** : modifier une politique et redéployer atteint les clients connectés lors de leur prochain sondage de paramètres gérés, dans une heure, à part les [modifications qui s'appliquent uniquement au prochain lancement](/docs/fr/server-managed-settings#fetch-and-caching-behavior)704 * **Contenu de la politique** : modifier une politique et redéployer atteint les clients connectés lors de leur prochain sondage de paramètres gérés, dans l'heure, à l'exception des [modifications qui s'appliquent uniquement au prochain lancement](/docs/fr/server-managed-settings#fetch-and-caching-behavior)

612 * **Appartenance au groupe** : modifier l'appartenance au groupe d'un utilisateur change la politique qui le correspond. Cela prend effet lors du prochain renouvellement de session, ce qui signifie le prochain rafraîchissement silencieux, limité par `session.ttl_hours`.705 * **Appartenance au groupe** : modifier l'appartenance au groupe d'un utilisateur change la politique qui le correspond. Cela prend effet lors de la prochaine réémission de session, ce qui signifie le prochain renouvellement silencieux, limité par `session.ttl_hours`.

613</Note>706</Note>

614 707 

615<h4 id="matcher-values-that-stop-the-gateway-at-boot">708<h4 id="matcher-values-that-stop-the-gateway-at-boot">

616 Valeurs de correspondance qui arrêtent la passerelle au démarrage709 Valeurs de correspondance qui arrêtent la passerelle au démarrage

617</h4>710</h4>

618 711 

619Au démarrage, la passerelle vérifie le bloc `match` de chaque politique et la liste [`admin_groups`](#admin). N'importe laquelle de ces valeurs arrête la passerelle avec une erreur qui nomme le champ :712Au démarrage, la passerelle vérifie le bloc `match` de chaque politique et la liste [`admin_groups`](#admin). L'une de ces valeurs arrête la passerelle avec une erreur qui nomme le champ :

620 713 

621* Une liste `groups` vide714* Une liste `groups` vide

622* Une entrée vide dans `groups` ou dans `admin_groups`715* Une entrée vide dans `groups` ou dans `admin_groups`

623* Un `email_domain` vide716* Un `email_domain` vide

624* Un `email_domain` qui contient `@`, un espace blanc ou une virgule. La passerelle coupe la valeur et supprime un `@` initial avant cette vérification. Écrivez un domaine nu, comme `example.com`.717* Un `email_domain` qui contient `@`, un espace ou une virgule. La passerelle supprime la valeur et enlève un `@` initial avant cette vérification. Écrivez un domaine nu, comme `example.com`.

625 718 

626Avant v2.1.232, la passerelle démarrait avec ces valeurs. Chaque valeur avait cet effet :719Avant v2.1.232, la passerelle démarrait avec ces valeurs. Chaque valeur avait cet effet :

627 720 

628* Un `email_domain` vide : la passerelle a ignoré la vérification du domaine, donc une politique avec un `email_domain` vide et aucune liste `groups` correspondait à chaque utilisateur authentifié721* Un `email_domain` vide : la passerelle a ignoré la vérification du domaine, afin qu'une politique avec un `email_domain` vide et aucune liste `groups` corresponde à chaque utilisateur authentifié

629* Une liste `groups` vide : la politique ne correspondait à personne722* Une liste `groups` vide : la politique ne correspondait à personne

630* Un `email_domain` contenant `@`, un espace blanc ou une virgule : la politique ne correspondait à personne723* Un `email_domain` contenant `@`, un espace ou une virgule : la politique ne correspondait à personne

631* Une entrée vide dans `groups` ou dans `admin_groups` : l'entrée correspondait à un utilisateur uniquement lorsque la revendication `groups` IdP de cet utilisateur contenait également une entrée vide. Dans `admin_groups`, cette correspondance accordait l'accès admin. Si votre liste `admin_groups` ne contenait jamais une entrée vide, personne n'a obtenu l'accès admin de cette façon.724* Une entrée vide dans `groups` ou dans `admin_groups` : l'entrée correspondait à un utilisateur uniquement lorsque la revendication `groups` IdP de cet utilisateur contenait également une entrée vide. Dans `admin_groups`, cette correspondance accordait l'accès admin. Si votre liste `admin_groups` ne contenait jamais une entrée vide, personne n'a obtenu l'accès admin de cette façon.

632 725 

633<h4 id="what-goes-in-cli">726<h4 id="what-goes-in-cli">


636 729 

637Chaque valeur `cli` est un document complet Claude Code `managed-settings.json`, le même schéma que vous déploieriez via MDM ou `/etc/claude-code/managed-settings.json`, exprimé ici en YAML. Le CLI applique le document livré au niveau géré, au-dessus des paramètres utilisateur et projet, à la place des paramètres gérés par le serveur. Il ignore donc les paramètres [restreints aux sources de politique au niveau du système d'exploitation](/docs/fr/server-managed-settings#current-limitations), comme `policyHelper` et `wslInheritsWindowsSettings`.730Chaque valeur `cli` est un document complet Claude Code `managed-settings.json`, le même schéma que vous déploieriez via MDM ou `/etc/claude-code/managed-settings.json`, exprimé ici en YAML. Le CLI applique le document livré au niveau géré, au-dessus des paramètres utilisateur et projet, à la place des paramètres gérés par le serveur. Il ignore donc les paramètres [restreints aux sources de politique au niveau du système d'exploitation](/docs/fr/server-managed-settings#current-limitations), comme `policyHelper` et `wslInheritsWindowsSettings`.

638 731 

639La passerelle valide chaque document par rapport au schéma des paramètres du CLI au démarrage, donc une clé de niveau supérieur non reconnue échoue au démarrage avec une erreur nommant chaque clé contrevenante. Les parties délibérément ouvertes du schéma acceptent toujours des valeurs arbitraires, car les clients plus récents peuvent reconnaître des entrées que le schéma de la passerelle ne reconnaît pas. Ces clés ouvertes sont `env`, `pluginConfigs` et les clés imbriquées sous `permissions`.732La passerelle valide chaque document par rapport au schéma de paramètres du CLI au démarrage, afin qu'une clé de niveau supérieur non reconnue échoue au démarrage avec une erreur nommant chaque clé contrevenante. Les parties délibérément ouvertes du schéma acceptent toujours des valeurs arbitraires, car les clients plus récents peuvent reconnaître des entrées que le schéma de la passerelle ne reconnaît pas. Ces clés ouvertes incluent `env`, `pluginConfigs` et les clés imbriquées sous `permissions`.

640 733 

641Parce que la validation utilise le schéma fourni avec la version installée de la passerelle, placer une clé de paramètres de niveau supérieur introduite par une version plus récente de Claude Code dans la configuration gérée nécessite de mettre à niveau la passerelle en premier. Testez une nouvelle politique sur un client avant de la déployer.734Parce que la validation utilise le schéma fourni avec la version installée de la passerelle, placer une clé de paramètres de niveau supérieur introduite par une version plus récente de Claude Code dans la configuration gérée nécessite de mettre à niveau la passerelle en premier. Testez une nouvelle politique sur un client avant de la déployer.

642 735 


647 policies:740 policies:

648 - match: {}741 - match: {}

649 cli:742 cli:

650 # Accès au modèle (également appliqué côté serveur à /v1/messages)743 # Model access (also enforced server-side at /v1/messages)

651 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]744 availableModels: [claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5]

652 745 

653 # Politique de permission746 # Permission policy

654 permissions:747 permissions:

655 deny:748 deny:

656 - "WebFetch"749 - "WebFetch"


659 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions752 disableBypassPermissionsMode: disable # blocks --dangerously-skip-permissions

660 allowManagedPermissionRulesOnly: true # ignore user/project permission rules753 allowManagedPermissionRulesOnly: true # ignore user/project permission rules

661 754 

662 # Environnement poussé dans le processus CLI. DISABLE_UPDATES bloque755 # Environment pushed into the CLI process. DISABLE_UPDATES blocks

663 # les mises à jour en arrière-plan et manuelles ; DISABLE_AUTOUPDATER arrête uniquement756 # background and manual updates; DISABLE_AUTOUPDATER stops only

664 # les mises à jour en arrière-plan.757 # background updates.

665 env:758 env:

666 DISABLE_UPDATES: "1" # pin versions via your own distribution759 DISABLE_UPDATES: "1" # pin versions via your own distribution

667 760 

668 # Hooks à l'échelle de l'organisation. Les commandes de hook s'exécutent sur les machines des développeurs, pas sur la761 # Org-wide hooks. Hook commands run on developer machines, not the

669 # passerelle, donc le chemin doit exister sur chaque système d'exploitation client dans la politique.762 # gateway, so the path must exist on every client OS in the policy.

670 hooks:763 hooks:

671 PostToolUse:764 PostToolUse:

672 - matcher: "Edit|Write"765 - matcher: "Edit|Write"


676 769 

677| Clé | Appliquée par | Effet |770| Clé | Appliquée par | Effet |

678| ------------------------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |771| ------------------------------------------ | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

679| `availableModels` | Passerelle + CLI | Liste d'autorisation des modèles. Également vérifiée à `/v1/messages`, donc un client corrigé ne peut pas la contourner. |772| `availableModels` | Passerelle + CLI | Liste d'autorisation des modèles. Également vérifiée à `/v1/messages`, afin qu'un client corrigé ne puisse pas la contourner. |

680| `permissions.allow` / `.deny` | CLI | Règles d'outils et de commandes. Consultez [Permissions](/docs/fr/permissions). |773| `permissions.allow` / `.deny` | CLI | Règles d'outils et de commandes. Consultez [Permissions](/docs/fr/permissions). |

681| `permissions.disableBypassPermissionsMode` | CLI | Définissez à `disable` pour bloquer [`bypassPermissions`](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode), le mode qui ignore les invites de permission, et l'indicateur `--dangerously-skip-permissions` |774| `permissions.disableBypassPermissionsMode` | CLI | Définissez à `disable` pour bloquer [`bypassPermissions`](/docs/fr/permission-modes#skip-all-checks-with-bypasspermissions-mode), le mode qui ignore les invites de permission, et l'indicateur `--dangerously-skip-permissions` |

682| `allowManagedPermissionRulesOnly` | CLI | Lorsque `true`, les paramètres gérés deviennent la seule source de paramètres des règles de permission. L'entrée [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) liste chaque source que Claude Code ignore ensuite. |775| `allowManagedPermissionRulesOnly` | CLI | Lorsque `true`, les paramètres gérés deviennent la seule source de paramètres des règles de permission. L'entrée [`allowManagedPermissionRulesOnly`](/docs/fr/settings-reference#allowmanagedpermissionrulesonly) liste chaque source que Claude Code ignore ensuite. |


684| `hooks` | CLI | [Hooks](/docs/fr/hooks) à l'échelle de l'organisation |777| `hooks` | CLI | [Hooks](/docs/fr/hooks) à l'échelle de l'organisation |

685| `managedMcpServers` | CLI | Serveurs MCP distants [fournis à chaque développeur correspondant](/docs/fr/managed-mcp#provide-servers-through-managed-settings) aux côtés des serveurs qu'ils ajoutent eux-mêmes, `http` et `sse` uniquement. Consultez [Serveurs MCP dans une politique](#mcp-servers-in-a-policy). Nécessite Claude Code v2.1.259 ou ultérieur sur le serveur de passerelle et sur les clients. Les clients antérieurs ignorent la clé. |778| `managedMcpServers` | CLI | Serveurs MCP distants [fournis à chaque développeur correspondant](/docs/fr/managed-mcp#provide-servers-through-managed-settings) aux côtés des serveurs qu'ils ajoutent eux-mêmes, `http` et `sse` uniquement. Consultez [Serveurs MCP dans une politique](#mcp-servers-in-a-policy). Nécessite Claude Code v2.1.259 ou ultérieur sur le serveur de passerelle et sur les clients. Les clients antérieurs ignorent la clé. |

686 779 

687Parce que ces paramètres arrivent sur le réseau, le CLI montre à chaque développeur une boîte de dialogue d'approbation de sécurité avant d'appliquer les paramètres listés ci-dessous :780Parce que ces paramètres arrivent sur le réseau, le CLI affiche à chaque développeur une boîte de dialogue d'approbation de sécurité avant d'appliquer les paramètres listés ci-dessous :

688 781 

689* `hooks`782* `hooks`

690* Variables `env` qui nécessitent l'approbation du développeur, comme les variables de proxy et d'URL de base783* Variables `env` qui nécessitent l'approbation du développeur, comme les variables de proxy et d'URL de base

691* Paramètres d'exécution de shell comme `apiKeyHelper` et `statusLine`784* Paramètres d'exécution de shell comme `apiKeyHelper` et `statusLine`

692* Les paramètres binaires du sandbox `sandbox.bwrapPath`, `sandbox.socatPath` et `sandbox.ripgrep`785* Les paramètres binaires du bac à sable `sandbox.bwrapPath`, `sandbox.socatPath` et `sandbox.ripgrep`

693* Les paramètres du sandbox qui interceptent le trafic, injectent des identifiants ou affaiblissent l'isolation, comme `sandbox.network.tlsTerminate` et les paramètres du port proxy. [Boîtes de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) les liste tous.786* Les paramètres du bac à sable qui interceptent le trafic, injectent des identifiants ou affaiblissent l'isolation, comme `sandbox.network.tlsTerminate` et les paramètres du port proxy. [Boîtes de dialogue d'approbation de sécurité](/docs/fr/server-managed-settings#security-approval-dialogs) les liste tous.

694 787 

695[Mémoire d'approbation](/docs/fr/server-managed-settings#approval-memory) couvre la durée d'une approbation et quand la boîte de dialogue apparaît à nouveau.788[Mémoire d'approbation](/docs/fr/server-managed-settings#approval-memory) couvre la durée d'une approbation et quand la boîte de dialogue apparaît à nouveau.

696 789 

697Claude Code applique certaines variables `env` livrées sans montrer la boîte de dialogue d'approbation au développeur, comme les paramètres de sélection de modèle et les limites numériques. D'autres variables livrées peuvent nécessiter l'approbation du développeur avant de prendre effet ; une valeur de proxy, d'URL de base ou `OTEL_EXPORTER_OTLP_ENDPOINT` non vide le fait toujours. Lorsqu'une variable livrée a besoin d'approbation, la boîte de dialogue la nomme.790Claude Code applique certaines variables `env` livrées sans afficher la boîte de dialogue d'approbation au développeur, comme les paramètres de sélection de modèle et les limites numériques. D'autres variables livrées peuvent nécessiter l'approbation du développeur avant de prendre effet ; une valeur de proxy, d'URL de base ou `OTEL_EXPORTER_OTLP_ENDPOINT` non vide le fait toujours. Lorsqu'une variable livrée a besoin d'approbation, la boîte de dialogue la nomme.

698 791 

699[Variables d'environnement et boîte de dialogue d'approbation](/docs/fr/server-managed-settings#environment-variables-and-the-approval-dialog) a les détails, y compris quatre bascules de confidentialité dont la valeur livrée décide si elles ont besoin d'approbation. Avant v2.1.218, Claude Code appliquait moins de variables sans demander au développeur, donc plus de variables livrées déclenchaient la boîte de dialogue.792[Variables d'environnement et boîte de dialogue d'approbation](/docs/fr/server-managed-settings#environment-variables-and-the-approval-dialog) a les détails, y compris quatre bascules de confidentialité dont la valeur livrée décide si elles ont besoin d'approbation. Avant v2.1.218, Claude Code appliquait moins de variables sans demander au développeur, afin que plus de variables livrées déclenchent la boîte de dialogue.

700 793 

701La configuration [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, donc définir `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur d'une passerelle compromise ou hostile, pas l'organisation du développeur.794La configuration de [télémétrie](#telemetry) de la passerelle pousse `OTEL_EXPORTER_OTLP_ENDPOINT`, afin que la définition de `telemetry.forward_to` déclenche la boîte de dialogue sur chaque client interactif. La boîte de dialogue protège la machine du développeur d'une passerelle compromise ou hostile, pas l'organisation du développeur.

702 795 

703Une exécution non interactive avec l'indicateur `-p` ne peut pas montrer la boîte de dialogue. Elle applique les paramètres poussés pour cette exécution uniquement et ne les enregistre pas comme approuvés, donc la prochaine session interactive du développeur montre toujours la boîte de dialogue pour eux. Avant v2.1.207, une exécution non interactive enregistrait les paramètres comme approuvés et aucune session interactive ultérieure ne montrait la boîte de dialogue pour eux.796Une exécution non interactive avec l'indicateur `-p` ne peut pas afficher la boîte de dialogue. Elle applique les paramètres poussés pour cette exécution uniquement et ne les enregistre pas comme approuvés, afin que la prochaine session interactive du développeur affiche toujours la boîte de dialogue pour eux. Avant v2.1.207, une exécution non interactive enregistrait les paramètres comme approuvés et aucune session interactive ultérieure n'affichait la boîte de dialogue pour eux.

704 797 

705Si un développeur refuse, Claude Code quitte cette session plutôt que d'appliquer la politique. Lorsque vous poussez un nouveau hook, ou toute variable env qui déclenche la boîte de dialogue, à une politique large, Claude Code montre donc la boîte de dialogue à chaque développeur correspondant. Il montre la boîte de dialogue dans une session en cours lors du prochain sondage horaire, et sinon au prochain démarrage du développeur.798Si un développeur refuse, Claude Code quitte cette session plutôt que d'appliquer la politique. Lorsque vous poussez un nouveau hook, ou toute variable env qui déclenche la boîte de dialogue, à une politique large, Claude Code affiche donc la boîte de dialogue à chaque développeur correspondant. Il affiche la boîte de dialogue dans une session en cours lors du prochain sondage horaire, et sinon au prochain démarrage du développeur.

706 799 

707La clé `cli` s'appelait `settings` dans les versions antérieures. Cette orthographe est toujours acceptée comme alias, mais les nouveaux déploiements doivent utiliser `cli`.800La clé `cli` s'appelait `settings` dans les versions antérieures. Cette orthographe est toujours acceptée comme alias, mais les nouveaux déploiements doivent utiliser `cli`.

708 801 


714 807 

715La passerelle vérifie chaque entrée au démarrage avec [les mêmes règles que Claude Code applique sur le client](/docs/fr/managed-mcp#what-an-entry-can-contain), et si une entrée échoue une vérification, la passerelle refuse de démarrer et nomme l'entrée.808La passerelle vérifie chaque entrée au démarrage avec [les mêmes règles que Claude Code applique sur le client](/docs/fr/managed-mcp#what-an-entry-can-contain), et si une entrée échoue une vérification, la passerelle refuse de démarrer et nomme l'entrée.

716 809 

717Si vous écrivez une référence `${VAR}` dans `gateway.yaml`, la passerelle la résout à partir de son environnement au démarrage via [expansion de secret](#secret-expansion) avant d'exécuter les vérifications d'entrée, donc chaque client correspondant reçoit la valeur littérale et peut la lire. [L'orientation d'en-tête pour les serveurs fournis](/docs/fr/managed-mcp#provide-servers-through-managed-settings) s'applique à la valeur étendue.810Si vous écrivez une référence `${VAR}` dans `gateway.yaml`, la passerelle la résout à partir de son environnement au démarrage via [expansion de secret](#secret-expansion) avant d'exécuter les vérifications d'entrée, afin que chaque client correspondant reçoive la valeur littérale et puisse la lire. L'[orientation d'en-tête pour les serveurs fournis](/docs/fr/managed-mcp#provide-servers-through-managed-settings) s'applique à la valeur étendue.

718 811 

719La passerelle rejette l'orthographe `.mcp.json` `mcpServers` dans un bloc `cli`, et son erreur de démarrage nomme `managedMcpServers` comme clé à utiliser. Avant v2.1.259, la passerelle rejetait toute définition de serveur MCP dans un bloc `cli`.812La passerelle rejette l'orthographe `.mcp.json` `mcpServers` dans un bloc `cli`, et son erreur de démarrage nomme `managedMcpServers` comme clé à utiliser. Avant v2.1.259, la passerelle rejetait toute définition de serveur MCP dans un bloc `cli`.

720 813 


725Si votre organisation déploie également [Claude Desktop](/docs/fr/desktop), la même passerelle sert les deux clients. Pointez `bootstrapUrl`, dans la [configuration gérée](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop, sur `<listen.public_url>/user/bootstrap`. Claude Desktop dérive l'émetteur OAuth de cette URL, exécute la même connexion par code d'appareil contre cette passerelle et récupère sa configuration à partir de la réponse.818Si votre organisation déploie également [Claude Desktop](/docs/fr/desktop), la même passerelle sert les deux clients. Pointez `bootstrapUrl`, dans la [configuration gérée](https://claude.com/docs/third-party/claude-desktop/configuration) de Claude Desktop, sur `<listen.public_url>/user/bootstrap`. Claude Desktop dérive l'émetteur OAuth de cette URL, exécute la même connexion par code d'appareil contre cette passerelle et récupère sa configuration à partir de la réponse.

726 819 

727<Note>820<Note>

728 Nécessite Claude Code v2.1.203 ou ultérieur sur le serveur de passerelle, et un opt-in explicite : `/user/bootstrap` retourne 404 sauf si la politique correspondant à l'utilisateur porte une clé `desktop`. Un `desktop: {}` vide opte une politique, et une clé `desktop` sur la couche de base `match: {}` opte chaque politique qui l'hérite. Le journal d'audit enregistre chaque demande en tant que `desktop_bootstrap.serve` ou `desktop_bootstrap.denied`.821 Nécessite Claude Code v2.1.203 ou ultérieur sur le serveur de passerelle, et un opt-in explicite : `/user/bootstrap` retourne 404 à moins que la politique correspondant à l'utilisateur ne porte une clé `desktop`. Un `desktop: {}` vide opte une politique, et une clé `desktop` sur la couche de base `match: {}` opte chaque politique qui l'hérite. Le journal d'audit enregistre chaque demande en tant que `desktop_bootstrap.serve` ou `desktop_bootstrap.denied`.

729</Note>822</Note>

730 823 

731La passerelle dérive une grande partie de la réponse du bloc `cli` de la politique correspondante et de la configuration de passerelle de niveau supérieur :824La passerelle dérive une grande partie de la réponse du bloc `cli` de la politique correspondante et de la configuration de passerelle de niveau supérieur :

732 825 

733* La liste des modèles, à partir de `availableModels`826* La liste des modèles, de `availableModels`

734* Outils désactivés, à partir des entrées `permissions.deny` de nom d'outil nu. Si vous définissez `disabledBuiltinTools` dans le bloc `desktop` de la politique, la passerelle sert l'union de votre valeur et de la liste dérivée, afin que vous puissiez désactiver plus d'outils de cette façon mais ne pouvez pas réactiver un que vous avez désactivé via `permissions.deny`827* Outils désactivés, à partir des entrées `permissions.deny` de nom d'outil nu. Si vous définissez `disabledBuiltinTools` dans le bloc `desktop` de la politique, la passerelle sert l'union de votre valeur et de la liste dérivée, afin que vous puissiez désactiver plus d'outils de cette façon mais ne puissiez pas réactiver un que vous avez désactivé via `permissions.deny`

735* La liste d'autorisation de sortie, à partir de `sandbox.network.allowedDomains`. Si vous définissez `coworkEgressAllowedHosts` dans le bloc `desktop` de la politique, la passerelle utilise cette valeur à la place de la liste dérivée828* La liste d'autorisation de sortie, de `sandbox.network.allowedDomains`. Si vous définissez `coworkEgressAllowedHosts` dans le bloc `desktop` de la politique, la passerelle utilise cette valeur à la place de la liste dérivée

736* Un point de terminaison OTLP qui pointe vers la passerelle elle-même, et les attributs d'identité de l'utilisateur connecté. La passerelle relaie les exportations qu'elle reçoit à ce point de terminaison vers vos destinations `forward_to`. Elle inclut le point de terminaison et les attributs lorsque vous définissez à la fois [`telemetry.forward_to`](#telemetry) et `listen.public_url`.829* Un point de terminaison OTLP qui pointe vers la passerelle elle-même, et les attributs d'identité de l'utilisateur connecté. La passerelle relaie les exportations qu'elle reçoit à ce point de terminaison vers vos destinations `forward_to`. Elle inclut le point de terminaison et les attributs lorsque vous définissez à la fois [`telemetry.forward_to`](#telemetry) et `listen.public_url`.

737 830 

738 Claude Desktop exporte chaque signal avec un encodage : `http/protobuf`, ou `http/json` lorsque vous définissez `OTEL_EXPORTER_OTLP_PROTOCOL` ou l'un de ses variantes par signal à `http/json` dans le `env` de la politique. Avant Claude Code v2.1.261 sur le serveur de passerelle, la réponse définissait `http/json` indépendamment, donc un collecteur qui accepte uniquement protobuf rejetait les exportations de Claude Desktop831 Claude Desktop exporte chaque signal avec un encodage : `http/protobuf`, ou `http/json` lorsque vous définissez `OTEL_EXPORTER_OTLP_PROTOCOL` ou l'un de ses variantes par signal à `http/json` dans l'`env` de la politique. Avant Claude Code v2.1.261 sur le serveur de passerelle, la réponse définissait `http/json` indépendamment, afin qu'un collecteur qui accepte uniquement protobuf rejette les exportations de Claude Desktop

739 832 

740Pour définir `disabledBuiltinTools`, `coworkEgressAllowedHosts` ou le paramètre `managedMcpServers` propre de Claude Desktop dans le bloc `desktop` d'une politique, vous avez besoin de Claude Code v2.1.232 ou ultérieur sur le serveur de passerelle. Le `managedMcpServers` de Claude Desktop prend une valeur de tableau plutôt qu'un objet.833Pour définir `disabledBuiltinTools`, `coworkEgressAllowedHosts` ou le paramètre `managedMcpServers` propre de Claude Desktop dans le bloc `desktop` d'une politique, vous avez besoin de Claude Code v2.1.232 ou ultérieur sur le serveur de passerelle. Le `managedMcpServers` de Claude Desktop prend une valeur de tableau plutôt qu'un objet.

741 834 


755 banner: { text: "Contractor build: internal use only" }848 banner: { text: "Contractor build: internal use only" }

756```849```

757 850 

758Chaque clé est optionnelle ; Claude Desktop applique sa propre valeur par défaut pour toute clé que vous omettez. La passerelle valide chaque bloc `desktop` au démarrage par rapport au schéma de configuration que Claude Desktop lui-même utilise, donc une erreur apparaît au démarrage de la passerelle en tant qu'erreur nommant la clé plutôt que d'atteindre chaque bureau connecté. La passerelle échoue au démarrage lorsqu'un bloc contient :851Chaque clé est optionnelle ; Claude Desktop applique sa propre valeur par défaut pour toute clé que vous omettez. La passerelle valide chaque bloc `desktop` au démarrage par rapport au schéma de configuration que Claude Desktop lui-même utilise, afin qu'une erreur apparaisse au démarrage de la passerelle en tant qu'erreur nommant la clé plutôt que d'atteindre chaque bureau connecté. La passerelle échoue au démarrage lorsqu'un bloc contient :

759 852 

760* Une clé inconnue853* Une clé inconnue

761* Une clé reconnue dont la valeur Claude Desktop rejetterait ou supprimerait silencieusement, comme une valeur vide ou une sous-clé mal orthographiée à l'intérieur d'une entrée imbriquée. Avant v2.1.260, la passerelle supprimait silencieusement un champ mal orthographié à l'intérieur d'un objet imbriqué d'une entrée `managedMcpServers` ou `orgPluginSettings` au lieu d'échouer au démarrage.854* Une clé reconnue dont la valeur Claude Desktop rejetterait ou supprimerait silencieusement, comme une valeur vide ou une sous-clé mal orthographiée à l'intérieur d'une entrée imbriquée. Avant v2.1.260, la passerelle supprimait silencieusement un champ mal orthographié à l'intérieur d'un objet imbriqué d'une entrée `managedMcpServers` ou `orgPluginSettings` au lieu d'échouer au démarrage.


766 859 

767La passerelle valide un bloc `desktop` par rapport au schéma fourni avec sa version installée, comme elle le fait pour le bloc `cli`. Pour livrer un paramètre introduit par une version plus récente de Claude Desktop, mettez à niveau la passerelle en premier. Par exemple, `userPluginMarketplacesEnabled` et `userPluginUploadsEnabled` nécessitent Claude Code v2.1.260 ou ultérieur sur le serveur de passerelle et Claude Desktop 1.37937.0 ou ultérieur sur les machines des membres.860La passerelle valide un bloc `desktop` par rapport au schéma fourni avec sa version installée, comme elle le fait pour le bloc `cli`. Pour livrer un paramètre introduit par une version plus récente de Claude Desktop, mettez à niveau la passerelle en premier. Par exemple, `userPluginMarketplacesEnabled` et `userPluginUploadsEnabled` nécessitent Claude Code v2.1.260 ou ultérieur sur le serveur de passerelle et Claude Desktop 1.37937.0 ou ultérieur sur les machines des membres.

768 861 

769Si vous définissez `orgPluginSettings` dans le bloc `desktop` d'une politique, la passerelle le sert sous la forme de tableau que Claude Desktop 1.15200.0 et ultérieur lit. Les anciens bureaux ignorent le tableau et n'appliquent aucune politique d'outil de plugin, donc mettez à jour les membres à 1.15200.0 ou ultérieur avant de vous y fier.862Si vous définissez `orgPluginSettings` dans le bloc `desktop` d'une politique, la passerelle le sert sous la forme de tableau que Claude Desktop 1.15200.0 et ultérieur lit. Les anciens bureaux ignorent le tableau et n'appliquent aucune politique d'outil de plugin, afin de mettre à jour les membres vers 1.15200.0 ou ultérieur avant de vous y fier.

770 863 

771La passerelle remplit les clés qu'un bloc `desktop` de politique ne définit pas à partir du bloc `desktop` de la capture-tout `match: {}`, de la même manière qu'elle remplit le bloc `cli` d'une politique à partir de la base. Si vous définissez `disabledBuiltinTools` ou `builtinToolPolicy` à la fois dans la base et dans une politique par rôle, la passerelle conserve la restriction de la base :864La passerelle remplit les clés qu'un bloc `desktop` d'une politique ne définit pas à partir du bloc `desktop` de la capture-tout `match: {}`, de la même manière qu'elle remplit le bloc `cli` d'une politique à partir de la base. Si vous définissez `disabledBuiltinTools` ou `builtinToolPolicy` à la fois dans la base et dans une politique par rôle, la passerelle conserve la restriction de la base :

772 865 

773* `disabledBuiltinTools` : la passerelle utilise l'union de la liste de la base et de la liste de la politique866* `disabledBuiltinTools` : la passerelle utilise l'union de la liste de la base et de la liste de la politique

774* `builtinToolPolicy` : si vous définissez un outil à une valeur autre que `allow` dans la base, la passerelle conserve cette valeur même si vous définissez `allow` pour le même outil dans une politique par rôle867* `builtinToolPolicy` : si vous définissez un outil à une valeur autre que `allow` dans la base, la passerelle conserve cette valeur même si vous définissez `allow` pour le même outil dans une politique par rôle

775 868 

776Pour chaque autre clé, si vous la définissez dans la politique par rôle, la passerelle utilise la valeur de la politique par rôle. La passerelle remplace un tableau ou un objet imbriqué comme `banner` entièrement, donc si vous définissez `banner.text` dans une politique par rôle, la passerelle supprime le `banner.backgroundColor` de la base.869Pour chaque autre clé, si vous la définissez dans la politique par rôle, la passerelle utilise la valeur de la politique par rôle. La passerelle remplace un tableau ou un objet imbriqué comme `banner` entièrement, afin que si vous définissez `banner.text` dans une politique par rôle, la passerelle supprime le `banner.backgroundColor` de la base.

777 870 

778Si vous ne déployez pas Claude Desktop, laissez `desktop` complètement hors de vos politiques ; la passerelle retourne alors 404 à partir de `/user/bootstrap` pour chaque utilisateur.871Si vous ne déployez pas Claude Desktop, laissez `desktop` complètement hors de vos politiques ; la passerelle retourne alors 404 de `/user/bootstrap` pour chaque utilisateur.

779 872 

780<h4 id="precedence-with-other-managed-sources">873<h4 id="precedence-with-other-managed-sources">

781 Précédence avec d'autres sources gérées874 Précédence avec d'autres sources gérées

782</h4>875</h4>

783 876 

784Si un appareil a également une politique livrée par MDM ou un `managed-settings.json` local, les paramètres livrés par la passerelle sont classés en premier. [Précédence au sein du niveau géré](/docs/fr/managed-settings#precedence-within-the-managed-tier) sur la page des paramètres gérés dit quand les sources locales s'appliquent, et a les [clés que Claude Code lit à partir de chaque source admin](/docs/fr/managed-settings#keys-read-from-every-admin-source) indépendamment de la source qu'il a sélectionnée, comme les clés de verrouillage du sandbox, `forceRemoteSettingsRefresh` et le `env` par variable. Un [`policyHelper`](/docs/fr/settings-reference#policyhelper) configuré dans un profil MDM ou le fichier des paramètres gérés s'exécute uniquement lorsque la passerelle ne livre aucun paramètre ; l'entrée dit ce que sa sortie remplace.877Si un appareil a également une politique livrée par MDM ou un `managed-settings.json` local, les paramètres livrés par la passerelle sont prioritaires. [Précédence au sein du niveau géré](/docs/fr/managed-settings#precedence-within-the-managed-tier) sur la page des paramètres gérés dit quand les sources locales s'appliquent, et a les [clés que Claude Code lit à partir de chaque source admin](/docs/fr/managed-settings#keys-read-from-every-admin-source) indépendamment de la source qu'il a sélectionnée, comme les clés de verrouillage du bac à sable, `forceRemoteSettingsRefresh` et la fusion `env` par variable. Un [`policyHelper`](/docs/fr/settings-reference#policyhelper) configuré dans un profil MDM ou le fichier de paramètres gérés s'exécute uniquement lorsque la passerelle ne livre aucun paramètre ; l'entrée dit ce que sa sortie remplace.

785 878 

786Les hôtes d'intégration comme [Claude Desktop](/docs/fr/desktop) peuvent fournir une politique via l'option SDK `managedSettings`. [Paramètres parents à partir d'hôtes d'intégration](/docs/fr/managed-settings#parent-settings-from-embedding-hosts) dit quand Claude Code l'applique, et [Restreindre les paramètres parents](/docs/fr/claude-apps-gateway#restrict-parent-settings) liste les paramètres de direction d'autorisation qui s'appliquent toujours sans les verrous `allowManaged*Only`.879Les hôtes d'intégration comme [Claude Desktop](/docs/fr/desktop) peuvent fournir une politique via l'option SDK `managedSettings`. [Paramètres parents à partir d'hôtes d'intégration](/docs/fr/managed-settings#parent-settings-from-embedding-hosts) dit quand Claude Code l'applique, et [Restreindre les paramètres parents](/docs/fr/claude-apps-gateway#restrict-parent-settings) liste les paramètres de direction d'autorisation qui s'appliquent toujours sans les verrous `allowManaged*Only`.

787 880 


791 `telemetry`884 `telemetry`

792</h3>885</h3>

793 886 

794Le CLI envoie des métriques, des journaux et, lorsqu'ils sont activés, des traces à la passerelle, qui les relaie textuellement à chaque destination configurée. Les exportations utilisent OpenTelemetry Protocol (OTLP) sur HTTP. Pour ignorer le relais et faire exporter les sessions directement vers votre collecteur, [nommez le collecteur dans une politique](#export-directly-to-your-collector). Consultez [Surveillance de l'utilisation](/docs/fr/monitoring-usage) pour les métriques et événements que le CLI émet.887Le CLI envoie des métriques, des journaux et, lorsqu'ils sont activés, des traces à la passerelle, qui les relaie textuellement à chaque destination configurée. Les exportations utilisent OpenTelemetry Protocol (OTLP) sur HTTP. Pour ignorer le relais et faire exporter les sessions directement à votre collecteur, [nommez le collecteur dans une politique](#export-directly-to-your-collector). Consultez [Surveillance de l'utilisation](/docs/fr/monitoring-usage) pour les métriques et événements que le CLI émet.

795 888 

796Le CLI horodate chaque exportation avec l'identité de l'utilisateur authentifié, lue à partir du JWT émis par la passerelle : les attributs `user.id`, `user.email` et `user.groups`. L'attribution du coût et de l'utilisation par développeur fonctionne donc sans configuration côté développeur.889Le CLI horodate chaque exportation avec l'identité de l'utilisateur authentifié, lue à partir du JWT émis par la passerelle : les attributs `user.id`, `user.email` et `user.groups`. L'attribution du coût et de l'utilisation par développeur fonctionne donc sans configuration côté développeur.

797 890 

798[Claude Desktop](#claude-desktop-overlay) et les sessions Cowork connectées via la passerelle horodatent leur télémétrie avec `user.email` et `user.groups` aux côtés de `enduser.id`, afin que vous puissiez couvrir l'utilisation du terminal, du Bureau et de Cowork avec une requête sur `user.email` ou `user.groups`. `user.groups` est la liste des groupes IdP séparée par des virgules.891[Claude Desktop](#claude-desktop-overlay) et les sessions Cowork connectées via la passerelle horodatent leur télémétrie avec `user.email` et `user.groups` aux côtés de `enduser.id`, afin que vous puissiez couvrir l'utilisation du terminal, du bureau et de Cowork avec une requête sur `user.email` ou `user.groups`. `user.groups` est la liste des groupes IdP séparée par des virgules.

892 

893La télémétrie du bureau et de Cowork porte également `enduser.sub`, la revendication `sub` que votre fournisseur d'identité émet pour l'utilisateur, qui reste la même lorsque l'e-mail d'un utilisateur change. Les sessions de terminal horodatent la même valeur sous `user.id`, afin qu'une requête qui correspond à `enduser.sub` par rapport à `user.id` du terminal couvre l'utilisation du terminal, du bureau et de Cowork d'un utilisateur ensemble. Sur les exportations du bureau et de Cowork, `user.id` est un identifiant anonyme, pas le sujet.

799 894 

800Comme toutes les données OpenTelemetry de Claude Code, ces attributs vont uniquement aux destinations que votre organisation configure, jamais à Anthropic.895Comme toutes les données OpenTelemetry de Claude Code, ces attributs vont uniquement aux destinations que votre organisation configure, jamais à Anthropic.

801 896 

802Si la liste de groupes d'un utilisateur dépasse 255 caractères une fois codée en pourcentage, ou si un nom de groupe contient une virgule ou un signe égal, la passerelle laisse `user.groups` hors de la télémétrie Desktop et Cowork de cet utilisateur plutôt que de la tronquer. Les sessions de terminal de cet utilisateur portent toujours la liste complète.897Si la liste des groupes d'un utilisateur est plus longue que 255 caractères une fois codée en pourcentage, ou si un nom de groupe contient une virgule ou un signe égal, la passerelle laisse `user.groups` hors de la télémétrie du bureau et de Cowork de cet utilisateur plutôt que de la tronquer. Les sessions de terminal de cet utilisateur portent toujours la liste complète.

898 

899La passerelle laisse `enduser.sub` hors quand le sujet est plus long que 255 caractères une fois codé en pourcentage, ou contient un espace, un caractère en dehors de l'ASCII imprimable, ou l'un de `,` `;` `=` `\` `"` `%`. La télémétrie du bureau et de Cowork de cet utilisateur conserve ses autres attributs.

900 

901Vous avez besoin de Claude Code v2.1.265 ou ultérieur sur le serveur de passerelle pour `user.email` et `user.groups` sur la télémétrie du bureau et de Cowork, et Claude Desktop 1.24012 ou ultérieur sur la machine de chaque développeur pour `user.groups`.

803 902 

804Vous avez besoin de Claude Code v2.1.265 ou ultérieur sur le serveur de passerelle pour `user.email` et `user.groups` sur la télémétrie Desktop et Cowork, et Claude Desktop 1.24012 ou ultérieur sur la machine de chaque développeur pour `user.groups`.903Vous avez besoin de Claude Code v2.1.274 ou ultérieur sur le serveur de passerelle pour `enduser.sub`.

805 904 

806```yaml theme={null}905```yaml theme={null}

807telemetry:906telemetry:


809 - url: https://otel-collector.internal.example.com908 - url: https://otel-collector.internal.example.com

810 headers:909 headers:

811 Authorization: ${OTLP_TOKEN}910 Authorization: ${OTLP_TOKEN}

812 # Opt-in par signal. Par défaut : métriques uniquement.911 # Per-signal opt-in. Default: metrics only.

813 metrics: true912 metrics: true

814 logs: false913 logs: false

815 traces: false914 traces: false


822 Chaque destination opte pour `metrics`, `logs` et `traces` indépendamment, et la valeur par défaut est les métriques uniquement. Les signaux diffèrent en sensibilité :921 Chaque destination opte pour `metrics`, `logs` et `traces` indépendamment, et la valeur par défaut est les métriques uniquement. Les signaux diffèrent en sensibilité :

823 922 

824 * **Métriques** : compteurs agrégés comme les comptages de jetons, les comptages de demandes et la latence923 * **Métriques** : compteurs agrégés comme les comptages de jetons, les comptages de demandes et la latence

825 * **Journaux et traces** : peuvent porter des commandes bash complètes, des entrées d'outils et des chemins de fichiers, couvrant tout ce que Claude Code fait sur la machine d'un développeur924 * **Journaux et traces** : peuvent porter des commandes Bash complètes, des entrées d'outils et des chemins de fichiers, couvrant tout ce que Claude Code fait sur la machine d'un développeur

826 925 

827 Activez les journaux et les traces uniquement sur les destinations avec les contrôles d'accès et la politique de rétention que les données justifient.926 Activez les journaux et les traces uniquement sur les destinations avec les contrôles d'accès et la politique de rétention que les données justifient.

828</Warning>927</Warning>

829 928 

830Chaque URL `forward_to` doit utiliser `https://`, avec une exception pour un collecteur sur l'interface de bouclage de la passerelle elle-même :929Chaque URL `forward_to` doit utiliser `https://`, avec une exception pour un collecteur sur l'interface de bouclage propre de la passerelle :

831 930 

832* `http://localhost:<port>` passe la validation de configuration, mais la [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) bloque chaque exportation avec `ECONNREFUSED_SSRF` sauf si vous définissez `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dans l'environnement de la passerelle931* `http://localhost:<port>` passe la validation de configuration, mais la [garde SSRF](/docs/fr/claude-apps-gateway-deploy#threat-model-summary) bloque chaque exportation avec `ECONNREFUSED_SSRF` à moins que vous ne définissiez `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dans l'environnement de la passerelle

833* `http://127.0.0.1:<port>` ou `http://[::1]:<port>` échoue au démarrage sauf si cette variable est définie932* `http://127.0.0.1:<port>` ou `http://[::1]:<port>` échoue au démarrage à moins que cette variable ne soit définie

834 933 

835Pour un collecteur en cluster, exposez-le sur HTTPS à sa propre adresse interne, ou exécutez-le en tant que sidecar avec la variable définie.934Pour un collecteur en cluster, exposez-le sur HTTPS à sa propre adresse interne, ou exécutez-le en tant que sidecar avec la variable définie.

836 935 

936Lorsque `HTTPS_PROXY` est défini, la passerelle envoie les exportations via ce proxy.

937 

938Pour atteindre un collecteur interne directement, ajoutez-le à `NO_PROXY` par nom d'hôte ou par un domaine avec un point initial comme `.internal.example.com`, ce qui nécessite Claude Code v2.1.277 ou ultérieur sur le serveur de passerelle. Assurez-vous que la passerelle peut atteindre le collecteur sans le proxy. Une entrée sans point initial correspond uniquement à ce nom exact, pas aux noms en dessous. Les plages CIDR ne correspondent pas.

939 

940Avec [sortie proxy uniquement](#proxy-only-egress) activée, autorisez le collecteur dans le proxy à la place, car toute entrée `NO_PROXY` désactive la sortie proxy uniquement.

941 

837La télémétrie est désactivée dans le CLI par défaut. Lorsque vous définissez à la fois `telemetry.forward_to` et `listen.public_url`, la passerelle l'active pour les clients connectés en poussant six variables d'environnement via `/managed/settings` :942La télémétrie est désactivée dans le CLI par défaut. Lorsque vous définissez à la fois `telemetry.forward_to` et `listen.public_url`, la passerelle l'active pour les clients connectés en poussant six variables d'environnement via `/managed/settings` :

838 943 

839* `CLAUDE_CODE_ENABLE_TELEMETRY=1`944* `CLAUDE_CODE_ENABLE_TELEMETRY=1`


843 948 

844Avant Claude Code v2.1.265 sur le serveur de passerelle, la passerelle poussait les trois sélecteurs d'exportateur en tant que `otlp`, y compris pour les signaux qu'aucune destination n'a activés.949Avant Claude Code v2.1.265 sur le serveur de passerelle, la passerelle poussait les trois sélecteurs d'exportateur en tant que `otlp`, y compris pour les signaux qu'aucune destination n'a activés.

845 950 

846Le point de terminaison poussé est construit à partir de l'URL publique, donc les métriques et les journaux n'ont besoin d'aucune configuration OTEL de la part des développeurs ou des politiques.951Le point de terminaison poussé est construit à partir de l'URL publique, afin que les métriques et les journaux n'aient besoin d'aucune configuration OTEL de la part des développeurs ou des politiques.

847 952 

848Les développeurs connectés via `/login` ne peuvent pas rediriger les exportations avec leur propre configuration OTEL :953Les développeurs connectés via `/login` ne peuvent pas rediriger les exportations avec leur propre configuration OTEL :

849 954 

850* **Variables définies localement** : Claude Code applique les variables poussées au niveau géré, donc chacune remplace la valeur qu'un développeur définit pour elle localement.955* **Variables définies localement** : Claude Code applique les variables poussées au niveau géré, afin que chacune remplace la valeur qu'un développeur définit pour elle localement.

851* **Points de terminaison configurés localement** : avec l'exportation OTLP/HTTP activée, le CLI ignore tout point de terminaison configuré localement, que la passerelle ait poussé les variables de télémétrie ou non. Ses exportations vont à la passerelle sauf si une politique [nomme votre collecteur comme point de terminaison](#export-directly-to-your-collector).956* **Points de terminaison configurés localement** : avec l'exportation OTLP/HTTP activée, le CLI ignore tout point de terminaison configuré localement, que la passerelle ait poussé les variables de télémétrie ou non. Ses exportations vont à la passerelle à moins qu'une politique [nomme votre collecteur comme point de terminaison](#export-directly-to-your-collector).

852 957 

853Sans destination `forward_to` pour un signal, la passerelle l'accepte et le rejette. Si les développeurs exportent déjà la télémétrie Claude Code vers l'un de vos collecteurs, ajoutez-le en tant que destination `forward_to`, avec les journaux ou les traces activés s'ils les exportent, afin qu'il continue à recevoir leurs données après qu'ils se connectent. Pour ignorer le relais à la place, [nommez le collecteur dans une politique](#export-directly-to-your-collector).958Sans destination `forward_to` pour un signal, la passerelle l'accepte et le rejette. Si les développeurs exportent déjà la télémétrie Claude Code vers l'un de vos collecteurs, ajoutez-le en tant que destination `forward_to`, avec les journaux ou les traces activés s'ils les exportent, afin qu'il continue à recevoir leurs données après qu'ils se connectent. Pour ignorer le relais à la place, [nommez le collecteur dans une politique](#export-directly-to-your-collector).

854 959 

855[Les traces](/docs/fr/monitoring-usage#traces-beta) nécessitent également `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` sur chaque client. Définissez-le dans le bloc `env` d'une politique gérée, car la passerelle ne le pousse pas. Les développeurs l'approuvent dans la même [boîte de dialogue d'approbation de sécurité](#managed) que le point de terminaison poussé déclenche déjà.960[Les traces](/docs/fr/monitoring-usage#traces-beta) nécessitent également `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA=1` sur chaque client. Définissez-le dans le bloc `env` d'une politique gérée, car la passerelle ne le pousse pas. Les développeurs l'approuvent dans la même [boîte de dialogue d'approbation de sécurité](#managed) que le point de terminaison poussé déclenche déjà.

856 961 

857Définissez-le à `1` uniquement dans les politiques dont vous voulez que les groupes soient tracés. Une politique qui ne le définit pas hérite la valeur de votre politique de capture-tout `match: {}` si cette politique en définit une, selon les [règles de fusion](#managed). Pour empêcher les clients d'un groupe d'envoyer des traces même lorsqu'un développeur définit la variable localement, définissez-la à `0` dans la politique de ce groupe.962Définissez-le à `1` uniquement dans les politiques dont vous voulez que les groupes soient tracés. Une politique qui ne le définit pas hérite de la valeur de votre politique de capture-tout `match: {}` si cette politique en définit une, selon les [règles de fusion](#managed). Pour empêcher les clients d'un groupe d'envoyer des traces même lorsqu'un développeur définit la variable localement, définissez-la à `0` dans la politique de ce groupe.

858 963 

859Les encodages OTLP protobuf et JSON sont relayés, et tout backend compatible OpenTelemetry fonctionne comme destination.964Les encodages OTLP protobuf et JSON sont tous deux relayés, et tout backend compatible OpenTelemetry fonctionne comme destination.

860 965 

861<h4 id="export-directly-to-your-collector">966<h4 id="export-directly-to-your-collector">

862 Exporter directement vers votre collecteur967 Exporter directement vers votre collecteur

863</h4>968</h4>

864 969 

865Pour faire envoyer les sessions connectées via `/login` la télémétrie directement à votre collecteur au lieu de passer par le relais, définissez `OTEL_EXPORTER_OTLP_ENDPOINT` à l'URL de base `https://` du collecteur dans le bloc `env` d'une [politique gérée](#managed). Claude Code ajoute `/v1/metrics`, `/v1/logs` ou `/v1/traces` à l'URL que vous définissez, comme `https://otel-collector.example.com:4318`, et exporte chaque signal là-bas sur OTLP/HTTP. Nécessite Claude Code v2.1.265 ou ultérieur sur la machine de chaque développeur. Les clients antérieurs exportent via le relais.970Pour que les sessions connectées via `/login` envoient la télémétrie directement à votre collecteur au lieu de passer par le relais, définissez `OTEL_EXPORTER_OTLP_ENDPOINT` à l'URL de base `https://` du collecteur dans le bloc `env` d'une [politique gérée](#managed). Claude Code ajoute `/v1/metrics`, `/v1/logs` ou `/v1/traces` à l'URL que vous définissez, comme `https://otel-collector.example.com:4318`, et exporte chaque signal là-bas sur OTLP/HTTP. Nécessite Claude Code v2.1.265 ou ultérieur sur la machine de chaque développeur. Les clients antérieurs exportent via le relais.

866 971 

867Pour vous authentifier auprès du collecteur, définissez `OTEL_EXPORTER_OTLP_HEADERS` dans le même bloc `env`. Les sessions n'envoient jamais le jeton de session de passerelle du développeur à un collecteur nommé de cette façon.972Pour vous authentifier auprès du collecteur, définissez `OTEL_EXPORTER_OTLP_HEADERS` dans le même bloc `env`. Les sessions n'envoient jamais le jeton de session de passerelle du développeur à un collecteur nommé de cette façon.

868 973 


871Claude Code vérifie le point de terminaison avant d'exporter un signal directement, et garde ce signal sur le relais lorsqu'une vérification échoue. Les vérifications incluent :976Claude Code vérifie le point de terminaison avant d'exporter un signal directement, et garde ce signal sur le relais lorsqu'une vérification échoue. Les vérifications incluent :

872 977 

873* Le point de terminaison provient de la passerelle elle-même. Si vous définissez la même variable dans un profil MDM ou un `managed-settings.json` local, les exportations restent sur le relais.978* Le point de terminaison provient de la passerelle elle-même. Si vous définissez la même variable dans un profil MDM ou un `managed-settings.json` local, les exportations restent sur le relais.

874* L'URL utilise `https://`, ou `http://` vers une adresse de bouclage979* L'URL utilise `https://`, ou `http://` à une adresse de bouclage

875* L'URL se résout en un chemin se terminant par `/v1/<signal>`, sans requête ni fragment. Claude Code construit ce chemin lui-même à partir de la variable générique. Il utilise une variable par signal comme `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` telle qu'écrite, donc incluez le chemin complet là-bas.980* L'URL se résout en un chemin se terminant par `/v1/<signal>`, sans requête ni fragment. Claude Code construit ce chemin lui-même à partir de la variable générique. Il utilise une variable par signal comme `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` telle qu'écrite, afin d'inclure le chemin complet là-bas.

876* L'URL n'est pas l'hôte de la passerelle elle-même. Un point de terminaison adressé à la passerelle conserve le chemin du relais et son jeton de session.981* L'URL n'est pas l'hôte propre de la passerelle. Un point de terminaison adressé à la passerelle conserve le chemin du relais et son jeton de session.

877* Ni vous ni le développeur n'avez configuré [`otelHeadersHelper`](/docs/fr/settings-reference#otelheadershelper) dans aucune source de paramètres. Avec un helper configuré, chaque signal reste sur le relais.982* Ni vous ni le développeur n'avez configuré [`otelHeadersHelper`](/docs/fr/settings-reference#otelheadershelper) dans aucune source de paramètres. Avec un helper configuré, chaque signal reste sur le relais.

878 983 

879Le point de terminaison que vous nommez change uniquement où les exportations vont. Vous choisissez toujours quels signaux exportent du tout avec les sélecteurs `OTEL_*_EXPORTER`.984Le point de terminaison que vous nommez change uniquement où les exportations vont. Vous choisissez toujours quels signaux exportent du tout avec les sélecteurs `OTEL_*_EXPORTER`.

880 985 

881Le point de terminaison seul n'active pas l'exportation, donc définissez également les variables qui le font, sauf si la passerelle les pousse déjà :986Le point de terminaison seul n'active pas l'exportation, afin de définir également les variables qui le font, à moins que la passerelle ne les pousse déjà :

882 987 

883* Si la passerelle [pousse déjà les variables de télémétrie](#telemetry), elles couvrent l'activation, les sélecteurs et le protocole, et votre point de terminaison explicite remplace la valeur `<public_url>` poussée. Définissez un sélecteur `OTEL_*_EXPORTER` à `otlp` vous-même uniquement pour un signal qu'aucune destination `forward_to` n'active.988* Si la passerelle [pousse déjà les variables de télémétrie](#telemetry), elles couvrent l'activation, les sélecteurs et le protocole, et votre point de terminaison explicite remplace la valeur `<public_url>` poussée. Définissez un sélecteur `OTEL_*_EXPORTER` à `otlp` vous-même uniquement pour un signal qu'aucune destination `forward_to` n'active.

884* Si ce n'est pas le cas, définissez également `CLAUDE_CODE_ENABLE_TELEMETRY=1`, les sélecteurs `OTEL_*_EXPORTER` et `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.989* Si ce n'est pas le cas, définissez également `CLAUDE_CODE_ENABLE_TELEMETRY=1`, les sélecteurs `OTEL_*_EXPORTER` et `OTEL_EXPORTER_OTLP_PROTOCOL=http/protobuf`.

885 990 

886Lorsque le développeur se déconnecte, ou se connecte à une passerelle différente, les exportations vers le collecteur s'arrêtent et Claude Code rejette chaque lot restant plutôt que de l'envoyer.991Lorsque le développeur se déconnecte, ou se connecte à une passerelle différente, les exportations vers le collecteur s'arrêtent et Claude Code supprime chaque lot restant plutôt que de l'envoyer.

887 992 

888<h4 id="when-a-destination-fails">993<h4 id="when-a-destination-fails">

889 Lorsqu'une destination échoue994 Lorsqu'une destination échoue

890</h4>995</h4>

891 996 

892La passerelle ne met pas en mémoire tampon, ne réessaie pas ou ne stocke pas la télémétrie, donc elle rejette une exportation qui n'atteint pas une destination plutôt que de la livrer tard. Chaque destination réussit ou échoue par elle-même, et le client exportateur reçoit une réponse de succès de toute façon, donc une livraison échouée n'apparaît que dans le journal de la passerelle.997La passerelle ne met pas en mémoire tampon, ne réessaie pas ou ne stocke pas la télémétrie, afin qu'elle rejette une exportation qui n'atteint pas une destination plutôt que de la livrer tard. Chaque destination réussit ou échoue par elle-même, et le client exportateur reçoit une réponse de succès de toute façon, afin qu'une livraison échouée n'apparaisse que dans le journal de la passerelle.

893 998 

894Après cinq livraisons consécutives échouées à une destination, la passerelle met en pause le transfert vers elle en étirements de 30 secondes, enregistrant chaque pause, jusqu'à ce qu'une livraison réussisse. Toute réponse d'erreur, délai d'attente ou erreur de connexion compte comme une livraison échouée, sauf `400`, `413`, `415`, `422` et `431`, qui signifient que le collecteur a refusé la charge utile de cette exportation comme mal formée ou trop grande.999Après cinq livraisons consécutives échouées à une destination, la passerelle met en pause le transfert vers elle en étirements de 30 secondes, enregistrant chaque pause, jusqu'à ce qu'une livraison réussisse. Toute réponse d'erreur, délai d'attente ou erreur de connexion compte comme une livraison échouée, sauf `400`, `413`, `415`, `422` et `431`, qui signifient que le collecteur a refusé la charge utile de cette exportation comme mal formée ou trop grande.

895 1000 

896Une charge utile refusée n'avance ni ne réinitialise le compteur d'échecs : la passerelle continue de transférer vers la destination et enregistre un avertissement nommant celle-ci et le statut, au premier refus de la destination et tous les centièmes après.1001Une charge utile refusée n'avance ni ne réinitialise le compteur d'échecs : la passerelle continue de transférer vers la destination et enregistre un avertissement la nommant et le statut, au premier refus de la destination et tous les centièmes après.

897 1002 

898<h3 id="http-tuning">1003<h3 id="http-tuning">

899 Réglage HTTP1004 Réglage HTTP


902Quatre blocs optionnels de niveau supérieur, `access_control`, `limits`, `timeouts` et `rate_limits`, règlent la surface HTTP. Les valeurs par défaut conviennent à la plupart des déploiements.1007Quatre blocs optionnels de niveau supérieur, `access_control`, `limits`, `timeouts` et `rate_limits`, règlent la surface HTTP. Les valeurs par défaut conviennent à la plupart des déploiements.

903 1008 

904| Bloc | Clé | Par défaut | Description |1009| Bloc | Clé | Par défaut | Description |

905| ---------------- | ---------------------------------------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1010| ---------------- | ---------------------------------------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

906| `access_control` | `allow_cidrs` / `deny_cidrs` | vide | Autorisation/refus IP entrant par adresse client, après résolution `trusted_proxies`. `deny_cidrs` est vérifié en premier ; un client qu'il correspond est rejeté même si `allow_cidrs` correspond également. Si `allow_cidrs` est non vide, la passerelle est par défaut refusée. `/healthz` et `/readyz` sont exempts de `allow_cidrs`. Lorsqu'un proxy de confiance envoie une entrée `X-Forwarded-For` qui n'est pas une adresse IP, le vrai client est inconnu et la passerelle enregistre un avertissement une fois nommant ce qu'il faut vérifier. Où l'une ou l'autre liste s'applique à la demande, elle la refuse avec `403` et la raison d'audit `xff_unparseable`. Où aucune ne s'applique, elle sert la demande et utilise l'adresse du proxy lui-même comme IP client pour les limites de débit par IP et l'audit. |1011| `access_control` | `allow_cidrs` / `deny_cidrs` | vide | Autorisation/refus IP entrant par adresse client, après résolution `trusted_proxies`. `deny_cidrs` est vérifié en premier ; un client qu'il correspond est rejeté même si `allow_cidrs` correspond également. Si `allow_cidrs` est non vide, la passerelle est par défaut refusée. `/healthz` et `/readyz` sont exempts de `allow_cidrs`. Lorsqu'un proxy de confiance envoie une entrée `X-Forwarded-For` qui n'est pas une adresse IP, le vrai client est inconnu et la passerelle enregistre un avertissement une fois nommant ce qu'il faut vérifier. Où l'une ou l'autre liste s'applique à la demande, elle la refuse avec `403` et la raison d'audit `xff_unparseable`. Où aucune ne le fait, elle sert la demande et utilise l'adresse propre du proxy comme adresse IP client pour les limites de débit par IP et l'audit. |

907| `limits` | `max_request_bytes` | 32 MiB | Corps de demande entrant max ; les demandes surdimensionnées obtiennent `413` avant que le corps ne soit mis en mémoire tampon. Augmentez pour les demandes de fichiers ou d'images volumineux. |1012| `limits` | `max_request_bytes` | 32 MiB | Corps de demande entrant max ; les demandes surdimensionnées obtiennent `413` avant que le corps ne soit mis en mémoire tampon. Augmentez pour les demandes de fichiers ou d'images volumineux. |

908| `limits` | `max_request_header_bytes` | non défini | Lorsqu'il est défini, les en-têtes surdimensionnés retournent `431` |1013| `limits` | `max_request_header_bytes` | non défini | Lorsqu'il est défini, les en-têtes surdimensionnés retournent `431` |

909| `limits` | `max_url_length` | non défini | Lorsqu'il est défini, une URL trop longue retourne `414` |1014| `limits` | `max_url_length` | non défini | Lorsqu'il est défini, une URL trop longue retourne `414` |

910| `timeouts` | `upstream_ttfb_ms` | 120000 | Attente max pour les en-têtes de réponse en amont (temps jusqu'au premier octet). Le corps de la réponse s'écoule ensuite sans plafond mural. S'applique au chemin d'amont Anthropic direct ; chaque autre fournisseur est limité par le délai d'attente propre du SDK du fournisseur. |1015| `timeouts` | `upstream_ttfb_ms` | 120000 | Attente max pour les en-têtes de réponse en amont (temps jusqu'au premier octet). Le corps de la réponse s'écoule ensuite sans plafond mural. S'applique au chemin d'amont Anthropic direct ; sur tous les autres fournisseurs, la passerelle attend jusqu'à une heure pour que la réponse commence. |

911| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Limite de débit par IP sur le point de terminaison d'autorisation d'appareil non authentifié. Augmentez pour une grande organisation derrière une adresse IP de sortie partagée ou NAT. Ces limites s'appliquent uniquement au flux de connexion par octroi d'appareil, pas à l'inférence `/v1/messages`. Consultez [Résistance à la force brute du code utilisateur](/docs/fr/claude-apps-gateway-deploy#user-code-brute-force-resistance). |1016| `rate_limits` | `device_authorization.max` / `.window_seconds` | 30 / 600 | Limite de débit par IP sur le point de terminaison d'autorisation d'appareil non authentifié. Augmentez pour une grande organisation derrière une adresse IP de sortie partagée ou NAT. [Déploiements à grande échelle](/docs/fr/claude-apps-gateway-deploy#large-rollouts) montre comment le dimensionner. Ces limites s'appliquent uniquement au flux de connexion par octroi d'appareil, pas à l'inférence `/v1/messages`. Consultez [Résistance à la force brute du code utilisateur](/docs/fr/claude-apps-gateway-deploy#user-code-brute-force-resistance). |

912| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Limite de débit par IP sur les soumissions `user_code` à `/device` |1017| `rate_limits` | `device_verify.max` / `.window_seconds` | 10 / 600 | Limite de débit par IP sur les soumissions `user_code` à `/device`. C'est ce qui empêche quelqu'un de deviner le code d'un autre développeur. [Déploiements à grande échelle](/docs/fr/claude-apps-gateway-deploy#large-rollouts) montre jusqu'où l'augmenter. |

913 1018 

914Si vous laissez les deux listes `access_control` vides, ce qui est la valeur par défaut, la passerelle sert n'importe quelle adresse client, donc seul votre réseau restreint qui peut la joindre. C'est important car une passerelle peut pousser [les paramètres gérés](#managed) qui exécutent des commandes sur les machines des développeurs.1019Si vous laissez les deux listes `access_control` vides, ce qui est la valeur par défaut, la passerelle sert toute adresse client, afin que seul votre réseau restreigne qui peut l'atteindre. C'est important car une passerelle peut pousser des [paramètres gérés](#managed) qui exécutent des commandes sur les machines des développeurs.

915 1020 

916Tandis que `allow_cidrs` est vide, la passerelle avertit à deux endroits, sans changer la façon dont elle répond à n'importe quelle demande :1021Tandis que `allow_cidrs` est vide, la passerelle avertit à deux endroits, sans changer la façon dont elle répond à toute demande :

917 1022 

918* **Au démarrage** : un avertissement dans le journal opérationnel recommande d'autoriser uniquement les plages privées `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` et `fc00::/7`, plus toute autre plage interne à partir de laquelle vos développeurs se connectent. Si vous liez la passerelle à une adresse de bouclage et ne définissez ni `trusted_proxies` ni `public_url`, comme dans le développement local, l'avertissement n'apparaît pas.1023* **Au démarrage** : un avertissement dans le journal opérationnel recommande d'autoriser uniquement les plages privées `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`, `100.64.0.0/10`, `127.0.0.0/8`, `::1/128` et `fc00::/7`, plus toute autre plage interne à partir de laquelle vos développeurs se connectent. Si vous liez la passerelle à une adresse de bouclage et ne définissez ni `trusted_proxies` ni `public_url`, comme dans le développement local, l'avertissement n'apparaît pas.

919* **À l'exécution** : la première fois qu'une demande arrive d'une adresse en dehors de ces plages privées, la passerelle enregistre un avertissement et émet un [événement d'audit `access.public_client`](/docs/fr/claude-apps-gateway-deploy#logs) portant l'IP client. Les deux se déclenchent une fois par processus. Les adresses lien-local, `169.254.0.0/16` et `fe80::/10`, ne comptent pas comme publiques. La passerelle répond à `/healthz` et `/readyz` avant cette vérification, donc les sondes de santé à partir de plages publiques ne la déclenchent pas.1024* **À l'exécution** : la première fois qu'une demande arrive d'une adresse en dehors de ces plages privées, la passerelle enregistre un avertissement et émet un événement d'audit [`access.public_client`](/docs/fr/claude-apps-gateway-deploy#logs) portant l'adresse IP du client. Les deux se déclenchent une fois par processus. Les adresses lien-local, `169.254.0.0/16` et `fe80::/10`, ne comptent pas comme publiques. La passerelle répond à `/healthz` et `/readyz` avant cette vérification, afin que les sondes de santé à partir de plages publiques ne la déclenchent pas.

920 1025 

921Les deux signaux utilisent l'adresse client telle que la passerelle la résout. Si un équilibreur de charge, un port-forward ou un tunnel relaie le trafic et n'est pas listé dans `listen.trusted_proxies`, la passerelle voit l'adresse du relais, qui est généralement privée, donc ni l'avertissement à l'exécution ni une liste d'autorisation privée ne l'attrape.1026Les deux signaux utilisent l'adresse client telle que la passerelle la résout. Si un équilibreur de charge, un port-forward ou un tunnel relaie le trafic et n'est pas listé dans `listen.trusted_proxies`, la passerelle voit l'adresse du relais, qui est généralement privée, afin que ni l'avertissement d'exécution ni une liste d'autorisation privée ne l'attrape.

922 1027 

923Derrière un tel front-end, définissez d'abord [`listen.trusted_proxies`](#listen) afin que la passerelle voie les vraies adresses client, et gardez la passerelle et tout ce qui se trouve devant elle inaccessibles à partir d'Internet public indépendamment.1028Derrière un tel front-end, définissez [`listen.trusted_proxies`](#listen) en premier afin que la passerelle voie les vraies adresses client, et gardez la passerelle et tout ce qui se trouve devant elle inaccessible à partir d'Internet public indépendamment.

924 1029 

925<h2 id="complete-example">1030<h2 id="complete-example">

926 Exemple complet1031 Exemple complet


974store:1079store:

975 postgres_url: ${GATEWAY_POSTGRES_URL}1080 postgres_url: ${GATEWAY_POSTGRES_URL}

976 # max_connections: 51081 # max_connections: 5

1082 # connect_timeout_seconds: 5

977 1083 

978# Active /v1/organizations/spend_limits (reflète l'API Admin Anthropic)1084# Active /v1/organizations/spend_limits (reflète l'API Admin Anthropic)

979# et l'application des limites de dépenses par développeur sur /v1/messages. Omettez pour désactiver.1085# et l'application des limites de dépenses par développeur sur /v1/messages. Omettez pour désactiver.

Details

120 Envoyer l'URL de la passerelle aux machines des développeurs120 Envoyer l'URL de la passerelle aux machines des développeurs

121</h3>121</h3>

122 122 

123Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle. Une fois que vous déployez les clés, Claude Code cesse d'utiliser une clé API restante ou une connexion claude.ai sur la machine, donc planifiez l'envoi avec vos instructions de connexion. [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) décrit les messages que les développeurs voient.123Une fois que la passerelle est en service, envoyez `forceLoginMethod`, `forceLoginGatewayUrl` et `parentSettingsBehavior: "merge"` à la machine de chaque développeur via les paramètres gérés, via MDM ou en écrivant directement le fichier `managed-settings.json` par système d'exploitation. Sans cela, `/login` affiche le sélecteur de compte standard sans option de passerelle.

124 

125Une fois que vous déployez les clés, Claude Code cesse d'utiliser une clé API restante ou une connexion claude.ai sur la machine, donc planifiez l'envoi avec vos instructions de connexion. [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in) décrit les messages que les développeurs voient.

124 126 

125Consultez [où chaque mécanisme stocke la politique](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) pour les chemins de fichiers, et [Paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) pour l'équivalent `bootstrapUrl` de Claude Desktop.127Consultez [où chaque mécanisme stocke la politique](/docs/fr/managed-settings#where-each-mechanism-stores-the-policy) pour les chemins de fichiers, et [Paramètres gérés côté client](/docs/fr/claude-apps-gateway-config#client-side-managed-settings) pour l'équivalent `bootstrapUrl` de Claude Desktop.

126 128 

129<h3 id="large-rollouts">

130 Déploiements à grande échelle

131</h3>

132 

133La connexion est limitée en débit par adresse IP client, et les valeurs par défaut conviennent à une petite équipe. Chaque adresse obtient 30 démarrages de connexion et 10 soumissions de code toutes les 10 minutes. Un déploiement pour des milliers de développeurs peut atteindre ces limites le premier matin, pour l'une de deux raisons :

134 

135* **La passerelle ne peut pas voir au-delà de votre équilibreur de charge.** Sans [`listen.trusted_proxies`](/docs/fr/claude-apps-gateway-config#listen), chaque développeur semble provenir de l'adresse de l'équilibreur de charge et partage une limite. Définissez-le avant toute autre chose. La passerelle enregistre un avertissement la première fois qu'elle ignore un en-tête `X-Forwarded-For`.

136* **De nombreux développeurs partagent quelques adresses de sortie NAT ou VPN.** Ils partagent les limites de ces adresses même lorsque `trusted_proxies` est correct. Augmentez [`rate_limits`](/docs/fr/claude-apps-gateway-config#http-tuning) pour l'adapter.

137 

138Pour dimensionner `max`, divisez les développeurs par les adresses de sortie qu'ils partagent. Estimez combien d'entre eux se connectent dans une période `window_seconds`, qui est 10 minutes par défaut. Puis doublez-le pour couvrir les tentatives et les développeurs qui se connectent à la fois à Claude Code et Claude Desktop.

139 

140Par exemple, 10 000 développeurs derrière 4 adresses de sortie se connectent uniformément sur une heure. C'est 2 500 développeurs par adresse et environ 420 d'entre eux dans chaque 10 minutes, que vous doublez et arrondissez à 1 000. L'exemple ci-dessous définit les deux limites à 1 000 :

141 

142```yaml theme={null}

143rate_limits:

144 device_authorization: { max: 1000, window_seconds: 600 }

145 device_verify: { max: 1000, window_seconds: 600 }

146```

147 

148`device_verify` est ce qui empêche quelqu'un de deviner le code de connexion d'un autre développeur, donc augmentez-le uniquement autant que votre estimation le nécessite. Même à ces limites, un code est 8 caractères d'un alphabet de 20 caractères et expire après 10 minutes, donc deviner reste impraticable ; consultez [Résistance à la force brute du code utilisateur](#user-code-brute-force-resistance).

149 

150Lorsque votre IdP émet des jetons d'actualisation, Claude Code renouvelle les sessions silencieusement, donc vous pouvez remettre la limite après le déploiement. Sans jetons d'actualisation, les développeurs se connectent à nouveau tous les [`session.ttl_hours`](/docs/fr/claude-apps-gateway-config#session). Dimensionnez les deux limites pour ce débit régulier aussi et laissez-les augmentées.

151 

152Lorsqu'une limite est atteinte, Claude Code v2.1.274 ou ultérieur affiche `The gateway is limiting sign-in attempts right now`. Une passerelle sur v2.1.274 ou ultérieur affiche `Too many attempts came from your network address` sur la page de vérification, avec les paramètres à vérifier. Elle écrit également une ligne de journal `sign-in refused` qui nomme le paramètre à modifier.

153 

127<h2 id="operations">154<h2 id="operations">

128 Opérations155 Opérations

129</h2>156</h2>


158 185 

159Le document de découverte OAuth à `/.well-known/oauth-authorization-server` retourne également `200` uniquement après le chargement de la configuration, la découverte OIDC, la construction du client en amont et la migration Postgres réussissent, donc il double comme vérification de démarrage de bout en bout.186Le document de découverte OAuth à `/.well-known/oauth-authorization-server` retourne également `200` uniquement après le chargement de la configuration, la découverte OIDC, la construction du client en amont et la migration Postgres réussissent, donc il double comme vérification de démarrage de bout en bout.

160 187 

188<h3 id="concurrent-upstream-requests">

189 Demandes en amont concurrentes

190</h3>

191 

192Par défaut, chaque réplique de passerelle envoie au maximum 256 demandes en amont en même temps. Une réponse en streaming compte par rapport à la limite jusqu'à ce que le flux se termine.

193 

194Une demande qui arrive tandis qu'une réplique est à la limite attend à l'intérieur de la passerelle pour un créneau libre. Le développeur voit une réponse qui est lente à démarrer ou semble se bloquer. Sur une amont `provider: anthropic`, une demande qui attend plus longtemps que [`timeouts.upstream_ttfb_ms`](/docs/fr/claude-apps-gateway-config#http-tuning) abandonne cet amont, et échoue avec un 502 quand aucun amont ultérieur ne la sert.

195 

196La ligne de journal de démarrage qui contient `upstream requests:` affiche la limite en vigueur. Tandis qu'une réplique a plus de demandes ouvertes que la limite, elle enregistre également un avertissement qui contient `client requests are open`, au maximum une fois par minute.

197 

198Pour servir plus de demandes à la fois, vous avez deux options :

199 

200* Ajouter des répliques.

201* Augmenter la limite sur chaque réplique. Définissez la variable d'environnement `BUN_CONFIG_MAX_HTTP_REQUESTS` sur le conteneur de passerelle à un nombre entier de 1 à 65535, puis redémarrez le conteneur.

202 

203Une réplique remplit sa limite à un taux de demande d'environ la limite divisée par le nombre moyen de secondes qu'une demande reste ouverte. Par exemple, si les demandes restent ouvertes pendant 10 secondes en moyenne, une réplique à la limite par défaut de 256 la remplit à environ 26 demandes par seconde.

204 

205Si vous mettez à l'échelle automatiquement sur CPU, une réplique à la limite met en file d'attente les demandes sans déclencher une montée en charge, donc définissez la cible en dessous du niveau CPU que vos répliques affichent quand elles enregistrent l'avertissement `client requests are open`.

206 

207<Warning>

208 Chaque demande ouverte détient la mémoire dans le processus de passerelle tandis qu'elle diffuse en continu et tandis qu'elle attend un créneau. Si vous gardez la limite à 256, la mémoire sur une réplique surchargée croît toujours, car les demandes en attente conservent leurs corps de demande. Dimensionnez la mémoire du conteneur pour le nombre de demandes ouvertes au pic, et surveillez la mémoire quand vous changez la limite. Une réplique qui manque de mémoire est tuée et abandonne chaque flux qu'elle détient.

209</Warning>

210 

161<h3 id="outage-behavior">211<h3 id="outage-behavior">

162 Comportement en cas de panne212 Comportement en cas de panne

163</h3>213</h3>


205 Mises à jour255 Mises à jour

206</h3>256</h3>

207 257 

208Les répliques sont sans état, donc un redémarrage roulant est sûr à tout moment. La passerelle exécute les migrations de schéma au démarrage, ce qui signifie que le déploiement du nouveau binaire auto-migre la base de données. Les répliques concurrentes se sérialisent sur un verrou consultatif Postgres, donc seule une applique chaque migration.258Les répliques sont sans état, donc un redémarrage roulant ne perd aucun état de passerelle. La passerelle exécute les migrations de schéma au démarrage, ce qui signifie que le déploiement du nouveau binaire auto-migre la base de données. Les répliques concurrentes se sérialisent sur un verrou consultatif Postgres, donc seule une applique chaque migration.

259 

260Quand votre orchestrateur arrête une réplique avec `SIGTERM`, comme dans un redémarrage roulant ou une réduction d'échelle, la passerelle arrête d'accepter les nouvelles connexions et laisse les demandes et les flux déjà en vol se terminer avant de quitter. Elle attend jusqu'à 25 secondes, appelée la fenêtre de drainage, puis ferme tout ce qui est toujours ouvert. Un `SIGINT`, tel que Ctrl+C dans un terminal, démarre le même drainage, et un deuxième signal pendant le drainage ferme les demandes ouvertes et quitte immédiatement. Le drainage nécessite la passerelle v2.1.274 ou ultérieure.

261 

262Les générations longues peuvent diffuser en continu pendant des minutes. Sur Kubernetes et Amazon ECS, augmentez les deux ensemble pour donner à ces flux plus de temps :

263 

264* **La fenêtre de drainage** : définissez la variable d'environnement `CLAUDE_GATEWAY_DRAIN_TIMEOUT_MS` sur le conteneur de passerelle à un nombre entier positif de millisecondes, tel que `120000`. La passerelle ignore une valeur sous toute autre forme, telle que `120s`, et conserve la valeur par défaut de 25 secondes

265* **La période de grâce de votre orchestrateur** : `terminationGracePeriodSeconds` sur Kubernetes, ou `stopTimeout` sur Amazon ECS

266 

267La période de grâce par défaut est de 30 secondes sur les deux plates-formes. Gardez-la au moins 5 secondes plus longue que la fenêtre de drainage, ou l'orchestrateur tue la passerelle avant la fin du drainage. Sur Kubernetes, ajoutez également la durée de tout crochet `preStop`, car la période de grâce commence à compter avant que le crochet ne s'exécute plutôt que quand la passerelle reçoit `SIGTERM`.

268 

269Votre plate-forme peut également limiter la durée du drainage :

270 

271* **Amazon ECS sur Fargate** : `stopTimeout` permet au maximum 120 secondes

272* **Cloud Run** : arrête une instance 10 secondes après `SIGTERM`, donc les flux ouverts obtiennent au maximum 10 secondes là, quelle que soit la fenêtre de drainage

273 

274Quand la fenêtre de drainage se termine avec des demandes toujours ouvertes, la passerelle enregistre un avertissement qui contient `drain window over after`, compte les demandes qu'elle a coupées, et nomme les deux paramètres à augmenter.

209 275 

210Les migrations sont en ajout seul, donc revenir à un binaire antérieur qui connaît moins de migrations est sûr ; il ignore les lignes supplémentaires. La restauration re-valide également le YAML par rapport au schéma du binaire plus ancien, donc une configuration qui a adopté une clé introduite par la version plus récente échoue au démarrage sur l'ancienne. Supprimez la nouvelle clé avant de revenir.276Les migrations sont en ajout seul, donc revenir à un binaire antérieur qui connaît moins de migrations est sûr ; il ignore les lignes supplémentaires. La restauration re-valide également le YAML par rapport au schéma du binaire plus ancien, donc une configuration qui a adopté une clé introduite par la version plus récente échoue au démarrage sur l'ancienne. Supprimez la nouvelle clé avant de revenir.

211 277 


237 303 

238* Les développeurs détiennent des JWT de courte durée au lieu de clés en amont brutes. La jambe CLI-à-passerelle utilise la subvention d'appareil RFC 8628, et l'échange de code d'autorisation de la passerelle avec l'IdP exécute PKCE dans la configuration par défaut, donc un code d'autorisation IdP intercepté est inutile.304* Les développeurs détiennent des JWT de courte durée au lieu de clés en amont brutes. La jambe CLI-à-passerelle utilise la subvention d'appareil RFC 8628, et l'échange de code d'autorisation de la passerelle avec l'IdP exécute PKCE dans la configuration par défaut, donc un code d'autorisation IdP intercepté est inutile.

239* La page de vérification d'appareil applique POST de même origine et une limite de débit par IP par RFC 8628 §5.1. Consultez [Résistance à la force brute du code utilisateur](#user-code-brute-force-resistance).305* La page de vérification d'appareil applique POST de même origine et une limite de débit par IP par RFC 8628 §5.1. Consultez [Résistance à la force brute du code utilisateur](#user-code-brute-force-resistance).

240* Les demandes sortantes passent par une protection contre la falsification de demande côté serveur (SSRF) qui résout DNS, bloque les adresses de lien local et de métadonnées cloud plus la bouclage par défaut, et épingle la connexion à l'IP résolue, donc les URL influencées par l'opérateur telles que l'IdP et les destinations OTLP ne peuvent pas être redirigées vers les points de terminaison de métadonnées cloud. Les plages privées RFC 1918 sont délibérément autorisées, car les IdP et les collecteurs OTLP vivent couramment sur des adresses IP privées. Définissez `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dans l'environnement de la passerelle uniquement lorsque quelque chose que la passerelle doit atteindre légitimement vit sur la bouclage, comme un IdP de développement local ou un collecteur OTLP sidecar sur `localhost`. La variable assouplit le bloc de bouclage pour chaque URL configurée par l'opérateur et ignore également l'avertissement au démarrage qui vérifie si le pod peut atteindre le point de terminaison de métadonnées cloud, donc préférez donner au collecteur sa propre adresse interne.306* Les demandes de la passerelle à votre IdP, vos collecteurs OTLP, et les amonts `provider: anthropic` passent par une protection contre la falsification de demande côté serveur (SSRF) qui résout DNS, bloque les adresses de lien local et de métadonnées cloud plus la bouclage par défaut, et épingle la connexion à l'IP résolue, donc les URL influencées par l'opérateur ne peuvent pas être redirigées vers les points de terminaison de métadonnées cloud. Les plages privées RFC 1918 sont délibérément autorisées, car les IdP et les collecteurs OTLP vivent couramment sur des adresses IP privées. Pour les autres fournisseurs, la passerelle refuse une `base_url` qui nomme l'une de ces adresses ou un nom d'hôte de métadonnées lorsqu'elle charge la config, et le SDK du fournisseur se connecte ensuite sans la vérification DNS.

307 

308 Si vous activez [sortie proxy uniquement](/docs/fr/claude-apps-gateway-config#proxy-only-egress), cette vérification d'adresse se déplace vers votre proxy avant : la passerelle lui transmet les noms d'hôte et la liste d'autorisation du proxy doit refuser ces destinations.

309 

310 Définissez `CLAUDE_GATEWAY_ALLOW_LOOPBACK=1` dans l'environnement de la passerelle uniquement lorsque quelque chose que la passerelle doit atteindre légitimement vit sur la bouclage, comme un IdP de développement local ou un collecteur OTLP sidecar sur `localhost`. La variable assouplit le bloc de bouclage pour chaque URL configurée par l'opérateur et ignore également l'avertissement au démarrage qui vérifie si le pod peut atteindre le point de terminaison de métadonnées cloud, donc préférez donner au collecteur sa propre adresse interne.

241 311 

242Si vous ajoutez vos propres contrôles de sortie, la passerelle doit atteindre le serveur de métadonnées chaque fois qu'elle utilise des credentials de métadonnées d'instance tels que l'identité de charge de travail.312Si vous ajoutez vos propres contrôles de sortie, la passerelle doit atteindre le serveur de métadonnées chaque fois qu'elle utilise des credentials de métadonnées d'instance tels que l'identité de charge de travail.

243 313 


252 322 

253Le `user_code` qu'un développeur tape dans la page de vérification `/device` est 8 caractères tirés d'un alphabet de 20 caractères, ce qui donne 20⁸ ou environ 2,56×10¹⁰ combinaisons, et il expire après 10 minutes.323Le `user_code` qu'un développeur tape dans la page de vérification `/device` est 8 caractères tirés d'un alphabet de 20 caractères, ce qui donne 20⁸ ou environ 2,56×10¹⁰ combinaisons, et il expire après 10 minutes.

254 324 

255La passerelle applique des limites de débit par IP sur les points de terminaison de subvention d'appareil, configurables via [`rate_limits`](/docs/fr/claude-apps-gateway-config#http-tuning). Augmentez les limites si de nombreux développeurs se connectent à partir d'une seule adresse NAT d'entreprise partagée. Les limites s'appliquent uniquement au flux de connexion, pas à l'inférence.325La passerelle applique des limites de débit par IP sur les points de terminaison de subvention d'appareil, configurables via [`rate_limits`](/docs/fr/claude-apps-gateway-config#http-tuning). Augmentez les limites si de nombreux développeurs se connectent à partir d'une seule adresse NAT d'entreprise partagée. [Les déploiements à grande échelle](#large-rollouts) montre comment les dimensionner. Les limites s'appliquent uniquement au flux de connexion, pas à l'inférence.

256 326 

257<h3 id="compliance-posture">327<h3 id="compliance-posture">

258 Posture de conformité328 Posture de conformité


282La sortie d'erreur de la passerelle inclut le flux d'événements d'audit, le journal d'audit enregistre les identités des développeurs, et le fichier de débogage enregistre la sortie des hooks et du serveur MCP de la machine du développeur. Examinez et masquez ces éléments avant de les publier sur un problème public.352La sortie d'erreur de la passerelle inclut le flux d'événements d'audit, le journal d'audit enregistre les identités des développeurs, et le fichier de débogage enregistre la sortie des hooks et du serveur MCP de la machine du développeur. Examinez et masquez ces éléments avant de les publier sur un problème public.

283 353 

284| Symptôme | Cause | Correction |354| Symptôme | Cause | Correction |

285| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |355| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

286| L'écran `/login` d'un développeur affiche le sélecteur de compte standard au lieu de l'écran **Passerelle Cloud** | `forceLoginMethod` ou `forceLoginGatewayUrl` n'est pas défini dans les paramètres gérés sur cette machine | Déployez le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) sur l'appareil ; `/login` lit l'URL de la passerelle à partir de là |356| L'écran `/login` d'un développeur affiche le sélecteur de compte standard au lieu de l'écran **Passerelle Cloud** | `forceLoginMethod` ou `forceLoginGatewayUrl` n'est pas défini dans les paramètres gérés sur cette machine | Déployez le [fichier de paramètres gérés](/docs/fr/claude-apps-gateway#set-the-gateway-url) sur l'appareil ; `/login` lit l'URL de la passerelle à partir de là |

287| Les demandes d'un développeur échouent avec `Not signed in to the Cloud gateway — run /login.` | Les paramètres gérés de la machine définissent `forceLoginMethod: "gateway"` ou `forceLoginGatewayUrl`, et la session n'a pas de connexion à la passerelle. Une connexion claude.ai restante ne satisfait pas à l'exigence. | Demandez au développeur d'exécuter `/login` et de terminer la connexion à la passerelle. Voir aussi [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |357| Les demandes d'un développeur échouent avec `Not signed in to the Cloud gateway — run /login.` | Les paramètres gérés de la machine définissent `forceLoginMethod: "gateway"` ou `forceLoginGatewayUrl`, et la session n'a pas de connexion à la passerelle. Une connexion claude.ai restante ne satisfait pas à l'exigence. | Demandez au développeur d'exécuter `/login` et de terminer la connexion à la passerelle. Voir aussi [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

288| Claude Desktop signale que sa configuration d'amorçage n'a pas pu être récupérée | `/user/bootstrap` a renvoyé 404 : la politique correspondant à l'utilisateur ne porte pas de clé `desktop`, ou aucune politique n'a correspondu. Le journal d'audit de la passerelle enregistre chaque rejet sous la forme `desktop_bootstrap.denied` avec la raison. | Ajoutez un bloc `desktop` à la politique qui correspond à l'utilisateur, ou à la couche de base `match: {}` ; un `desktop: {}` vide suffit. Voir [Superposition Claude Desktop](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay). |358| Claude Desktop signale que sa configuration d'amorçage n'a pas pu être récupérée | `/user/bootstrap` a renvoyé 404 : la politique correspondant à l'utilisateur ne porte pas de clé `desktop`, ou aucune politique n'a correspondu. Le journal d'audit de la passerelle enregistre chaque rejet sous la forme `desktop_bootstrap.denied` avec la raison. | Ajoutez un bloc `desktop` à la politique qui correspond à l'utilisateur, ou à la couche de base `match: {}` ; un `desktop: {}` vide suffit. Voir [Superposition Claude Desktop](/docs/fr/claude-apps-gateway-config#claude-desktop-overlay). |

289| Le démarrage affiche `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La version de Claude Code installée est antérieure au support de la passerelle | Demandez au développeur de mettre à jour Claude Code vers une version qui inclut le support de la passerelle Cloud |359| Le démarrage affiche `Gateway login is configured in managed settings, but this Claude Code build does not include Cloud gateway support.` | La version de Claude Code installée est antérieure au support de la passerelle | Demandez au développeur de mettre à jour Claude Code vers une version qui inclut le support de la passerelle Cloud |

290| Le démarrage se termine avec `Administrator policy requires a Cloud gateway sign-in on this machine` | L'environnement du développeur définit `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN`, ses paramètres configurent un [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), ou une clé API d'une connexion Claude Console antérieure est toujours enregistrée | Demandez au développeur d'effacer chacun de ces éléments : désactiver la variable, supprimer l'entrée `apiKeyHelper`, ou exécuter `claude auth logout` pour supprimer la clé enregistrée. Ensuite, demandez-lui de démarrer `claude` et de se connecter avec `/login`. Voir aussi [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |360| Le démarrage se termine avec `Administrator policy requires a Cloud gateway sign-in on this machine` | L'environnement du développeur définit `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN`, ses paramètres configurent un [`apiKeyHelper`](/docs/fr/settings-reference#apikeyhelper), ou une clé API d'une connexion Claude Console antérieure est toujours enregistrée | Demandez au développeur d'effacer chacun de ces éléments : désactiver la variable, supprimer l'entrée `apiKeyHelper`, ou exécuter `claude auth logout` pour supprimer la clé enregistrée. Ensuite, demandez-lui de démarrer `claude` et de se connecter avec `/login`. Voir aussi [La politique de l'administrateur nécessite une connexion à la passerelle Cloud](/docs/fr/errors#administrator-policy-requires-a-cloud-gateway-sign-in). |

291| Le démarrage ou `/login` signale `Claude Code may not be enabled for your organization` après un 403 lors du chargement des paramètres gérés | La passerelle, ou quelque chose devant elle, a répondu à la demande `/managed/settings` avec 403. La route de paramètres propre de la passerelle ne répond jamais 403. Le statut provient des vérifications IP [`access_control`](/docs/fr/claude-apps-gateway-config#http-tuning) ou d'un proxy ou WAF devant la passerelle. Le journal d'audit enregistre un refus de vérification IP sous la forme `access.denied` avec la raison. Le développeur reste connecté. | Vérifiez le journal d'audit pour `access.denied` au moment de l'échec et corrigez les listes `access_control` ou le front-end, puis demandez au développeur de démarrer `claude` à nouveau |361| Le démarrage ou `/login` signale `Claude Code may not be enabled for your organization` après un 403 lors du chargement des paramètres gérés | La passerelle, ou quelque chose devant elle, a répondu à la demande `/managed/settings` avec 403. La route de paramètres propre de la passerelle ne répond jamais 403. Le statut provient des vérifications IP [`access_control`](/docs/fr/claude-apps-gateway-config#http-tuning) ou d'un proxy ou WAF devant la passerelle. Le journal d'audit enregistre un refus de vérification IP sous la forme `access.denied` avec la raison. Le développeur reste connecté. | Vérifiez le journal d'audit pour `access.denied` au moment de l'échec et corrigez les listes `access_control` ou le front-end, puis demandez au développeur de démarrer `claude` à nouveau |

362| CLI `/login` : `The gateway is limiting sign-in attempts right now`, ou `Request failed with status code 429` sur les versions antérieures. La page `/device` peut afficher `Too many attempts` aux développeurs qui n'ont pas essayé auparavant | La limite de débit de connexion par IP a été atteinte. Soit `listen.trusted_proxies` ne couvre pas l'équilibreur de charge, donc chaque développeur partage son adresse, soit de nombreux développeurs partagent une adresse de sortie NAT ou VPN. Les événements d'audit avec `result: rate_limited` affichent la même une ou quelques valeurs `client_ip`. | Définissez d'abord `listen.trusted_proxies` sur les plages sources de l'équilibreur de charge, puis augmentez `rate_limits` si les développeurs partagent toujours des adresses. Voir [Déploiements à grande échelle](#large-rollouts). |

292| CLI `/login` : `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Le nom d'hôte de la passerelle se résout en au moins une adresse IP publique. Claude Code vérifie chaque adresse résolue et exige que chacune soit privée. Une cause courante est un nom double pile où une famille se résout en une adresse publique, y compris les équilibreurs de charge double pile internes AWS, qui renvoient des adresses AAAA de plage publique. | Faites en sorte que le nom de la passerelle se résout uniquement en adresses privées sur les machines des développeurs. Pour un nom double pile, supprimez l'enregistrement de plage publique ou servez un nom DNS interne uniquement. Voir la [condition préalable du réseau privé](/docs/fr/claude-apps-gateway#prerequisites). Si l'adresse est un espace public que votre organisation possède et utilise en interne, [déclarez ce bloc](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) à la place. |363| CLI `/login` : `Gateway hosts must be on your organization's private network; <host> resolves to the public (or unrecognized) address <ip>` | Le nom d'hôte de la passerelle se résout en au moins une adresse IP publique. Claude Code vérifie chaque adresse résolue et exige que chacune soit privée. Une cause courante est un nom double pile où une famille se résout en une adresse publique, y compris les équilibreurs de charge double pile internes AWS, qui renvoient des adresses AAAA de plage publique. | Faites en sorte que le nom de la passerelle se résout uniquement en adresses privées sur les machines des développeurs. Pour un nom double pile, supprimez l'enregistrement de plage publique ou servez un nom DNS interne uniquement. Voir la [condition préalable du réseau privé](/docs/fr/claude-apps-gateway#prerequisites). Si l'adresse est un espace public que votre organisation possède et utilise en interne, [déclarez ce bloc](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) à la place. |

293| CLI `/login` : `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur pour que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées. Le message nomme l'entrée `NO_PROXY` exacte à ajouter |364| CLI `/login` : `Gateway login would go through proxy <proxy>, which is not on a private network` | Un `HTTPS_PROXY` ou `HTTP_PROXY` s'applique à l'hôte de la passerelle et le nom d'hôte du proxy se résout en une adresse publique. Un proxy dont l'hôte se résout uniquement en adresses privées est autorisé et ne déclenche pas cette erreur | Ajoutez l'hôte de la passerelle à `NO_PROXY` sur la machine du développeur pour que la connexion soit directe, ou utilisez un proxy dont le nom d'hôte se résout en adresses privées. Le message nomme l'entrée `NO_PROXY` exacte à ajouter |

294| CLI `/login` : `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | La passerelle se trouve sur un bloc déclaré dans [`gatewayInternalNetworks`](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), et la machine du développeur l'a atteinte à partir d'une adresse en dehors de ce bloc : une adresse de pool VPN, un segment NAT de conteneur ou WSL2, ou un réseau qui n'est pas le vôtre | Demandez au développeur d'exécuter `/login` à partir du système d'exploitation hôte sur votre réseau. Si l'adresse affichée est également votre propre espace public, remplacez l'entrée de la passerelle par un bloc qui couvre les deux, jusqu'à `/8` ; une deuxième entrée chevauchante est refusée |365| CLI `/login` : `Claude Code only signs in to <host> from inside its declared network <block> (managed settings), and this machine is connecting from <ip>, outside it` | La passerelle se trouve sur un bloc déclaré dans [`gatewayInternalNetworks`](/docs/fr/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own), et la machine du développeur l'a atteinte à partir d'une adresse en dehors de ce bloc : une adresse de pool VPN, un segment NAT de conteneur ou WSL2, ou un réseau qui n'est pas le vôtre | Demandez au développeur d'exécuter `/login` à partir du système d'exploitation hôte sur votre réseau. Si l'adresse affichée est également votre propre espace public, remplacez l'entrée de la passerelle par un bloc qui couvre les deux, jusqu'à `/8` ; une deuxième entrée chevauchante est refusée |


299| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis de réessayer `/login` |370| CLI `/login` : `Could not resolve gateway host <host>` | La machine ne peut pas résoudre le nom DNS interne de la passerelle, généralement parce qu'elle n'est pas sur le réseau d'entreprise | Demandez au développeur de se connecter à votre réseau ou VPN, puis de réessayer `/login` |

300| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |371| Le démarrage se termine avec une erreur de validation de configuration nommant `store.postgres_url` | Aucun Postgres configuré ; la passerelle nécessite Postgres | Définissez `store.postgres_url`. Pour le développement local, utilisez un conteneur jetable : `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

301| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/docs/fr/setup) |372| Le démarrage se termine : `requires the native binary` | Exécution sous Node au lieu du binaire natif | Installez Claude Code avec l'une des [méthodes d'installation autonome](/docs/fr/setup) |

302| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible à partir du pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. Si le pod atteint l'IdP uniquement via un proxy de transfert, définissez [`oidc.use_proxy: true`](/docs/fr/claude-apps-gateway-config#idp-requests-through-a-forward-proxy) ; sur les versions antérieures à v2.1.227, donnez au pod une route directe vers chacun des points de terminaison de l'IdP à la place. |373| Le démarrage se termine avec une erreur de découverte OIDC après `config.load` | `oidc.issuer` inaccessible, ou chaîne TLS non approuvée | Vérifiez que l'émetteur est accessible à partir du pod et sert `/.well-known/openid-configuration`. Définissez `ca_cert_pem` pour l'infrastructure à clé publique privée. Si le pod atteint l'IdP uniquement via un proxy de transfert, définissez [`oidc.use_proxy: true`](/docs/fr/claude-apps-gateway-config#idp-requests-through-a-forward-proxy) ; sur les versions antérieures à v2.1.227, donnez au pod une route directe vers chacun des points de terminaison de l'IdP à la place. Si le pod ne peut pas non plus résoudre le nom d'hôte de l'IdP, ou le proxy refuse `CONNECT` à une adresse IP, voir [Sortie proxy uniquement](/docs/fr/claude-apps-gateway-config#proxy-only-egress), qui nécessite v2.1.277 ou ultérieur. |

303| Le démarrage se termine avec une erreur de permission Postgres | Le rôle de base de données manque de droits DDL sur son schéma | Accordez au rôle `CREATE` sur le schéma de la passerelle pour qu'il puisse créer et modifier ses tables au démarrage |374| Le démarrage se termine avec une erreur de permission Postgres | Le rôle de base de données manque de droits DDL sur son schéma | Accordez au rôle `CREATE` sur le schéma de la passerelle pour qu'il puisse créer et modifier ses tables au démarrage |

375| Journal : `could not connect to Postgres at boot, attempt 1 of 3` | La base de données n'était pas accessible lorsque la passerelle a démarré, par exemple sur une instance froide dont le réseau est encore en cours de configuration | Si la passerelle termine ensuite le démarrage, aucune action n'est nécessaire. Lorsque la base de données n'est pas accessible, la passerelle essaie la connexion trois fois, deux secondes d'intervalle, avant de se terminer. Si elle se termine avec `could not connect to Postgres`, vérifiez `store.postgres_url` et le chemin réseau vers la base de données. Si les tentatives expirent plutôt que d'être refusées, augmentez [`store.connect_timeout_seconds`](/docs/fr/claude-apps-gateway-config#store) pour donner à chacune plus de temps. |

304| `/oauth/callback` affiche « Sign-in could not be completed » | Domaine de courrier électronique rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP renvoie une réclamation `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet le courrier électronique sous un nom de réclamation différent, définissez `oidc.email_claim`. |376| `/oauth/callback` affiche « Sign-in could not be completed » | Domaine de courrier électronique rejeté, validation id\_token échouée, ou `email_verified` est explicitement `false`, que la passerelle rejette toujours sans remplacement | Vérifiez `allowed_email_domains` et que l'IdP renvoie une réclamation `email` vérifiée. Pour `email_verified: false`, corrigez la vérification côté IdP. Si votre IdP émet le courrier électronique sous un nom de réclamation différent, définissez `oidc.email_claim`. |

305| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce rejet ne se déclenche que lorsque `allowed_email_domains` est défini ; sans lui, un courrier électronique manquant crée une session sans courrier électronique | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux réclamations de jeton d'ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme réclamation facultative sur l'enregistrement de l'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir du point de terminaison userinfo mais ne l'inclura pas dans l'id\_token, comme le serveur d'autorisation org Okta, définissez `oidc.userinfo_fallback: true`. |377| Journal : `token exchange failed request_id=<id>: id_token missing email claim` | L'IdP n'inclut pas `email` dans l'id\_token par défaut. Ce rejet ne se déclenche que lorsque `allowed_email_domains` est défini ; sans lui, un courrier électronique manquant crée une session sans courrier électronique | Configurez l'IdP pour émettre `email` dans l'id\_token. Okta : ajoutez `email` aux réclamations de jeton d'ID d'un serveur d'autorisation personnalisé. Entra : ajoutez `email` comme réclamation facultative sur l'enregistrement de l'application. PingFederate : activez une politique OpenID Connect qui émet `email`. Si l'IdP sert `email` à partir du point de terminaison userinfo mais ne l'inclura pas dans l'id\_token, comme le serveur d'autorisation org Okta, définissez `oidc.userinfo_fallback: true`. |

306| Journal : `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, et les développeurs voient `Cloud gateway session expired` tous les `session.ttl_hours` | L'IdP a accepté le jeton d'actualisation mais n'a renvoyé aucun id\_token avec lui, donc la passerelle a demandé au point de terminaison userinfo de l'IdP les réclamations de l'utilisateur. L'IdP a rejeté le jeton d'accès actualisé là. La passerelle répond `temporarily_unavailable`, donc Claude Code conserve le jeton d'actualisation mais ne peut pas renouveler la session. Les versions de passerelle antérieures à v2.1.260 enregistrent la même ligne sans le détail `(at …)`. | Définissez [`oidc.scope_on_refresh: true`](/docs/fr/claude-apps-gateway-config#oidc), disponible dans la passerelle v2.1.260 ou ultérieure, pour que la demande d'actualisation demande à nouveau `openid`. Certains IdP, comme Okta, renvoient un id\_token lors de l'actualisation uniquement lorsqu'on le demande. Sur PingFederate, activez **Return ID Token On Refresh Grant** sous **Applications > OAuth > OpenID Connect Policy Management** à la place. La clé ne change pas le comportement de PingFederate. Pour les autres IdP qui l'omettent toujours, vérifiez si le point de terminaison userinfo accepte les jetons d'accès émis par une actualisation. En tant que solution temporaire, augmentez [`session.ttl_hours`](/docs/fr/claude-apps-gateway-config#session). Voir [Configuration du fournisseur d'identité](#identity-provider-setup) pour le compromis de déprovisionnement. |378| Journal : `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, et les développeurs voient `Cloud gateway session expired` tous les `session.ttl_hours` | L'IdP a accepté le jeton d'actualisation mais n'a renvoyé aucun id\_token avec lui, donc la passerelle a demandé au point de terminaison userinfo de l'IdP les réclamations de l'utilisateur. L'IdP a rejeté le jeton d'accès actualisé là. La passerelle répond `temporarily_unavailable`, donc Claude Code conserve le jeton d'actualisation mais ne peut pas renouveler la session. Les versions de passerelle antérieures à v2.1.260 enregistrent la même ligne sans le détail `(at …)`. | Définissez [`oidc.scope_on_refresh: true`](/docs/fr/claude-apps-gateway-config#oidc), disponible dans la passerelle v2.1.260 ou ultérieure, pour que la demande d'actualisation demande à nouveau `openid`. Certains IdP, comme Okta, renvoient un id\_token lors de l'actualisation uniquement lorsqu'on le demande. Sur PingFederate, activez **Return ID Token On Refresh Grant** sous **Applications > OAuth > OpenID Connect Policy Management** à la place. La clé ne change pas le comportement de PingFederate. Pour les autres IdP qui l'omettent toujours, vérifiez si le point de terminaison userinfo accepte les jetons d'accès émis par une actualisation. En tant que solution temporaire, augmentez [`session.ttl_hours`](/docs/fr/claude-apps-gateway-config#session). Voir [Configuration du fournisseur d'identité](#identity-provider-setup) pour le compromis de déprovisionnement. |

307| Chaque demande Amazon Bedrock renvoie 502 ; le journal affiche `Could not load credentials from any providers` | Sur EC2, la limite de saut par défaut d'IMDSv2 de 1 bloque la demande de métadonnées d'instance de l'intérieur du conteneur. Le démarrage et `/readyz` réussissent quand même parce que le SDK AWS résout les identifiants d'instance à la première demande, pas à la construction du client | Augmentez la limite de saut avec `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou définissez-la dans le modèle de lancement. La modification s'applique à chaque conteneur sur l'instance. Préférez les rôles de tâche ECS le cas échéant, qui lisent les identifiants à partir du point de terminaison des identifiants de conteneur ECS et évitent complètement la modification, ou appliquez la modification sur une instance de passerelle dédiée pour limiter l'exposition. |379| Chaque demande Amazon Bedrock renvoie 502 ; le journal affiche `Could not load credentials from any providers` | Sur EC2, la limite de saut par défaut d'IMDSv2 de 1 bloque la demande de métadonnées d'instance de l'intérieur du conteneur. Le démarrage et `/readyz` réussissent quand même parce que le SDK AWS résout les identifiants d'instance à la première demande, pas à la construction du client | Augmentez la limite de saut avec `aws ec2 modify-instance-metadata-options --instance-id <id> --http-put-response-hop-limit 2`, ou définissez-la dans le modèle de lancement. La modification s'applique à chaque conteneur sur l'instance. Préférez les rôles de tâche ECS le cas échéant, qui lisent les identifiants à partir du point de terminaison des identifiants de conteneur ECS et évitent complètement la modification, ou appliquez la modification sur une instance de passerelle dédiée pour limiter l'exposition. |

380| À charge maximale, les réponses sont lentes à démarrer ou semblent se bloquer, ou échouent avec un 502 `all upstreams failed` alors que l'upstream est sain | Une réplica a plus de demandes ouvertes qu'elle n'en envoie en amont à la fois, donc les demandes supplémentaires attendent à l'intérieur de la passerelle. Sur un upstream `provider: anthropic`, une demande qui attend plus longtemps que `timeouts.upstream_ttfb_ms` abandonne cet upstream, ce qui produit le 502 lorsqu'aucun upstream ultérieur ne la sert. Le journal affiche un avertissement contenant `client requests are open`. | Ajoutez des réplicas, ou augmentez la limite sur chaque réplica. Voir [Demandes upstream concurrentes](#concurrent-upstream-requests). |

308| Erreur IdP : portée inconnue ou non prise en charge | L'IdP rejette les portées qu'il ne reconnaît pas | Définissez `oidc.scopes` exactement à la liste que votre IdP accepte ; elle doit inclure `openid`. La valeur par défaut est `openid profile email offline_access`. |381| Erreur IdP : portée inconnue ou non prise en charge | L'IdP rejette les portées qu'il ne reconnaît pas | Définissez `oidc.scopes` exactement à la liste que votre IdP accepte ; elle doit inclure `openid`. La valeur par défaut est `openid profile email offline_access`. |

309| Les sessions ne se renouvellent pas silencieusement après la définition de `oidc.scopes` | `offline_access` a été supprimé de la substitution | Rajoutez `offline_access` si votre IdP le prend en charge. Sans jeton d'actualisation, les développeurs réexécutent la connexion du navigateur tous les `session.ttl_hours`. |382| Les sessions ne se renouvellent pas silencieusement après la définition de `oidc.scopes` | `offline_access` a été supprimé de la substitution | Rajoutez `offline_access` si votre IdP le prend en charge. Sans jeton d'actualisation, les développeurs réexécutent la connexion du navigateur tous les `session.ttl_hours`. |

310| Le navigateur affiche « This request came from another site and was blocked » | POST de formulaire intersite, bloqué comme protection CSRF. Attendu pour les pages intégrées ou proxifiées | Ouvrez le lien de vérification directement |383| Le navigateur affiche « This request came from another site and was blocked » | POST de formulaire intersite, bloqué comme protection CSRF. Attendu pour les pages intégrées ou proxifiées | Ouvrez le lien de vérification directement |

Details

504| Les demandes Bedrock retournent `403 AccessDeniedException` | Le compte n'a pas soumis le formulaire de cas d'usage unique d'Anthropic, l'abonnement AWS Marketplace automatique qui commence à la première invocation du compte n'a pas encore terminé, ou la politique du rôle de tâche manque les ARN de profil d'inférence ou de modèle de base | Soumettez le formulaire de cas d'usage à partir du catalogue de modèles de la console Bedrock ; s'il vient d'être soumis ou s'il s'agit de la première invocation du compte, réessayez après quelques minutes. Accordez `bedrock:InvokeModel` et `bedrock:InvokeModelWithResponseStream` sur les deux familles d'ARN. |504| Les demandes Bedrock retournent `403 AccessDeniedException` | Le compte n'a pas soumis le formulaire de cas d'usage unique d'Anthropic, l'abonnement AWS Marketplace automatique qui commence à la première invocation du compte n'a pas encore terminé, ou la politique du rôle de tâche manque les ARN de profil d'inférence ou de modèle de base | Soumettez le formulaire de cas d'usage à partir du catalogue de modèles de la console Bedrock ; s'il vient d'être soumis ou s'il s'agit de la première invocation du compte, réessayez après quelques minutes. Accordez `bedrock:InvokeModel` et `bedrock:InvokeModelWithResponseStream` sur les deux familles d'ARN. |

505| Bedrock retourne une `ValidationException` disant que le débit à la demande n'est pas pris en charge | Une entrée `models:` personnalisée mappe à un ID de modèle de base nu que la région ne sert que via des profils d'inférence | Mappez le modèle à son ID de profil d'inférence inter-régions (`us.anthropic.*`) à la place ; le catalogue intégré le fait déjà |505| Bedrock retourne une `ValidationException` disant que le débit à la demande n'est pas pris en charge | Une entrée `models:` personnalisée mappe à un ID de modèle de base nu que la région ne sert que via des profils d'inférence | Mappez le modèle à son ID de profil d'inférence inter-régions (`us.anthropic.*`) à la place ; le catalogue intégré le fait déjà |

506| La tâche ECS s'arrête avec `ResourceInitializationError` avant que la passerelle ne journalise quoi que ce soit | Le rôle d'exécution ne peut pas lire les secrets Secrets Manager, ou les sous-réseaux privés n'ont pas de chemin vers Secrets Manager ou ECR | Accordez `secretsmanager:GetSecretValue` sur les ARN des trois secrets `gateway-` au rôle d'exécution, et fournissez une sortie via la passerelle NAT, ou, sans elle, des points de terminaison d'interface pour Secrets Manager, ECR et CloudWatch Logs, que le pilote `awslogs` a besoin au même stade, plus un point de terminaison de passerelle S3 |506| La tâche ECS s'arrête avec `ResourceInitializationError` avant que la passerelle ne journalise quoi que ce soit | Le rôle d'exécution ne peut pas lire les secrets Secrets Manager, ou les sous-réseaux privés n'ont pas de chemin vers Secrets Manager ou ECR | Accordez `secretsmanager:GetSecretValue` sur les ARN des trois secrets `gateway-` au rôle d'exécution, et fournissez une sortie via la passerelle NAT, ou, sans elle, des points de terminaison d'interface pour Secrets Manager, ECR et CloudWatch Logs, que le pilote `awslogs` a besoin au même stade, plus un point de terminaison de passerelle S3 |

507| Le démarrage de la passerelle se termine avec une erreur de délai d'expiration de connexion Postgres | Le groupe de sécurité de la base de données n'admet pas le groupe de sécurité de la passerelle sur le port 5432, ou le service s'exécute en dehors du VPC de la base de données ; le store arrête d'attendre après 5 secondes | Autorisez le port 5432 à partir du groupe de sécurité de la passerelle sur celui de la base de données, et exécutez le service dans le même VPC que le groupe de sous-réseaux DB |507| Le démarrage de la passerelle se termine avec une erreur de délai d'expiration de connexion Postgres | Le groupe de sécurité de la base de données n'admet pas le groupe de sécurité de la passerelle sur le port 5432, ou le service s'exécute en dehors du VPC de la base de données | Autorisez le port 5432 à partir du groupe de sécurité de la passerelle sur celui de la base de données, et exécutez le service dans le même VPC que le groupe de sous-réseaux DB |

508| Le démarrage de la passerelle se termine avec une erreur de vérification du certificat TLS Postgres | La chaîne de connexion définit `sslmode=verify-full` mais l'image ne fait pas confiance au bundle d'autorité de certification RDS : le bundle n'a pas été copié dans l'image, ou `NODE_EXTRA_CA_CERTS` ne le pointe pas | Ajoutez les deux lignes Dockerfile de l'étape de construction qui copient le bundle et définissent `NODE_EXTRA_CA_CERTS`, puis reconstruisez, poussez sous une nouvelle balise et redéployez |508| Le démarrage de la passerelle se termine avec une erreur de vérification du certificat TLS Postgres | La chaîne de connexion définit `sslmode=verify-full` mais l'image ne fait pas confiance au bundle d'autorité de certification RDS : le bundle n'a pas été copié dans l'image, ou `NODE_EXTRA_CA_CERTS` ne le pointe pas | Ajoutez les deux lignes Dockerfile de l'étape de construction qui copient le bundle et définissent `NODE_EXTRA_CA_CERTS`, puis reconstruisez, poussez sous une nouvelle balise et redéployez |

509| Les réponses de streaming se décrochent au milieu du flux après une période calme | Une passerelle plus ancienne que v2.1.229 sur un upstream Bedrock ou Claude Platform on AWS n'envoie rien pendant que l'upstream est calme, par exemple lors de la réflexion étendue sans sortie en flux. L'ALB ferme une connexion après 60 secondes sans données par défaut, donc il coupe le flux à cette lacune. Les passerelles v2.1.229 et ultérieures gardent un flux calme sous ce délai : sur ces upstreams, la passerelle émet un événement SSE `ping` une fois qu'environ 15 secondes passent sans données de flux, et sur un upstream API Anthropic, elle relaye les pings propres de l'API | Mettez à jour la passerelle vers v2.1.229 ou ultérieur, ou définissez l'attribut `idle_timeout.timeout_seconds` sur `3600`, via `modify-load-balancer-attributes` ou l'annotation `load-balancer-attributes` Ingress sur EKS |509| Les réponses de streaming se décrochent au milieu du flux après une période calme | Une passerelle plus ancienne que v2.1.229 sur un upstream Bedrock ou Claude Platform on AWS n'envoie rien pendant que l'upstream est calme, par exemple lors de la réflexion étendue sans sortie en flux. L'ALB ferme une connexion après 60 secondes sans données par défaut, donc il coupe le flux à cette lacune. Les passerelles v2.1.229 et ultérieures gardent un flux calme sous ce délai : sur ces upstreams, la passerelle émet un événement SSE `ping` une fois qu'environ 15 secondes passent sans données de flux, et sur un upstream API Anthropic, elle relaye les pings propres de l'API | Mettez à jour la passerelle vers v2.1.229 ou ultérieur, ou définissez l'attribut `idle_timeout.timeout_seconds` sur `3600`, via `modify-load-balancer-attributes` ou l'annotation `load-balancer-attributes` Ingress sur EKS |

510 510 

Details

282 282 

283Chaque session affiche un indicateur de diff avec les lignes ajoutées et supprimées, comme `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, laisser des commentaires en ligne sur des lignes spécifiques et les envoyer à Claude avec votre prochain message.283Chaque session affiche un indicateur de diff avec les lignes ajoutées et supprimées, comme `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, laisser des commentaires en ligne sur des lignes spécifiques et les envoyer à Claude avec votre prochain message.

284 284 

285La vue diff compare les modifications de la session par rapport à sa branche de base par défaut. Pour comparer avec n'importe quelle autre branche du référentiel, sélectionnez **Comparer avec** et choisissez-en une.

286 

285Claude Code calcule ces diffs, y compris les diffs par fichier affichés lors des modifications de Claude, à partir du contenu brut des blobs git, de sorte que les pilotes diff et les filtres `textconv` configurés dans le référentiel ne s'appliquent pas. Pour un fichier dans un référentiel qui n'est pas l'un des checkouts de la session, comme un cloné à l'intérieur de l'espace de travail pendant la session, le diff par fichier affiche la modification de Claude elle-même plutôt qu'une comparaison git.287Claude Code calcule ces diffs, y compris les diffs par fichier affichés lors des modifications de Claude, à partir du contenu brut des blobs git, de sorte que les pilotes diff et les filtres `textconv` configurés dans le référentiel ne s'appliquent pas. Pour un fichier dans un référentiel qui n'est pas l'un des checkouts de la session, comme un cloné à l'intérieur de l'espace de travail pendant la session, le diff par fichier affiche la modification de Claude elle-même plutôt qu'une comparaison git.

286 288 

287Consultez [Examiner et itérer](/docs/fr/web-quickstart#review-and-iterate) pour la procédure complète incluant la création de PR. Pour que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen, consultez [Correction automatique des demandes de tirage](#auto-fix-pull-requests).289Consultez [Examiner et itérer](/docs/fr/web-quickstart#review-and-iterate) pour la procédure complète incluant la création de PR. Pour que Claude surveille automatiquement la PR pour les défaillances CI et les commentaires d'examen, consultez [Correction automatique des demandes de tirage](#auto-fix-pull-requests).

Details

41Configurez un environnement quand le défaut ne suffit pas : quand Claude doit atteindre des domaines en dehors de la [liste d'autorisation par défaut](#default-allowed-domains), a besoin de variables d'environnement définies pour ses sessions, ou a besoin de dépendances installées avant de commencer à travailler.41Configurez un environnement quand le défaut ne suffit pas : quand Claude doit atteindre des domaines en dehors de la [liste d'autorisation par défaut](#default-allowed-domains), a besoin de variables d'environnement définies pour ses sessions, ou a besoin de dépendances installées avant de commencer à travailler.

42 42 

43<h2 id="configure-your-environment">43<h2 id="configure-your-environment">

44 Configurez votre environnement44 Configurer votre environnement

45</h2>45</h2>

46 46 

47Créez, modifiez et archivez les environnements à partir du sélecteur d'environnement, que vous atteignez sur [claude.ai/code](https://claude.ai/code) après [l'intégration web](/docs/fr/web-quickstart), ou à partir de la boîte de message dans l'[application de bureau](/docs/fr/desktop#cloud-sessions). Les environnements que vous créez sont personnels à votre compte ; les [environnements partagés](#organization-shared-environments) créés par un propriétaire apparaissent dans le même sélecteur. Consultez [Outils installés](#installed-tools) pour voir ce qui est disponible sans aucune configuration.47Créez, modifiez et archivez des environnements à partir du sélecteur d'environnement, accessible sur [claude.ai/code](https://claude.ai/code) après [l'intégration web](/docs/fr/web-quickstart), ou à partir de la zone de message dans l'[application de bureau](/docs/fr/desktop#cloud-sessions). Les environnements que vous créez sont personnels à votre compte ; les [environnements partagés](#organization-shared-environments) créés par un propriétaire apparaissent dans le même sélecteur. Consultez [Outils installés](#installed-tools) pour voir ce qui est disponible sans aucune configuration.

48 48 

49<Steps>49<Steps>

50 <Step title="Ouvrez le sélecteur d'environnement">50 <Step title="Ouvrir le sélecteur d'environnement">

51 Sur [claude.ai/code](https://claude.ai/code), sélectionnez l'icône cloud affichant le nom de l'environnement actuel, dans la ligne au-dessus de la boîte de message. Il n'y a pas de page de paramètres ou d'URL directe pour le sélecteur.51 Sur [claude.ai/code](https://claude.ai/code), sélectionnez l'icône cloud affichant le nom de l'environnement actuel, dans la ligne au-dessus de la zone de message. Il n'y a pas de page de paramètres ou d'URL directe pour le sélecteur.

52 52 

53 <Frame>53 <Frame>

54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Le sélecteur d'environnement ouvert au-dessus de la boîte de message sur claude.ai/code. Le bouton cloud affichant le nom de l'environnement Default se trouve dans la ligne au-dessus de la boîte de message. Le menu ouvert liste une ligne Local avec les étiquettes Download et Desktop only, une section Cloud où l'environnement Default est sélectionné avec une coche et affiche une icône d'engrenage de paramètres au survol, une option Add cloud environment, et une section Remote Control avec les instructions de configuration." width="1672" height="682" data-path="images/cloud-environment-selector.png" />54 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-selector.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=cc2813a5664519eaf5a89d793ce5af26" alt="Le sélecteur d'environnement ouvert au-dessus de la zone de message sur claude.ai/code. Le bouton cloud affichant le nom de l'environnement Default se trouve dans la ligne au-dessus de la zone de message. Le menu ouvert liste une ligne Local avec les étiquettes Download et Desktop only, une section Cloud où l'environnement Default est sélectionné avec une coche et affiche une icône d'engrenage de paramètres au survol, une option Add cloud environment, et une section Remote Control avec les instructions de configuration." width="1672" height="682" data-path="images/cloud-environment-selector.png" />

55 </Frame>55 </Frame>

56 </Step>56 </Step>

57 57 

58 <Step title="Ajoutez ou modifiez un environnement">58 <Step title="Ajouter ou modifier un environnement">

59 Sélectionnez **Add cloud environment**, ou survolez un environnement existant et sélectionnez l'icône de paramètres qui apparaît à droite. La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. Quand vous modifiez un environnement cloud existant sur un plan Pro ou Max, la boîte de dialogue inclut également les [identifiants API](#add-api-credentials).59 Sélectionnez **Add cloud environment**, ou survolez un environnement existant et sélectionnez l'icône de paramètres qui apparaît à droite. La boîte de dialogue inclut le nom, le niveau d'accès réseau, les variables d'environnement et le script de configuration. Lorsque vous modifiez un environnement cloud existant sur un plan Pro ou Max, la boîte de dialogue inclut également les [identifiants API](#add-api-credentials).

60 60 

61 <Frame>61 <Frame>

62 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La boîte de dialogue New cloud environment. Un champ Name avec le texte d'espace réservé Default, un sélecteur Network access défini sur Trusted avec des liens vers la politique réseau et les niveaux d'accès, une boîte Environment variables affichant un texte d'espace réservé au format .env avec une note indiquant que les valeurs sont visibles pour quiconque utilise l'environnement, une boîte Setup script décrite comme un script Bash qui s'exécute quand une nouvelle session démarre avant le lancement de Claude Code, et les boutons Cancel et Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />62 <img src="https://mintcdn.com/claude-code/ZFId6l95856c5LSw/images/cloud-environment-dialog.png?fit=max&auto=format&n=ZFId6l95856c5LSw&q=85&s=30d4478b31d1f879f7ee287ddab32505" alt="La boîte de dialogue New cloud environment. Un champ Name avec le texte d'espace réservé Default, un sélecteur Network access défini sur Trusted avec des liens vers la politique réseau et les niveaux d'accès, une zone Environment variables affichant un texte d'espace réservé au format .env avec une note indiquant que les valeurs sont visibles pour quiconque utilise l'environnement, une zone Setup script décrite comme un script Bash qui s'exécute au démarrage d'une nouvelle session avant le lancement de Claude Code, et les boutons Cancel et Create environment." width="874" height="1372" data-path="images/cloud-environment-dialog.png" />

63 </Frame>63 </Frame>

64 </Step>64 </Step>

65</Steps>65</Steps>

66 66 

67<h3 id="set-environment-variables">67<h3 id="set-environment-variables">

68 Définissez les variables d'environnement68 Définir les variables d'environnement

69</h3>69</h3>

70 70 

71Les variables d'environnement utilisent le format `.env`, une paire `KEY=value` par ligne. Les valeurs simples n'ont pas besoin de guillemets, et si vous citez une valeur avec une paire correspondante, les guillemets ne deviennent pas partie de la valeur. Citez une valeur qui s'étend sur plusieurs lignes ou contient un `#` : dans une valeur non citée, `#` démarre un commentaire et le reste de la ligne est supprimé.71Les variables d'environnement utilisent le format `.env`, une paire `KEY=value` par ligne. Les valeurs simples n'ont pas besoin de guillemets, et si vous mettez une valeur entre guillemets avec une paire correspondante, les guillemets ne font pas partie de la valeur. Mettez entre guillemets une valeur qui s'étend sur plusieurs lignes ou contient un `#` : dans une valeur sans guillemets, `#` démarre un commentaire et le reste de la ligne est supprimé.

72 72 

73L'exemple suivant définit trois variables.73L'exemple suivant définit trois variables.

74 74 


78DATABASE_URL=postgres://localhost:5432/myapp78DATABASE_URL=postgres://localhost:5432/myapp

79```79```

80 80 

81Chaque session copie les valeurs de l'environnement une fois, au démarrage, dans des variables d'environnement ordinaires que n'importe quelle commande que Claude exécute peut lire. Parce que les sessions en cours d'exécution ne relisent pas la configuration, modifier ou ajouter des variables affecte les sessions que vous démarrez après ; les sessions déjà en cours d'exécution conservent les valeurs avec lesquelles elles ont démarré.81Chaque session copie les valeurs de l'environnement une fois, au démarrage, dans des variables d'environnement ordinaires que toute commande exécutée par Claude peut lire. Comme les sessions en cours d'exécution ne relisent pas la configuration, la modification ou l'ajout de variables affecte les sessions que vous démarrez par la suite ; les sessions déjà en cours d'exécution conservent les valeurs avec lesquelles elles ont démarré.

82 82 

83Une session cloud définit également certaines variables elle-même quand elle démarre. Pour [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/fr/claude-code-on-the-web#manage-context), la valeur que la session définit remplace celle que vous ajoutez ici, donc ajouter cette clé ici n'a aucun effet.83Une session cloud définit également certaines variables elle-même au démarrage. Pour [`CLAUDE_AUTOCOMPACT_PCT_OVERRIDE`](/docs/fr/claude-code-on-the-web#manage-context), la valeur que la session définit remplace celle que vous ajoutez ici, donc ajouter cette clé ici n'a aucun effet.

84 84 

85Quiconque utilise l'environnement peut lire les valeurs. Sur les plans Pro et Max, utilisez plutôt un [identifiant API](#add-api-credentials) pour une clé que le proxy d'agent peut joindre à une requête. Les [requêtes qui ne reçoivent jamais d'identifiant](#requests-that-never-get-the-credential) sont listées là.85Quiconque utilise l'environnement peut lire les valeurs. Sur les plans Pro et Max, utilisez plutôt une [identifiant API](#add-api-credentials) pour une clé que le proxy d'agent peut joindre à une demande. Les [demandes qui ne reçoivent jamais d'identifiant](#requests-that-never-get-the-credential) sont listées là.

86 86 

87<h3 id="add-api-credentials">87<h3 id="add-api-credentials">

88 Ajoutez des identifiants API88 Ajouter des identifiants API

89</h3>89</h3>

90 90 

91Un identifiant API est une clé API ou un jeton que vous stockez sur un environnement cloud afin que Claude puisse appeler cette API à partir de n'importe quelle session dans l'environnement sans voir la clé. Le proxy d'agent d'Anthropic ajoute la clé aux requêtes pour les hôtes que vous listez, après que chaque requête quitte la VM de la session. La clé n'atteint jamais Claude, les commandes qu'il exécute, ou les variables d'environnement de la session.91Un identifiant API est une clé API ou un jeton que vous stockez sur un environnement cloud afin que Claude puisse appeler cette API à partir de n'importe quelle session dans l'environnement sans voir la clé. Le proxy d'agent d'Anthropic ajoute la clé aux demandes pour les hôtes que vous listez, après que chaque demande quitte la VM de la session. La clé n'atteint jamais Claude, les commandes qu'il exécute, ou les variables d'environnement de la session.

92 92 

93Les identifiants API sont disponibles sur les plans Pro et Max. Ils ne sont pas encore disponibles sur les plans Team ou Enterprise, donc la section **API credentials** n'apparaît pas dans la boîte de dialogue d'environnement sur ces plans.93Les identifiants API sont disponibles sur les plans Pro et Max. Ils ne sont pas encore disponibles sur les plans Team ou Enterprise, donc la section **API credentials** n'apparaît pas dans la boîte de dialogue d'environnement sur ces plans.

94 94 


98 98 

99Deux d'entre elles décident si vous pouvez ajouter un identifiant, et deux décident si le proxy d'agent peut l'utiliser une fois ajouté :99Deux d'entre elles décident si vous pouvez ajouter un identifiant, et deux décident si le proxy d'agent peut l'utiliser une fois ajouté :

100 100 

101* **Rôle** : un rôle d'administrateur de l'organisation dans votre organisation claude.ai101* **Rôle** : un rôle d'administrateur d'organisation dans votre organisation claude.ai

102 * Sur Team et Enterprise, les propriétaires le détiennent et les administrateurs ne le détiennent pas102 * Sur Team et Enterprise, les propriétaires le détiennent et les administrateurs ne le détiennent pas

103 * Sur Pro et Max, vous le détenez dans votre propre organisation103 * Sur Pro et Max, vous le détenez dans votre propre organisation

104 * Sans lui, vous voyez une note au lieu de la liste des identifiants, même sur vos propres environnements. Demandez à un propriétaire d'ajouter l'identifiant à un environnement partagé et d'exécuter vos sessions là104 * Sans lui, vous voyez une note au lieu de la liste des identifiants, même sur vos propres environnements. Demandez à un propriétaire d'ajouter l'identifiant à un environnement partagé et d'exécuter vos sessions là

105* **Type d'environnement** : un environnement cloud hébergé par Anthropic qui existe déjà. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) n'a pas d'identifiants API105* **Type d'environnement** : un environnement cloud hébergé par Anthropic qui existe déjà. Un [environnement auto-hébergé](/docs/fr/self-hosted-environments) n'a pas d'identifiants API

106* **Accessibilité de l'API** : l'API accepte les connexions depuis Internet, car les requêtes partent du réseau d'Anthropic106* **Accessibilité de l'API** : l'API accepte les connexions depuis Internet, car les demandes partent du réseau d'Anthropic

107* **Clés de chiffrement** : si votre organisation utilise des clés de chiffrement gérées par le client, vous ne pouvez pas enregistrer les identifiants107* **Clés de chiffrement** : si votre organisation utilise des clés de chiffrement gérées par le client, vous ne pouvez pas enregistrer les identifiants

108 108 

109<h4 id="add-a-credential">109<h4 id="add-a-credential">

110 Ajoutez un identifiant110 Ajouter un identifiant

111</h4>111</h4>

112 112 

113Vous ajoutez les identifiants un à la fois à partir de l'éditeur d'un environnement qui existe déjà. La boîte de dialogue pour un nouvel environnement ne les propose pas. Il n'y a pas non plus d'édition. Pour modifier les hôtes ou la valeur d'un identifiant, supprimez-le et ajoutez-le à nouveau.113Vous ajoutez les identifiants un à la fois à partir de l'éditeur d'un environnement qui existe déjà. La boîte de dialogue pour un nouvel environnement ne les propose pas. Il n'y a pas non plus de modification. Pour modifier les hôtes ou la valeur d'un identifiant, supprimez-le et ajoutez-le à nouveau.

114 114 

115<Steps>115<Steps>

116 <Step title="Ouvrez les identifiants API de l'environnement">116 <Step title="Ouvrir les identifiants API de l'environnement">

117 [Ouvrez l'environnement pour modification](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code). Dans la boîte de dialogue **Update cloud environment**, trouvez **API credentials** sous **Environment variables**. Vous voyez les identifiants déjà sur l'environnement, chacun avec les hôtes auxquels il s'applique.117 [Ouvrez l'environnement pour modification](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code). Dans la boîte de dialogue **Update cloud environment**, trouvez **API credentials** sous **Environment variables**. Vous voyez les identifiants déjà sur l'environnement, chacun avec les hôtes auxquels il s'applique.

118 </Step>118 </Step>

119 119 

120 <Step title="Ajoutez l'identifiant">120 <Step title="Ajouter l'identifiant">

121 Sélectionnez **Add credential** et remplissez le formulaire. Conservez le **Credential type** par défaut, **Bearer**, pour une clé API qui voyage dans un en-tête de requête, et remplissez ces champs :121 Sélectionnez **Add credential** et remplissez le formulaire. Conservez le **Credential type** par défaut, **Bearer**, pour une clé API qui voyage dans un en-tête de demande, et remplissez ces champs :

122 122 

123 * **Name** : une étiquette pour l'identifiant, comme `Internal billing API`123 * **Name** : une étiquette pour l'identifiant, comme `Internal billing API`

124 * **Allowed websites** : les hôtes de l'API, comme `api.example.com`. Un `*.` au début correspond à chaque sous-domaine124 * **Allowed websites** : les hôtes de l'API, comme `api.example.com`. Un `*.` initial correspond à chaque sous-domaine

125 * **Custom headers** : une ligne pour l'en-tête qui porte la clé. La ligne commence par `Authorization` comme **Name** de l'en-tête et `Bearer` comme son **Prefix** ; collez la clé elle-même comme **Value**. Pour un en-tête comme `X-Api-Key` qui prend la valeur nue, changez le nom et effacez le préfixe125 * **Custom headers** : une ligne pour l'en-tête qui porte la clé. La ligne commence par `Authorization` comme **Name** de l'en-tête et `Bearer` comme son **Prefix** ; collez la clé elle-même comme **Value**. Pour un en-tête comme `X-Api-Key` qui prend la valeur brute, changez le nom et effacez le préfixe

126 126 

127 Pour une API qui s'authentifie d'une autre manière, choisissez un **Credential type** différent. La liste est la même que celle que [Claude Tag](https://claude.com/docs/claude-tag/overview), l'intégration Slack pour les plans Team et Enterprise, propose pour les [connexions](https://claude.com/docs/claude-tag/admins/add-connections).127 Pour une API qui s'authentifie d'une autre manière, choisissez un **Credential type** différent. La liste est la même que celle que [Claude Tag](https://claude.com/docs/claude-tag/overview), l'intégration Slack pour les plans Team et Enterprise, propose pour les [connexions](https://claude.com/docs/claude-tag/admins/add-connections).

128 </Step>128 </Step>

129 129 

130 <Step title="Enregistrez l'identifiant">130 <Step title="Enregistrer l'identifiant">

131 Sélectionnez **Connect**. L'identifiant apparaît dans la liste avec ses hôtes, enregistré sans le bouton **Save changes** de la boîte de dialogue. Vous ne pouvez pas voir la valeur à nouveau après l'enregistrement.131 Sélectionnez **Connect**. L'identifiant apparaît dans la liste avec ses hôtes, enregistré sans le bouton **Save changes** de la boîte de dialogue. Vous ne pouvez pas afficher la valeur à nouveau après l'enregistrement.

132 </Step>132 </Step>

133</Steps>133</Steps>

134 134 

135Pour confirmer que l'identifiant fonctionne, démarrez une session dans l'environnement et demandez à Claude d'appeler l'API, par exemple avec `curl`. L'API répond comme si la clé était dans la requête, et la clé n'apparaît pas dans les variables d'environnement de la session ou dans aucun fichier. Si la liste marque un identifiant **Not sent** à la place, la note sous lui dit pourquoi et quoi faire. Deux identifiants dont les hôtes se chevauchent sans correspondre exactement ne reçoivent aucun marqueur, et le proxy d'agent n'en envoie qu'un.135Pour confirmer que l'identifiant fonctionne, démarrez une session dans l'environnement et demandez à Claude d'appeler l'API, par exemple avec `curl`. L'API répond comme si la clé était dans la demande, et la clé n'apparaît pas dans les variables d'environnement de la session ou dans aucun fichier. Si la liste marque un identifiant **Not sent** à la place, la note sous celui-ci explique pourquoi et quoi faire. Deux identifiants dont les hôtes se chevauchent sans correspondre exactement ne reçoivent aucun marqueur, et le proxy d'agent n'en envoie qu'un.

136 136 

137<h4 id="which-requests-get-the-credential">137<h4 id="which-requests-get-the-credential">

138 Quelles requêtes reçoivent l'identifiant138 Quelles demandes reçoivent l'identifiant

139</h4>139</h4>

140 140 

141Le proxy d'agent joint un identifiant à une requête quand l'hôte de la requête correspond à un que vous avez listé sur cet identifiant. Les sessions peuvent atteindre ces hôtes même quand le [niveau d'accès réseau](#access-levels) de l'environnement ne le permettrait pas autrement, sauf les [hôtes que le proxy d'agent ignore](#requests-that-never-get-the-credential). L'identifiant s'applique dans chaque session qui s'exécute dans l'environnement, peu importe qui l'a démarrée, jusqu'à ce que vous le supprimiez.141Le proxy d'agent joint un identifiant à une demande lorsque l'hôte de la demande correspond à l'un de ceux que vous avez listés sur cet identifiant. Les sessions peuvent atteindre ces hôtes même lorsque le [niveau d'accès réseau](#access-levels) de l'environnement ne le permettrait pas autrement, sauf les [hôtes qui ne reçoivent jamais l'identifiant](#requests-that-never-get-the-credential). L'identifiant s'applique dans chaque session qui s'exécute dans l'environnement, peu importe qui l'a démarrée, jusqu'à ce que vous le supprimiez.

142 142 

143<h4 id="requests-that-never-get-the-credential">143<h4 id="requests-that-never-get-the-credential">

144 Requêtes qui ne reçoivent jamais l'identifiant144 Demandes qui ne reçoivent jamais l'identifiant

145</h4>145</h4>

146 146 

147Le proxy d'agent ne joint jamais un identifiant que vous ajoutez à ces requêtes :147Le proxy d'agent ne joint jamais un identifiant que vous ajoutez à ces demandes :

148 148 

149* **GitHub** : le [proxy GitHub](#github-proxy) authentifie les requêtes à GitHub à la place, donc vous n'avez pas besoin d'un identifiant API pour cela149* **GitHub** : le [proxy GitHub](#github-proxy) authentifie les demandes à GitHub à la place, donc vous n'avez pas besoin d'un identifiant API pour cela

150* **L'API Anthropic et les registres de paquets publics** : `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io` et `proxy.golang.org`150* **L'API Anthropic et les registres de paquets publics** : `api.anthropic.com`, `registry.npmjs.org`, `jsr.io`, `npm.jsr.io`, `pypi.org`, `files.pythonhosted.org`, `index.crates.io`, et `proxy.golang.org`

151* **Requêtes de script de configuration** : Claude Code se connecte au proxy d'agent quand il se lance, après que le [script de configuration](#setup-scripts) ait s'exécuté151* **Demandes de script de configuration** : Claude Code se connecte au proxy d'agent au lancement, après l'exécution du [script de configuration](#setup-scripts)

152 152 

153<h3 id="select-an-environment-from-the-cli">153<h3 id="select-an-environment-from-the-cli">

154 Sélectionnez un environnement depuis le CLI154 Sélectionner un environnement à partir de la CLI

155</h3>155</h3>

156 156 

157Exécutez `/remote-env` dans votre terminal pour choisir l'environnement par défaut pour les sessions cloud que vous créez depuis le CLI, comme [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud). La commande ouvre un sélecteur de vos environnements existants et enregistre votre choix dans la clé `remote.defaultEnvironmentId` dans vos [paramètres utilisateur](/docs/fr/settings#where-settings-live), donc elle s'applique dans chaque projet sur votre machine jusqu'à ce que vous la changiez, sauf si la même clé est définie à une [couche de paramètres](/docs/fr/settings#settings-precedence) de priorité plus élevée, comme les paramètres de projet d'un dépôt.157Exécutez `/remote-env` dans votre terminal pour choisir l'environnement par défaut pour les sessions cloud que vous créez à partir de la CLI, comme [`claude --cloud`](/docs/fr/claude-code-on-the-web#from-terminal-to-cloud). La commande ouvre un sélecteur de vos environnements existants et enregistre votre choix dans la clé `remote.defaultEnvironmentId` dans vos [paramètres utilisateur](/docs/fr/settings#where-settings-live), donc cela s'applique dans chaque projet sur votre machine jusqu'à ce que vous le changiez, sauf si la même clé est définie à une [couche de paramètres](#configure-your-environment) de précédence plus élevée, comme les paramètres de projet d'un dépôt.

158 158 

159Un ID [d'environnement auto-hébergé](/docs/fr/self-hosted-environments), qui a la forme `ccpool_...`, suit une règle de source plus stricte. Consultez [`remote.defaultEnvironmentId`](/docs/fr/settings-reference#remote-defaultenvironmentid) pour les couches de paramètres que Claude Code honore pour cela.159Un ID [d'environnement auto-hébergé](/docs/fr/self-hosted-environments), qui a la forme `ccpool_...`, suit une règle de source plus stricte. Consultez [`remote.defaultEnvironmentId`](/docs/fr/settings-reference#remote-defaultenvironmentid) pour les couches de paramètres que Claude Code honore.

160 160 

161`/remote-env` définit seulement le défaut : il ne démarre pas une session, et il ne peut pas ajouter ou modifier des environnements. Gérez-les à partir du [sélecteur d'environnement](#configure-your-environment).161`/remote-env` définit uniquement la valeur par défaut : il ne démarre pas une session, et il ne peut pas ajouter ou modifier des environnements. Gérez-les à partir du [sélecteur d'environnement](#configure-your-environment).

162 162 

163<h3 id="archive-an-environment">163<h3 id="archive-an-environment">

164 Archivez un environnement164 Archiver un environnement

165</h3>165</h3>

166 166 

167Pour archiver un environnement, ouvrez-le pour modification et sélectionnez **Archive**. Vous ne pouvez pas supprimer un environnement, seulement l'archiver.167Pour archiver l'un de vos propres environnements, ouvrez-le pour modification et sélectionnez **Archive**. Un propriétaire archive un [environnement partagé](#organization-shared-environments) à partir de la page **Cloud environments** dans les paramètres d'administration. Vous ne pouvez pas supprimer un environnement, seulement l'archiver.

168 168 

169L'archivage affecte les nouvelles sessions, pas les sessions en cours d'exécution :169L'archivage affecte les nouvelles sessions, pas les sessions en cours d'exécution :

170 170 

171* Les sessions déjà en cours d'exécution dans l'environnement continuent à fonctionner.171* Les sessions déjà en cours d'exécution dans l'environnement continuent de fonctionner.

172* L'environnement disparaît du sélecteur et de `/remote-env`, donc vous ne pouvez pas le choisir pour les nouvelles sessions.172* L'environnement disparaît du sélecteur et de `/remote-env`, donc vous ne pouvez pas le choisir pour les nouvelles sessions.

173* Les identifiants API sur l'environnement restent attachés dans ses sessions en cours d'exécution. Supprimez ceux que vous ne voulez plus avant d'archiver.173* Les identifiants API sur l'environnement restent attachés dans ses sessions en cours d'exécution. Supprimez ceux que vous ne voulez plus avant d'archiver.

174* Aucune nouvelle session ne peut démarrer dans un environnement archivé, sur n'importe quelle surface. Si l'environnement était votre [défaut CLI](#select-an-environment-from-the-cli) enregistré, Claude Code démarre les sessions cloud CLI dans l'environnement hébergé par Anthropic quand votre liste en a un, et sinon dans le premier environnement de votre liste qui n'est pas un [environnement bridge Remote Control](#the-default-environment). Tout ce qui est configuré avec l'environnement explicitement, comme une [routine](/docs/fr/routines#environments-and-network-access), ne peut pas démarrer de nouvelles sessions dedans. Pointez-le vers un autre environnement.174* Aucune nouvelle session ne peut démarrer dans un environnement archivé, sur aucune surface. Si l'environnement était votre [défaut CLI](#select-an-environment-from-the-cli) enregistré, Claude Code démarre les sessions cloud CLI dans l'environnement hébergé par Anthropic lorsque votre liste en a un, et sinon dans le premier environnement de votre liste qui n'est pas un [environnement de pont Remote Control](#the-default-environment). Tout ce qui est configuré avec l'environnement explicitement, comme une [routine](/docs/fr/routines#environments-and-network-access), ne peut pas démarrer de nouvelles sessions dedans. Pointez-le vers un autre environnement.

175 175 

176<h3 id="organization-shared-environments">176<h3 id="organization-shared-environments">

177 Environnements partagés par l'organisation177 Environnements partagés par l'organisation

178</h3>178</h3>

179 179 

180Sur les plans Team et Enterprise, un propriétaire peut créer des environnements cloud qui sont partagés avec chaque membre de l'organisation. Le même rôle gère tout le reste sur la page **Cloud environments** de l'administration, y compris les [environnements auto-hébergés](/docs/fr/self-hosted-environments) ; le rôle Admin ne peut pas ouvrir la page. La liste complète des rôles qui peuvent l'ouvrir est celle pour [gérer les paramètres gérés par le serveur](/docs/fr/server-managed-settings#access-control). Les environnements partagés apparaissent dans le sélecteur d'environnement de chaque membre à côté de leurs environnements personnels, donc une équipe peut se standardiser sur une configuration au lieu que chaque membre la recréé.180Sur les plans Team et Enterprise, un propriétaire peut créer des environnements cloud qui sont partagés avec chaque membre de l'organisation. Le même rôle gère tout le reste sur la page d'administration **Cloud environments**, y compris les [environnements auto-hébergés](/docs/fr/self-hosted-environments) ; le rôle Admin ne peut pas ouvrir la page. La liste complète des rôles qui peuvent l'ouvrir est celle pour [gérer les paramètres gérés par le serveur](/docs/fr/server-managed-settings#access-control).

181 181 

182Créez, modifiez et archivez les environnements partagés à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings). Un environnement partagé s'ouvre également à partir du [sélecteur d'environnement](#configure-your-environment) sur [claude.ai/code](https://claude.ai/code) : un propriétaire peut le modifier là. Les autres membres le voient en lecture seule. Chaque environnement partagé a un nom, un [niveau d'accès réseau](#access-levels), des [variables d'environnement](#set-environment-variables) au format `.env`, et un [script de configuration](#setup-scripts). Les propriétaires choisissent l'[environnement par défaut](#the-default-environment) de l'organisation séparément, sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).182Les environnements partagés apparaissent dans le [sélecteur d'environnement](#configure-your-environment) de chaque membre sous un en-tête **Organization**, après les environnements du membre sous **Personal**, donc une équipe peut standardiser sur une configuration au lieu que chaque membre la recréé. Sélectionner l'icône de paramètres d'un environnement partagé là ouvre un résumé en lecture seule de sa configuration pour chaque membre, propriétaires inclus.

183 183 

184Chaque session d'un membre dans un environnement partagé lit ses variables, donc n'incluez pas de secrets dedans. Les [identifiants API](#add-api-credentials), qui donnent aux sessions une clé qu'elles ne peuvent pas lire, ne sont pas encore disponibles sur les plans Team ou Enterprise.184Un propriétaire rend un environnement disponible pour l'organisation de l'une de deux façons :

185 

186* **Créer un environnement partagé** : utilisez la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings), qui est aussi où les propriétaires modifient et archivez les environnements partagés. Chacun a un nom, un [niveau d'accès réseau](#access-levels), des [variables d'environnement](#set-environment-variables) au format `.env`, et un [script de configuration](#setup-scripts).

187* **Partager un environnement personnel** : ouvrez l'un de vos propres environnements pour modification dans le sélecteur d'environnement, puis partagez-le à partir de la ligne **Who can use it**. L'environnement conserve son ID, donc les sessions et routines qui l'utilisent déjà ne sont pas affectées, et chaque membre peut alors le voir et démarrer des sessions dedans.

188 

189Les propriétaires choisissent l'[environnement par défaut](#the-default-environment) de l'organisation séparément, sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

190 

191Les sessions de chaque membre dans un environnement partagé lisent ses variables, donc n'incluez pas de secrets dedans. Les [identifiants API](#add-api-credentials), qui donnent aux sessions une clé qu'elles ne peuvent pas lire, ne sont pas encore disponibles sur les plans Team ou Enterprise.

185 192 

186<h3 id="set-the-environment-a-claude-tag-channel-uses">193<h3 id="set-the-environment-a-claude-tag-channel-uses">

187 Définissez l'environnement qu'un canal Claude Tag utilise194 Définir l'environnement qu'un canal Claude Tag utilise

188</h3>195</h3>

189 196 

190Dans les canaux [Claude Tag](https://claude.com/docs/claude-tag/overview), Claude fonctionne comme l'identité partagée de votre organisation, pas comme un membre, donc les sessions de canal utilisent uniquement les environnements au niveau de l'organisation, soit des environnements partagés, soit des [environnements auto-hébergés](/docs/fr/self-hosted-environments). Pour donner à un canal une chaîne d'outils qui n'est pas [pré-installée](#installed-tools), comme .NET, un propriétaire peut créer un [environnement partagé](#organization-shared-environments) à partir de la page d'administration **Cloud environments** avec un [script de configuration](#setup-scripts) qui l'installe. Pointez le canal vers un environnement de deux façons :197Dans les canaux [Claude Tag](https://claude.com/docs/claude-tag/overview), Claude fonctionne comme l'identité partagée de votre organisation, pas comme un membre, donc les sessions de canal utilisent uniquement les environnements au niveau de l'organisation, soit les environnements partagés, soit les [environnements auto-hébergés](/docs/fr/self-hosted-environments). Pour donner à un canal une chaîne d'outils qui n'est pas [pré-installée](#installed-tools), comme .NET, un propriétaire peut créer un [environnement partagé](#organization-shared-environments) à partir de la page d'administration **Cloud environments** avec un [script de configuration](#setup-scripts) qui l'installe. Pointez le canal vers un environnement de l'une de deux façons :

191 198 

192* Définissez un environnement partagé ou auto-hébergé comme l'[environnement par défaut](#the-default-environment) de l'organisation sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).199* Définissez un environnement partagé ou auto-hébergé comme l'[environnement par défaut](#the-default-environment) de l'organisation sur [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

193* [Épinglez-en un à un canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) dans les paramètres d'administration de Claude Tag.200* [Épinglez-en un à un canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) dans les paramètres d'administration Claude Tag.

194 201 

195<h2 id="network-access">202<h2 id="network-access">

196 Accès réseau203 Accès réseau


198 205 

199Chaque environnement définit un niveau d'accès réseau, qui contrôle les connexions sortantes que ses sessions peuvent établir. Le niveau par défaut, **Trusted**, autorise les registres de paquets et autres [domaines autorisés](#default-allowed-domains) ; **Custom** utilise votre propre liste de domaines.206Chaque environnement définit un niveau d'accès réseau, qui contrôle les connexions sortantes que ses sessions peuvent établir. Le niveau par défaut, **Trusted**, autorise les registres de paquets et autres [domaines autorisés](#default-allowed-domains) ; **Custom** utilise votre propre liste de domaines.

200 207 

201Pour modifier l'accès réseau d'un environnement, [ouvrez-le pour l'édition](#configure-your-environment) et utilisez le sélecteur **Network access** dans la boîte de dialogue. L'icône cloud qui ouvre le sélecteur apparaît sur les surfaces de l'application listées sous [The Default environment](#the-default-environment) et dans l'[éditeur de routines](/docs/fr/routines#environments-and-network-access) ; les environnements personnels n'ont pas de page séparée dans les paramètres de votre compte claude.ai.208Pour modifier l'accès réseau d'un environnement, [ouvrez-le pour l'édition](#configure-your-environment) et utilisez le sélecteur **Network access** dans la boîte de dialogue. Un [environnement partagé](#organization-shared-environments) s'ouvre en lecture seule là, donc un propriétaire modifie son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings) à la place. L'icône cloud qui ouvre le sélecteur apparaît sur les surfaces de l'application listées sous [The Default environment](#the-default-environment) et dans l'[éditeur de routines](/docs/fr/routines#environments-and-network-access) ; les environnements personnels n'ont pas de page séparée dans les paramètres de votre compte claude.ai.

202 209 

203<Note>210<Note>

204 Les connecteurs MCP que vous activez sur une session ou une routine fonctionnent sans ajouter leurs hôtes à **Allowed domains**, car le trafic des connecteurs transite par les serveurs d'Anthropic plutôt que par le réseau de la session. Cela s'appuie sur le même canal lié à Anthropic noté sous [Security and isolation](/docs/fr/claude-code-on-the-web#security-and-isolation). Désactivez tout connecteur dont vous n'avez pas besoin pour limiter les outils que Claude peut atteindre.211 Les connecteurs MCP que vous activez sur une session ou une routine fonctionnent sans ajouter leurs hôtes à **Allowed domains**, car le trafic des connecteurs transite par les serveurs d'Anthropic plutôt que par le réseau de la session. Cela s'appuie sur le même canal lié à Anthropic noté sous [Security and isolation](/docs/fr/claude-code-on-the-web#security-and-isolation). Désactivez tout connecteur dont vous n'avez pas besoin pour limiter les outils que Claude peut atteindre.

env-vars.md +1 −1

Details

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est activé, secondes entre les rappels à Claude de vérifier les [sous-agents d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) qui sont toujours en cours d'exécution. Accepte un entier simple de `1` à `86400` uniquement ; toute autre valeur ou orthographe se lit comme non définie. Lorsqu'il n'est pas défini, il n'y a pas de rappels de vérification. Nécessite Claude Code v2.1.248 ou ultérieur |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Lorsque `CLAUDE_AUTO_BACKGROUND_TASKS` est activé, secondes entre les rappels à Claude de vérifier les [sous-agents d'arrière-plan](/docs/fr/sub-agents#run-subagents-in-foreground-or-background) qui sont toujours en cours d'exécution. Accepte un entier simple de `1` à `86400` uniquement ; toute autre valeur ou orthographe se lit comme non définie. Lorsqu'il n'est pas défini, il n'y a pas de rappels de vérification. Nécessite Claude Code v2.1.248 ou ultérieur |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définissez la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) en jetons, de `100000` à `1000000`. Accepte un entier simple comme `500000` uniquement : une valeur comme `500k` se lit comme `500` et se limite au minimum de 100K. La fenêtre effective est également limitée à la fenêtre de contexte du modèle. Prend la priorité sur la commande `/autocompact`, le drapeau `--autocompact` et le paramètre `autoCompactWindow`. Le `used_percentage` de la ligne d'état mesure toujours par rapport à la fenêtre de contexte complète du modèle, donc une fois cette variable définie, ce pourcentage n'indique plus quand la compaction s'exécutera |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Définissez la [fenêtre de compaction automatique](/docs/fr/model-config#set-the-auto-compact-window) en jetons, de `100000` à `1000000`. Accepte un entier simple comme `500000` uniquement : une valeur comme `500k` se lit comme `500` et se limite au minimum de 100K. La fenêtre effective est également limitée à la fenêtre de contexte du modèle. Prend la priorité sur la commande `/autocompact`, le drapeau `--autocompact` et le paramètre `autoCompactWindow`. Le `used_percentage` de la ligne d'état mesure toujours par rapport à la fenêtre de contexte complète du modèle, donc une fois cette variable définie, ce pourcentage n'indique plus quand la compaction s'exécutera |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Remplacez la [connexion IDE](/docs/fr/vs-code) automatique. Par défaut, Claude Code se connecte automatiquement lorsqu'il est lancé dans le terminal intégré d'un IDE pris en charge. Définissez sur `false` pour empêcher cela. Définissez sur `true` pour forcer une tentative de connexion lorsque la détection automatique échoue, par exemple lorsque tmux obscurcit le terminal parent. Prend la priorité sur le paramètre de configuration global [`autoConnectIde`](/docs/fr/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Remplacez la [connexion IDE](/docs/fr/vs-code) automatique. Par défaut, Claude Code se connecte automatiquement lorsqu'il est lancé dans le terminal intégré d'un IDE pris en charge. Définissez sur `false` pour empêcher cela. Définissez sur `true` pour forcer une tentative de connexion lorsque la détection automatique échoue, par exemple lorsque tmux obscurcit le terminal parent. Prend la priorité sur le paramètre de configuration global [`autoConnectIde`](/docs/fr/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, définissez sur `1` pour que le classificateur côté serveur de la plateforme examine les actions du [mode auto](/docs/fr/permission-modes#eliminate-prompts-with-auto-mode) ; où la plateforme n'exécute pas le classificateur, Claude Code revient à ses propres requêtes de classificateur. Lorsqu'il n'est pas défini ou `0`, le classificateur s'exécute via les requêtes que Claude Code lui-même envoie. N'a aucun effet sur les autres fournisseurs, y compris l'API Anthropic. Nécessite Claude Code v2.1.271 ou ultérieur |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Contrôle si Claude Code demande au serveur d'[examiner les actions du mode auto](/docs/fr/permission-modes#server-side-classifier-review). Lorsqu'il n'est pas défini, Claude Code demande au serveur sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et Claude Platform on AWS, et lorsque vous pointez `ANTHROPIC_BASE_URL` vers une passerelle LLM ou un proxy. Définissez sur `0` pour utiliser les requêtes du classificateur propre de Claude Code à la place. Non lu sur une connexion directe à l'API Anthropic. Nécessite Claude Code v2.1.271 ou ultérieur ; demander au serveur par défaut nécessite v2.1.278 ou ultérieur |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Temps en millisecondes que Claude Code attend que le fournisseur d'identifiants par défaut AWS produise des identifiants avant que la requête échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out) (par défaut : `60000`). Augmentez-le lorsqu'une étape de votre chaîne a légitimement besoin de plus de temps, comme une connexion SSO basée sur un navigateur avec MFA via un wrapper comme `aws-vault`. S'applique partout où Claude Code signe avec la chaîne par défaut : [Amazon Bedrock](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) et le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Nécessite Claude Code v2.1.207 ou ultérieur |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Temps en millisecondes que Claude Code attend que le fournisseur d'identifiants par défaut AWS produise des identifiants avant que la requête échoue avec [`AWS default-chain credential resolve timed out`](/docs/fr/errors#aws-default-chain-credential-resolve-timed-out) (par défaut : `60000`). Augmentez-le lorsqu'une étape de votre chaîne a légitimement besoin de plus de temps, comme une connexion SSO basée sur un navigateur avec MFA via un wrapper comme `aws-vault`. S'applique partout où Claude Code signe avec la chaîne par défaut : [Amazon Bedrock](/docs/fr/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/fr/claude-platform-on-aws) et le [point de terminaison Mantle](/docs/fr/amazon-bedrock#use-the-mantle-endpoint). Nécessite Claude Code v2.1.207 ou ultérieur |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Définissez sur `0` pour désactiver le [diff des fichiers qu'une commande Bash a modifiés](/docs/fr/hooks#bash), ou `1` pour l'enregistrer dans chaque mode de permission. Prend la priorité sur le paramètre [`bashEditDiffEnabled`](/docs/fr/settings-reference#basheditdiffenabled). Nécessite Claude Code v2.1.269 ou ultérieur |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Définissez sur `0` pour désactiver le [diff des fichiers qu'une commande Bash a modifiés](/docs/fr/hooks#bash), ou `1` pour l'enregistrer dans chaque mode de permission. Prend la priorité sur le paramètre [`bashEditDiffEnabled`](/docs/fr/settings-reference#basheditdiffenabled). Nécessite Claude Code v2.1.269 ou ultérieur |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Définissez sur `0` pour faire en sorte qu'une session non interactive signale un statut inactif à son hôte à chaque fin de tour, même si le travail d'arrière-plan est toujours en cours. Par défaut, la session continue de signaler un statut en cours au-delà de la fin du tour tandis que le travail d'arrière-plan, comme un agent d'arrière-plan ou une exécution de [flux de travail](/docs/fr/workflows), est toujours actif. Cela empêche un hôte qui surveille le statut, comme une liste de sessions distantes, d'annoncer que Claude attend votre entrée au milieu du travail. Les commandes shell d'arrière-plan, comme un serveur de développement, ne maintiennent pas le statut en cours. La valeur par défaut en cours et l'opt-out `0` nécessitent Claude Code v2.1.269 ou ultérieur ; sur les versions antérieures, définissez `1` pour maintenir le statut en cours |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Définissez sur `0` pour faire en sorte qu'une session non interactive signale un statut inactif à son hôte à chaque fin de tour, même si le travail d'arrière-plan est toujours en cours. Par défaut, la session continue de signaler un statut en cours au-delà de la fin du tour tandis que le travail d'arrière-plan, comme un agent d'arrière-plan ou une exécution de [flux de travail](/docs/fr/workflows), est toujours actif. Cela empêche un hôte qui surveille le statut, comme une liste de sessions distantes, d'annoncer que Claude attend votre entrée au milieu du travail. Les commandes shell d'arrière-plan, comme un serveur de développement, ne maintiennent pas le statut en cours. La valeur par défaut en cours et l'opt-out `0` nécessitent Claude Code v2.1.269 ou ultérieur ; sur les versions antérieures, définissez `1` pour maintenir le statut en cours |

Details

287 Éliminer les invites de permission avec le mode auto287 Éliminer les invites de permission avec le mode auto

288</h2>288</h2>

289 289 

290Le mode auto permet à Claude d'exécuter sans invites de permission routinières. Un modèle classificateur distinct examine les actions avant leur exécution, bloquant tout ce qui dépasse votre demande, cible une infrastructure non reconnue, ou semble provenir de contenu hostile que Claude a lu. Les [règles ask](/docs/fr/permissions#manage-permissions) explicites forcent toujours une invite.290Le mode auto permet à Claude d'exécuter sans invites de permission routinières. Un modèle classificateur distinct examine les actions avant leur exécution, bloquant tout ce qui dépasse votre demande, cible une infrastructure non reconnue, ou semble provenir d'un contenu hostile que Claude a lu. Les [règles ask](/docs/fr/permissions#manage-permissions) explicites forcent toujours une invite.

291 291 

292Sur les plans Pro, Max et Team, le mode auto est le [mode de permission intégré au démarrage](#which-mode-a-session-starts-in).292Sur les plans Pro, Max et Team, le mode auto est le [mode de permission de démarrage intégré](#which-mode-a-session-starts-in).

293 293 

294Le classificateur examine également chaque message que Claude envoie à un autre agent avec [`SendMessage`](/docs/fr/tools-reference), qu'il s'agisse de texte brut ou d'un message [d'équipe d'agents](/docs/fr/agent-teams) structuré, avant que Claude Code le livre, à la fois en mode auto et en [mode plan tandis que le classificateur examine les commandes](#analyze-before-you-edit-with-plan-mode) ; l'examen d'envoi nécessite Claude Code v2.1.222 ou ultérieur.294Le classificateur examine également chaque message que Claude envoie à un autre agent avec [`SendMessage`](/docs/fr/tools-reference), qu'il s'agisse de texte brut ou d'un message [d'équipe d'agents](/docs/fr/agent-teams) structuré, avant que Claude Code le livre, à la fois en mode auto et en [mode plan tandis que le classificateur examine les commandes](#analyze-before-you-edit-with-plan-mode) ; l'examen d'envoi nécessite Claude Code v2.1.222 ou ultérieur.

295 295 

296Le classificateur examine également et approuve ou bloque les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths), comme `rm -rf /` et `rm -rf ~`, y compris lorsque la suppression se trouve à l'intérieur d'une substitution de commande ou de processus.296Le classificateur examine également et approuve ou bloque les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths), comme `rm -rf /` et `rm -rf ~`, y compris lorsque la suppression se trouve à l'intérieur d'une substitution de commande ou de processus.

297 297 

298Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre invite ou une compétence s'y fient explicitement. Pour un comportement plus autonome dans un mode qui vous invite toujours, définissez plutôt le [style de sortie proactif](/docs/fr/output-styles).298Le mode auto encourage également Claude à continuer à travailler sans s'arrêter pour des questions de clarification, bien que Claude demande toujours quand votre invite ou une compétence s'y appuie explicitement. Pour un comportement plus autonome dans un mode qui vous invite toujours, définissez plutôt le [style de sortie proactif](/docs/fr/output-styles).

299 299 

300<Warning>300<Warning>

301 Le mode auto réduit les invites de permission mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement pour l'examen des opérations sensibles.301 Le mode auto réduit les invites de permission mais ne garantit pas la sécurité. Utilisez-le pour les tâches où vous faites confiance à la direction générale, pas comme remplacement pour l'examen des opérations sensibles.

302</Warning>302</Warning>

303 303 

304Le mode auto n'est disponible que lorsque votre compte répond à tous ces critères :304Le mode auto est disponible uniquement lorsque votre compte répond à tous ces critères :

305 305 

306* **Plan** : Tous les plans.306* **Plan** : Tous les plans.

307* **Organisation** : sur Team et Enterprise, le mode auto est disponible par défaut. Les administrateurs peuvent le désactiver pour l'organisation en définissant `permissions.disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings).307* **Organisation** : sur Team et Enterprise, le mode auto est disponible par défaut. Les administrateurs peuvent le désactiver pour l'organisation en définissant `permissions.disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings).

308* **Modèle** : sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Claude Opus 4.6 ou ultérieur, Sonnet 4.6 ou ultérieur, ou un [modèle Fable](/docs/fr/model-config#work-with-fable). Sur Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, uniquement Claude Sonnet 5, Opus 4.7 ou ultérieur, et les modèles Fable. Les modèles plus anciens, y compris Sonnet 4.5, Opus 4.5, Haiku et les modèles claude-3, ne sont pas pris en charge sur aucun fournisseur.308* **Modèle** : sur l'API Anthropic et [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Claude Opus 4.6 ou ultérieur, Sonnet 4.6 ou ultérieur, ou un [modèle Fable](/docs/fr/model-config#work-with-fable). Sur Amazon Bedrock, la plateforme Agent de Google Cloud, Microsoft Foundry et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, uniquement Claude Sonnet 5, Opus 4.7 ou ultérieur, et les modèles Fable. Les modèles plus anciens, y compris Sonnet 4.5, Opus 4.5, Haiku et les modèles claude-3, ne sont pas pris en charge sur aucun fournisseur.

309* **Fournisseur** : disponible par défaut sur l'API Anthropic, Claude Platform sur AWS, Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry et les sessions de passerelle d'applications Claude connectées.309* **Fournisseur** : disponible par défaut sur l'API Anthropic, Claude Platform sur AWS, Amazon Bedrock, la plateforme Agent de Google Cloud, Microsoft Foundry et les sessions de passerelle d'applications Claude connectées.

310 310 

311Si Claude Code signale que le mode auto n'est pas disponible, vérifiez d'abord ces exigences et si un fichier de paramètres définit [`disableAutoMode`](/docs/fr/settings-reference#disableautomode). Anthropic peut également avoir désactivé le mode auto côté serveur, ou le serveur peut avoir rejeté le mode auto pour votre compte. Une session qui a reçu l'une ou l'autre réponse garde le mode auto désactivé jusqu'à la fin de la session, alors démarrez une nouvelle session plus tard.311Si Claude Code signale que le mode auto n'est pas disponible, vérifiez d'abord ces critères et si un fichier de paramètres définit [`disableAutoMode`](/docs/fr/settings-reference#disableautomode). Anthropic peut également avoir désactivé le mode auto côté serveur, ou le serveur peut avoir rejeté le mode auto pour votre compte. Une session qui a reçu l'une ou l'autre réponse garde le mode auto désactivé jusqu'à la fin de la session, donc démarrez une nouvelle session plus tard.

312 312 

313Un message distinct qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d'une action signifie qu'une demande de classificateur a échoué. Cet échec est généralement transitoire, mais sur Amazon Bedrock, il peut se répéter jusqu'à ce que votre compte puisse invoquer le modèle nommé. Consultez la [référence d'erreur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour les causes et ce qu'il faut faire.313Un message distinct qui nomme un modèle et dit que le mode auto « ne peut pas déterminer la sécurité » d'une action signifie qu'une demande de classificateur a échoué. Cet échec est généralement transitoire, mais sur Amazon Bedrock, il peut se répéter jusqu'à ce que votre compte puisse invoquer le modèle nommé. Consultez la [référence des erreurs](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) pour les causes et ce qu'il faut faire.

314 314 

315Si vous définissez `defaultMode: "auto"` dans les [paramètres](/docs/fr/settings-reference#all-settings) et qu'une session de terminal démarre en mode Manuel sans erreur, le paramètre se trouve probablement dans `.claude/settings.json` ou `.claude/settings.local.json`. `auto` ne prend pas effet à partir de ces fichiers. Déplacez-le vers `~/.claude/settings.json`. Pour une conversation que l'extension VS Code a démarrée, vérifiez plutôt la liste propre de l'extension dans [Basculer les modes de permission](#switch-permission-modes).315Si vous définissez `defaultMode: "auto"` dans les [paramètres](/docs/fr/settings-reference#all-settings) et qu'une session de terminal démarre en mode Manuel sans erreur, le paramètre se trouve probablement dans `.claude/settings.json` ou `.claude/settings.local.json`. `auto` ne prend pas effet à partir de ces fichiers. Déplacez-le vers `~/.claude/settings.json`. Pour une conversation que l'extension VS Code a démarrée, vérifiez plutôt la liste propre de l'extension dans [Basculer les modes de permission](#switch-permission-modes).

316 316 


318 Mode auto sur Bedrock, Agent Platform ou Foundry318 Mode auto sur Bedrock, Agent Platform ou Foundry

319</h3>319</h3>

320 320 

321Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [Google Cloud's Agent Platform](/docs/fr/google-vertex-ai), [Microsoft Foundry](/docs/fr/microsoft-foundry) et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, le mode auto apparaît dans le cycle `Shift+Tab` par défaut. L'apparition dans le cycle ne change pas le mode de permission avec lequel une session démarre : sur ces fournisseurs, les sessions de terminal démarrent dans votre [`defaultMode`](/docs/fr/settings-reference#permissions-defaultmode), qui est Manuel sauf si vous le changez, et les conversations dans l'[extension VS Code](/docs/fr/vs-code) démarrent en Manuel sauf si `claudeCode.initialPermissionMode` ou un mode que vous avez choisi dans l'extension en définit un. Seuls Claude Sonnet 5, Opus 4.7 ou ultérieur et les modèles Fable sont pris en charge sur ces fournisseurs.321Sur [Amazon Bedrock](/docs/fr/amazon-bedrock), [la plateforme Agent de Google Cloud](/docs/fr/google-vertex-ai), [Microsoft Foundry](/docs/fr/microsoft-foundry) et les sessions de [passerelle d'applications Claude](/docs/fr/claude-apps-gateway) connectées, le mode auto apparaît dans le cycle `Shift+Tab` par défaut. L'apparition dans le cycle ne change pas le mode de permission dans lequel une session démarre : sur ces fournisseurs, les sessions de terminal démarrent dans votre [`defaultMode`](/docs/fr/settings-reference#permissions-defaultmode), qui est Manuel sauf si vous le changez, et les conversations dans l'[extension VS Code](/docs/fr/vs-code) démarrent en Manuel sauf si `claudeCode.initialPermissionMode` ou un mode que vous avez choisi dans l'extension en définit un. Seuls Claude Sonnet 5, Opus 4.7 ou ultérieur, et les modèles Fable sont pris en charge sur ces fournisseurs.

322 322 

323Pour faire du mode auto le mode de permission par défaut au démarrage, définissez `"permissions": {"defaultMode": "auto"}` dans les paramètres utilisateur ou gérés. Dans les sessions que l'extension VS Code démarre, sélectionnez plutôt **Auto** dans l'indicateur de mode. [Basculer les modes de permission](#switch-permission-modes) couvre ce qui prime sur ce choix.323Pour faire du mode auto le mode de permission de démarrage par défaut, définissez `"permissions": {"defaultMode": "auto"}` dans les paramètres utilisateur ou gérés. Dans les sessions que l'extension VS Code démarre, sélectionnez plutôt **Auto** dans l'indicateur de mode. [Basculer les modes de permission](#switch-permission-modes) couvre ce qui prime sur ce choix.

324 324 

325La vérification [`/doctor`](/docs/fr/commands#all-commands) propose cette valeur par défaut des paramètres utilisateur sur ces fournisseurs de la même manière qu'elle le fait sur l'API Anthropic.325Le contrôle [`/doctor`](/docs/fr/commands#all-commands) propose cette valeur par défaut des paramètres utilisateur sur ces fournisseurs de la même manière qu'il le fait sur l'API Anthropic.

326 326 

327Pour empêcher les développeurs d'utiliser le mode auto, définissez `disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings). Cela supprime `auto` du cycle `Shift+Tab`, et une session démarrée avec `--permission-mode auto` démarre en Manuel à la place. Une session déjà en cours d'exécution en mode auto le quitte lorsque le paramètre l'atteint à partir d'une [source déployée par l'administrateur](/docs/fr/managed-settings#which-managed-source-claude-code-uses), et affiche `auto mode disabled by settings`. Avant v2.1.251, une session en cours d'exécution gardait le mode auto jusqu'à la fin.327Pour empêcher les développeurs d'utiliser le mode auto, définissez `disableAutoMode` sur `"disable"` dans les [paramètres gérés](/docs/fr/managed-settings). Cela supprime `auto` du cycle `Shift+Tab`, et une session démarrée avec `--permission-mode auto` démarre en Manuel à la place. Une session déjà en cours d'exécution en mode auto le quitte lorsque le paramètre l'atteint à partir d'une [source déployée par l'administrateur](/docs/fr/managed-settings#which-managed-source-claude-code-uses), et affiche `auto mode disabled by settings`. Avant v2.1.251, une session en cours d'exécution gardait le mode auto jusqu'à la fin.

328 328 

329Dans v2.1.158 à v2.1.206, le mode auto était désactivé sur ces fournisseurs jusqu'à ce que vous définissiez `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, et Claude Code ignorait `defaultMode: "auto"` sur ces fournisseurs sauf si la variable était également définie. La variable est toujours acceptée pour la compatibilité et n'a aucun effet à partir de v2.1.207.329Dans v2.1.158 à v2.1.206, le mode auto était désactivé sur ces fournisseurs jusqu'à ce que vous définissiez `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, et Claude Code ignorait `defaultMode: "auto"` sur ces fournisseurs sauf si la variable était également définie. La variable est toujours acceptée pour la compatibilité et n'a aucun effet à partir de v2.1.207.

330 330 

331<h4 id="server-side-classifier-review">331<h3 id="server-side-classifier-review">

332 Examen du classificateur côté serveur332 Examen du classificateur côté serveur

333</h4>333</h3>

334 

335Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, sur [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, la plateforme Agent de Google Cloud et Microsoft Foundry, et chaque fois que vous pointez `ANTHROPIC_BASE_URL` vers une [passerelle LLM ou un proxy](/docs/fr/llm-gateway), Claude Code en mode auto demande au serveur d'examiner [les actions qui vont au classificateur](#how-the-classifier-evaluates-actions) dans le cadre des demandes de modèle de la session. Là où le serveur les examine, ses verdicts décident ces actions. Là où il ne le fait pas, généralement parce qu'une passerelle LLM ou un proxy interfère avec le trafic, ou parce que la plateforme, la région ou les credentials n'ont pas encore de vérifications côté serveur, Claude Code revient à ses propres demandes de classificateur, et une fois que ce retour se maintient pour le reste de la session, il affiche un [avis sur les frais de demande de classificateur](/docs/fr/auto-mode-classifier-billing) sur les comptes où ces demandes sont facturées. Pour ignorer la demande au serveur et toujours utiliser les propres demandes de classificateur de Claude Code, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/fr/env-vars). La variable n'est pas lue sur une connexion directe à l'API Anthropic. Si vous définissez `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` et laissez `CLAUDE_CODE_AUTO_MODE_SERVER` non défini, Claude Code cesse également de demander au serveur.

334 336 

335Sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, Claude Code examine les actions du mode auto avec ses propres demandes de classificateur par défaut. Pour que le classificateur côté serveur de la plateforme examine [les actions qui vont au classificateur](#how-the-classifier-evaluates-actions) dans le cadre des demandes de modèle de la session à la place, définissez [`CLAUDE_CODE_AUTO_MODE_SERVER=1`](/docs/fr/env-vars). Où la plateforme exécute le classificateur, ses verdicts décident ces actions ; où elle ne le fait pas, Claude Code revient à ses propres demandes de classificateur. Dans v2.1.271 et v2.1.272, demander à la plateforme était la valeur par défaut sur ces fournisseurs.337Demander au serveur par défaut nécessite Claude Code v2.1.278 ou ultérieur.

336 338 

337<h3 id="what-the-classifier-blocks-by-default">339<h3 id="what-the-classifier-blocks-by-default">

338 Ce que le classificateur bloque par défaut340 Ce que le classificateur bloque par défaut


347* Déploiements et migrations de production349* Déploiements et migrations de production

348* Suppression en masse sur le stockage cloud350* Suppression en masse sur le stockage cloud

349* Octroi de permissions IAM ou de dépôt351* Octroi de permissions IAM ou de dépôt

350* Modification d'infrastructure partagée352* Modification d'une infrastructure partagée

351* Destruction irréversible de fichiers qui existaient avant la session353* Destruction irréversible de fichiers qui existaient avant la session

352* Forcer la poussée354* Forcer la poussée

353* Valider ou pousser une modification qui enverrait des secrets ou des données sensibles en dehors du dépôt lors de son exécution, ou élargir ce qu'un déploiement expose. Cela couvre un flux de travail CI ou une configuration de déploiement qui remet un secret à une destination qui ne le reçoit pas déjà, un script ou une étape de configuration qui lit un magasin de secrets et envoie les données, et une modification de configuration qui élargit ce qu'un déploiement publie, comme un registre, une visibilité, un artefact ou un paramètre de sourcemap. La vérification s'applique sur n'importe quelle branche, s'applique même lorsque le dépôt est public, et se déclenche lorsque la modification arrive, que le pipeline soit déclenché ou non ; la clarifier nécessite de nommer l'effet d'exécution, pas seulement la validation ou la poussée. Avant v2.1.211, cette vérification était limitée à la branche par défaut à la place : une poussée là-bas était bloquée lorsqu'elle contenait du contenu sensible, des modifications dissimulées ou mal décrites par rapport à ce que vous aviez demandé, du contenu porté de l'extérieur du dépôt, ou contourné une révision que vous aviez demandée355* Valider ou pousser une modification qui enverrait des secrets ou des données sensibles en dehors du dépôt lors de son exécution, ou élargir ce qu'un déploiement expose. Cela couvre un flux de travail CI ou une configuration de déploiement qui transmet un secret à une destination qui ne le reçoit pas déjà, un script ou une étape de configuration qui lit un magasin de secrets et envoie les données, et une modification de configuration qui élargit ce qu'un déploiement publie, comme un registre, une visibilité, un artefact ou un paramètre de sourcemap. La vérification s'applique sur n'importe quelle branche, s'applique même lorsque le dépôt est public, et se déclenche lorsque la modification est validée ou poussée, que ce commit ou cette poussée déclenche ou non le pipeline ; la clarifier nécessite de nommer l'effet d'exécution, pas seulement le commit ou la poussée. Avant v2.1.211, cette vérification était limitée à la branche par défaut à la place : une poussée là-bas était bloquée lorsqu'elle contenait du contenu sensible, des modifications dissimulées ou mal décrites par rapport à ce que vous avez demandé, du contenu porté de l'extérieur du dépôt, ou contourné autour d'une révision que vous avez demandée

354* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` ou `git stash clear`, que le classificateur présume élimineraient les modifications non validées356* `git reset --hard`, `git checkout -- .`, `git restore .`, `git clean -fd`, `git stash drop` ou `git stash clear`, que le classificateur présume éliminerait les modifications non validées

355* `git commit --amend` lorsque la validation à HEAD n'a pas été créée dans cette session357* `git commit --amend` lorsque le commit à HEAD n'a pas été créé dans cette session

356* À partir de v2.1.198, `git commit --amend` lorsque la validation à HEAD a déjà été poussée. Une reformulation de message uniquement n'est pas bloquée : `--amend -m` sans rien de nouvellement préparé, sur une validation que Claude a créée pendant cette session358* À partir de v2.1.198, `git commit --amend` lorsque le commit à HEAD a déjà été poussé. Une reformulation de message uniquement n'est pas bloquée : `--amend -m` sans rien de nouvellement préparé, sur un commit que Claude a créé pendant cette session

357* `terraform destroy`, `pulumi destroy`, `cdk destroy` ou `terragrunt destroy`, et appliquer un plan qui détruit les ressources359* `terraform destroy`, `pulumi destroy`, `cdk destroy` ou `terragrunt destroy`, et l'application d'un plan qui détruit des ressources

358 360 

359Claude Code v2.1.195 et ultérieur bloquent plus de catégories par défaut. Plusieurs dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles de télécommande sensibles et les portées IaC protégées, que vous pouvez affiner à des noms concrets.361Claude Code v2.1.195 et ultérieur bloquent plus de catégories par défaut. Plusieurs dépendent d'entrées [d'environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), comme les cibles de télécommande sensibles et les portées IaC protégées, que vous pouvez affiner à des noms concrets.

360 362 

361* Écriture dans un gestionnaire de secrets, ou modification des enregistrements DNS ou des certificats TLS363* Écriture dans un gestionnaire de secrets, ou modification des enregistrements DNS ou des certificats TLS

362* Fusion d'une demande de tirage qu'aucun humain n'a approuvée, approbation de la propre demande de tirage de Claude, ou désactivation des vérifications CI364* Fusion d'une demande de tirage qu'aucun humain n'a approuvée, approbation de la propre demande de tirage de Claude, ou désactivation des vérifications CI

363* Publication d'un commentaire qui est lui-même une commande à l'automatisation, comme `atlantis apply` ou `/deploy` ou `/merge` d'un bot365* Publication d'un commentaire qui est lui-même une commande pour l'automatisation, comme `atlantis apply` ou un `/deploy` ou `/merge` de bot

364* Basculement, augmentation ou suppression d'un drapeau de fonctionnalité de production366* Basculement, augmentation ou suppression d'un drapeau de fonctionnalité de production

365* Application de modifications d'infrastructure à une portée IaC protégée, ou vidage et suppression de nœuds de cluster367* Application de modifications d'infrastructure à une portée IaC protégée, ou vidage et suppression de nœuds de cluster

366* Écritures dans un cluster de calcul partagé qui vont au-delà de la ressource que vous avez nommée, comme un sélecteur d'étiquette ou `--all` qui capture les tâches d'autres utilisateurs368* Écritures dans un cluster de calcul partagé qui vont au-delà de la ressource que vous avez nommée, comme un sélecteur d'étiquette ou `--all` qui capture les travaux d'autres utilisateurs

367* Création de ressources Kubernetes qui s'exécutent sur chaque nœud ou interceptent le trafic du cluster, comme les DaemonSets et les webhooks d'admission369* Création de ressources Kubernetes qui s'exécutent sur chaque nœud ou interceptent le trafic du cluster, comme les DaemonSets et les webhooks d'admission

368* Shells interactifs ou transferts de port vers une cible de télécommande sensible370* Shells interactifs ou port-forwards vers une cible de télécommande sensible

369* Ouverture d'un tunnel ou d'un shell inverse qui rend un service local accessible depuis l'Internet public371* Ouverture d'un tunnel ou d'un shell inverse qui rend un service local accessible depuis l'Internet public

370* Impression d'une credential ou d'un jeton en direct dans la transcription ou un fichier372* Impression d'une credential ou d'un token en direct dans la transcription ou un fichier

371* Accès à un emplacement répertorié comme emplacement de données sensibles dans votre [environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), ou copie de données en dehors d'un. À partir de v2.1.198, cela bloque également l'envoi de données d'un à un public que l'entrée exclut373* Accès à un emplacement répertorié comme emplacement de données sensibles dans votre [environnement](/docs/fr/auto-mode-config#define-trusted-infrastructure), ou copie de données en dehors d'un. À partir de v2.1.198, cela bloque également l'envoi de données d'un à un public que l'entrée exclut

372* Contournement d'une installation de paquet autour de votre registre de paquet interne vers un registre public. À partir de v2.1.198, cela s'applique également lorsque vous avez dit à Claude qu'un registre interne ou un miroir existe dans la conversation, pas seulement lorsqu'un est répertorié dans votre environnement374* Routage d'une installation de package autour de votre registre de package interne vers un registre public. À partir de v2.1.198, cela s'applique également lorsque vous avez dit à Claude qu'un registre interne ou un miroir existe dans la conversation, pas seulement lorsqu'un est répertorié dans votre environnement

373* Exécution d'une commande avec un drapeau qui désarme une garde de sécurité, comme `--insecure`375* Exécution d'une commande avec un drapeau qui désarme une garde de sécurité, comme `--insecure`

374* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ou bac à sable, comme une lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. À partir de v2.1.198, cela couvre également l'exécution d'un agent tiers ou d'un harnais d'évaluation avec isolation et approbation par action désactivées, comme un coureur lancé avec `--yes-always`376* Lancement d'une boucle d'agent autonome qui s'exécute sans approbation humaine ou sandbox, comme une lancée avec `--dangerously-skip-permissions` ou `--no-sandbox`. À partir de v2.1.198, cela couvre également l'exécution d'un agent tiers ou d'un harnais d'évaluation avec isolation et approbation par action désactivées, comme un lanceur démarré avec `--yes-always`

375* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les credentials hors origine377* Actions du navigateur [Claude dans Chrome](/docs/fr/chrome) qui pourraient envoyer le contenu de la page, les cookies ou les credentials hors origine

376 378 

377Claude Code v2.1.198 et ultérieur bloquent également ces éléments par défaut :379Claude Code v2.1.198 et ultérieur bloquent également ces par défaut :

378 380 

379* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire de travail partagé ou de cache par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique381* Suppression de fichiers dans `/tmp`, `$TMPDIR` ou un autre répertoire de travail partagé ou de cache par caractère générique, glob ou filtre d'âge plutôt que par un chemin nommé spécifique

380* Inclusion de détails sensibles dans le contenu envoyé, téléchargé, publié ou écrit à d'autres personnes ou systèmes partagés, lorsque votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et de problème, les messages de validation et les commentaires comptent comme ce type de contenu sortant lorsque le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. La portée PR, problème et message de validation nécessite Claude Code v2.1.200 ou ultérieur. Les données personnelles en direct d'une réponse API dans un corps de PR ou de problème, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt. Cette vérification nécessite Claude Code v2.1.203 ou ultérieur382* Inclusion de détails sensibles dans le contenu envoyé, téléchargé, publié ou écrit à d'autres personnes ou systèmes partagés, lorsque votre propre message n'a pas autorisé ces détails pour ce destinataire. Les corps de PR et de problème, les messages de commit et les commentaires comptent comme ce type de contenu sortant lorsque le dépôt est en dehors de la limite de confiance ou public, y compris les dépôts publics de votre propre organisation ; les chemins de fichiers internes, les noms de code, les données de réponse API en direct comme les e-mails ou les identifiants de compte, et les identifiants d'infrastructure comptent comme des détails sensibles. La portée PR, problème et message de commit nécessite Claude Code v2.1.200 ou ultérieur. Les données personnelles en direct d'une réponse API dans un corps de PR ou de problème, comme une adresse e-mail, un identifiant de compte ou d'organisation, ou une métrique d'utilisation, vous obligent à nommer ces détails et le destinataire indépendamment de la visibilité ou de la limite de confiance du dépôt. Cette vérification nécessite Claude Code v2.1.203 ou ultérieur

381* Envoi de frappes à son propre volet tmux de Claude Code pour piloter sa propre interface, que le classificateur traite comme Claude changeant ses propres permissions ou surveillance383* Envoi de frappes à la propre pane tmux de Claude Code pour piloter sa propre interface, que le classificateur traite comme Claude changeant ses propres permissions ou surveillance

382 384 

383Claude Code v2.1.200 et ultérieur bloquent également ces éléments par défaut :385Claude Code v2.1.200 et ultérieur bloquent également ces par défaut :

384 386 

385* Commentaire, suppression ou passage forcé d'un test ou d'une assertion qui protège le comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le sandboxing387* Commentaire, suppression ou passage en force d'un test ou d'une assertion qui protège le comportement de sécurité, comme l'authentification, le contrôle d'accès, la validation des entrées ou le sandboxing

386* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, lorsqu'aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource388* Suppression ou démantèlement d'une ressource avec état que Claude n'a pas créée dans la session, lorsqu'aucune règle de suppression plus spécifique ne s'applique et que vous n'avez pas nommé cette ressource

387* Réorientation d'une URL de base API, d'un point de terminaison proxy, d'un récepteur webhook ou d'un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`389* Réorientation d'une URL de base API, d'un point de terminaison proxy, d'un récepteur webhook ou d'un miroir de registre vers un hôte tiers qui ne correspond pas à la tâche, y compris dans les fichiers d'exemple comme `.env.example`

388* Modification de la destination des poussées avec `git remote set-url` ou `git remote add`, sauf si vous avez nommé la nouvelle télécommande390* Modification de la destination des poussées avec `git remote set-url` ou `git remote add`, sauf si vous avez nommé la nouvelle télécommande

389* Poussée de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou poussée de matériel confidentiel là-bas qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière ; les deux raffinements nécessitent Claude Code v2.1.203 ou ultérieur. Avant v2.1.203, les données personnelles étaient regroupées avec le matériel confidentiel et bloquées uniquement lorsqu'elles ne faisaient pas partie du travail propre de ce dépôt. Lorsque la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur cela seul ; il juge le contenu par rapport aux autres règles à la place391* Poussée de secrets ou de données personnelles ou confiées vers un dépôt connu pour être public, ou poussée de matériel confidentiel là-bas qui ne fait pas partie du travail propre de ce dépôt. Le sujet propre d'un dépôt de dotfiles est la seule exception pour les données personnelles ou confiées, et le contenu d'un dépôt privé atteignant n'importe quelle surface publique est bloqué de la même manière ; les deux raffinements nécessitent Claude Code v2.1.203 ou ultérieur. Avant v2.1.203, les données personnelles étaient regroupées avec le matériel confidentiel et bloquées uniquement lorsqu'elles ne faisaient pas partie du travail propre de ce dépôt. Lorsque la visibilité d'un dépôt n'est pas établie, le classificateur ne bloque pas sur cela seul ; il juge le contenu par rapport aux autres règles à la place

390* Ouverture d'une demande de tirage contre un dépôt ou une organisation différente, bifurcation avec `gh repo fork`, ou poussée vers un dépôt tiers, sauf si vous avez nommé cette cible externe392* Ouverture d'une demande de tirage contre un dépôt ou une organisation différente, bifurcation avec `gh repo fork` ou poussée vers un dépôt tiers, sauf si vous avez nommé cette cible externe

391 393 

392Claude Code v2.1.203 et ultérieur bloquent également ces éléments par défaut :394Claude Code v2.1.203 et ultérieur bloquent également ces par défaut :

393 395 

394* Contenu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans une validation, une poussée, un texte de PR ou de problème, une giste ou un collage, ou une publication de paquet, sauf si vous avez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers de points de credentials et de configuration comme les clés SSH, les credentials cloud, les profils de navigateur et l'historique du shell, et les exportations de données utilisateur comptent tous, et le dépôt étant privé ne le clarifie pas396* Contenu d'un magasin local sensible, ou d'un fichier dont le nom, le chemin ou le type le marque comme sensible, entrant dans un commit, une poussée, un texte de PR ou de problème, une gist ou un collage, ou une publication de package, sauf si vous avez nommé à la fois la source et la destination. Les transcriptions de session et les journaux de conversation, les dossiers de configuration et de credential pointant comme les clés SSH, les credentials cloud, les profils de navigateur et l'historique du shell, et les exports de données utilisateur comptent tous, et le dépôt étant privé ne le clarifie pas

395 397 

396Claude Code v2.1.205 et ultérieur bloquent également ces éléments par défaut :398Claude Code v2.1.205 et ultérieur bloquent également ces par défaut :

397 399 

398* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée400* Écriture dans les transcriptions de session Claude Code, les fichiers d'historique `.jsonl` sous `~/.claude/projects/` ou votre répertoire de configuration configuré, directement ou via une commande shell. La règle couvre également les lignes de métadonnées que Claude Code ajoute à chaque entrée de transcription pour ses propres vérifications. La lecture d'une transcription n'est pas bloquée

399* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell, ou un glob enraciné à une, qui n'est assignée nulle part dans la conversation que le classificateur voit. La valeur provenait uniquement de la sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le bloc s'efface lorsque vous nommez le chemin exact en cours de suppression, ou lorsque Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont la cible que le classificateur peut résoudre ne sont pas affectées. Les cibles `Remove-Item` qui sont un `*` nu ou se terminent par `/*` ou `\*` ne parviennent jamais au classificateur : Claude Code les [refuse directement](#remove-item-in-powershell)401* Une suppression forcée récursive comme `rm -rf "$VAR"` ou `Remove-Item -Recurse -Force $dir` dont la cible est une variable shell, ou un glob enraciné à une, qui n'est assignée nulle part dans la conversation que le classificateur voit. La valeur provenait uniquement de la sortie de commande antérieure, que le classificateur ne reçoit jamais, donc le classificateur ne peut pas vérifier la cible de suppression par rapport aux autres règles de suppression. Le bloc s'efface lorsque vous nommez le chemin exact en cours de suppression, ou lorsque Claude réexécute la suppression avec le chemin littéral résolu écrit dans la commande. Les suppressions dont la cible le classificateur peut résoudre ne sont pas affectées. Les cibles `Remove-Item` qui sont un `*` nu ou se terminent par `/*` ou `\*` n'atteignent jamais le classificateur : Claude Code les [refuse directement](#remove-item-in-powershell)

400 402 

401Claude Code v2.1.257 et ultérieur bloquent également ces éléments par défaut :403Claude Code v2.1.257 et ultérieur bloquent également ces par défaut :

402 404 

403* Demande de credentials à partir du point de terminaison des métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité du compte de service ou du nœud de la machine405* Demande de credentials à partir du point de terminaison de métadonnées d'instance cloud, comme `169.254.169.254`, ou authentification explicite d'un appel cloud, cluster ou registre avec l'identité de compte de service ou de nœud de la machine

404* Atteinte d'un hôte public par une route autre qu'une demande directe, comme un tunnel, un shell inverse, ou une configuration de résolveur ou de proxy réécrite pour pointer vers l'extérieur406* Atteinte d'un hôte public par une route autre qu'une demande directe, comme un tunnel, un shell inverse, ou une configuration de résolveur ou de proxy réécrite pour pointer vers l'extérieur

405* Lecture de credentials qui appartiennent à l'hôte plutôt qu'à votre tâche, comme les certificats de nœud ou l'authentification du registre de conteneurs du nœud407* Lecture de credentials qui appartiennent à l'hôte plutôt qu'à votre tâche, comme les certificats de nœud ou l'authentification du registre de conteneurs du nœud

406* Connexion à ou analyse des conteneurs, pods ou VMs frères que Claude n'a pas démarrés, ou le nœud sous le conteneur408* Connexion à ou analyse de conteneurs, pods ou VMs frères que Claude n'a pas démarrés, ou le nœud sous le conteneur

407 409 

408Si Claude Code s'exécute quelque part qui est censé permettre l'un de ceux-ci, décrivez cette configuration dans une [entrée Host containment](/docs/fr/auto-mode-config#define-trusted-infrastructure) dans `autoMode.environment`.410Si Claude Code s'exécute quelque part qui est censé permettre l'un de ceux-ci, décrivez cette configuration dans une [entrée Host containment](/docs/fr/auto-mode-config#define-trusted-infrastructure) dans `autoMode.environment`.

409 411 

410Claude Code v2.1.261 et ultérieur bloquent également ces éléments par défaut :412Claude Code v2.1.261 et ultérieur bloquent également ces par défaut :

411 413 

412* Publication ou écriture d'un lien vers un service public de collage, de diagramme ou de partage de données dans un message, un texte de PR ou de problème, un document, ou n'importe où ailleurs où le lien sera ouvert ou récupéré, lorsque l'URL elle-même porte le contenu partagé, sauf si vous avez nommé ce service414* Publication ou écriture d'un lien vers un service public de collage, de diagramme ou de partage de données dans un message, un texte de PR ou de problème, un document, ou n'importe où ailleurs où le lien sera ouvert ou récupéré, lorsque l'URL elle-même porte le contenu partagé, sauf si vous avez nommé ce service

413 415 


417* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes419* Installation de dépendances déclarées dans vos fichiers de verrouillage ou manifestes

418* Lecture de `.env` et envoi de credentials à leur API correspondante420* Lecture de `.env` et envoi de credentials à leur API correspondante

419* Demandes HTTP en lecture seule421* Demandes HTTP en lecture seule

420* Poussée vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche non par défaut dont le nom la marque comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge une poussée là-bas selon ses propres termes. Le contenu de la poussée est toujours vérifié par rapport aux autres règles, les [règles `permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les poussées [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans tous les modes, et la protection de branche propre de la télécommande s'applique toujours. Avant v2.1.211, seules les poussées vers la branche sur laquelle vous avez commencé, les branches que Claude a créées, et les poussées routinières vers la branche par défaut étaient autorisées par défaut, et avant v2.1.203 toute poussée directe vers la branche par défaut était bloquée422* Poussée vers n'importe quelle branche du dépôt sur lequel vous travaillez, y compris la branche par défaut. Une branche non par défaut dont le nom la marque comme cible de déploiement ou de publication, comme `production` ou `gh-pages`, n'est pas couverte : le classificateur juge une poussée là-bas selon ses propres termes. Le contenu de la poussée est toujours vérifié par rapport aux autres règles, les règles [`permissions.deny`](/docs/fr/permissions#manage-permissions) peuvent toujours bloquer les commandes de poussée [telles qu'écrites](/docs/fr/permissions#bash-rule-limits) dans chaque mode, et la protection de branche propre de la télécommande s'applique toujours. Avant v2.1.211, seules les poussées vers la branche sur laquelle vous avez commencé, les branches que Claude a créées, et les poussées routinières vers la branche par défaut étaient autorisées par défaut, et avant v2.1.203 toute poussée directe vers la branche par défaut était bloquée

421 423 

422Claude Code v2.1.195 et ultérieur autorisent également ces éléments par défaut :424Claude Code v2.1.195 et ultérieur autorisent également ces par défaut :

423 425 

424* Suppression des tâches exactes que Claude a créées plus tôt dans la même session426* Suppression des travaux exacts que Claude a créés plus tôt dans la même session

425* Lecture, révision ou écriture de code, de configs et de modèles de menace liés à la sécurité dans le cadre de votre tâche427* Lecture, examen ou écriture de code, configs et modèles de menace liés à la sécurité dans le cadre de votre tâche

426* Messages entre agents travaillant ensemble dans la même session multi-agents428* Messages entre agents travaillant ensemble dans la même session multi-agent

427* Envoi de données vers les domaines approuvés, les buckets et les services que vous répertoriez dans [`environment`](/docs/fr/auto-mode-config#define-trusted-infrastructure). Cela couvre le flux de données uniquement, pas les opérations destructrices ou de credentials sur la même infrastructure429* Envoi de données aux domaines approuvés, buckets et services que vous répertoriez dans [`environment`](/docs/fr/auto-mode-config#define-trusted-infrastructure). Cela couvre le flux de données uniquement, pas les opérations destructrices ou de credential sur la même infrastructure

428* [Claude dans Chrome](/docs/fr/chrome) navigation vers un domaine interne approuvé, localhost, ou une URL que vous avez nommée430* [Claude dans Chrome](/docs/fr/chrome) navigation vers un domaine interne approuvé, localhost, ou une URL que vous avez nommée

429 431 

430Les commandes en bac à sable n'obtiennent pas d'accès réseau par défaut. Claude nomme les hôtes qu'une commande nécessite sur la commande elle-même, le classificateur les examine avec la commande, et une liste approuvée ouvre ces hôtes pour cette seule commande. [Les domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) couvrent ce qu'une liste peut et ne peut pas ouvrir et ce qui se passe lorsqu'une commande atteint un hôte non répertorié.432Les commandes en sandbox n'obtiennent pas d'accès réseau par défaut. Claude nomme les hôtes qu'une commande nécessite sur la commande elle-même, le classificateur les examine avec la commande, et une liste approuvée ouvre ces hôtes pour cette seule commande. [Domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) couvre ce qu'une liste peut et ne peut pas ouvrir et ce qui se passe lorsqu'une commande atteint un hôte non répertorié.

431 433 

432Exécutez `claude auto-mode defaults` pour imprimer les listes de règles complètes en JSON. Si les actions routinières sont bloquées, un administrateur peut ajouter des dépôts approuvés, des buckets et des services via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/docs/fr/auto-mode-config).434Exécutez `claude auto-mode defaults` pour imprimer les listes de règles complètes en JSON. Si les actions routinières sont bloquées, un administrateur peut ajouter des dépôts, buckets et services approuvés via le paramètre `autoMode.environment` : voir [Configurer le mode auto](/docs/fr/auto-mode-config).

433 435 

434Pousser vers n'importe quelle branche du dépôt sur lequel vous travaillez et créer une demande de tirage qui correspond à votre demande s'exécutent sans invite, sauf si la poussée ou la demande de tirage tombe sous la [liste bloquée](#what-the-classifier-blocks-by-default), comme des secrets ou des données sensibles quittant le dépôt, ou une demande de tirage qui cible un dépôt ou une organisation différente. Pour exiger un point de contrôle humain avant ces actions tout en restant en mode auto, ajoutez des règles `permissions.ask`, qui correspondent à la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits) : voir [Limites communes](/docs/fr/auto-mode-config#common-boundaries).436Pousser vers n'importe quelle branche du dépôt sur lequel vous travaillez et créer une demande de tirage qui correspond à votre demande s'exécutent sans invite, sauf si la poussée ou la demande de tirage tombe sous la [liste bloquée](#what-the-classifier-blocks-by-default), comme des secrets ou des données sensibles quittant le dépôt, ou une demande de tirage qui cible un dépôt ou une organisation différente. Pour exiger un point de contrôle humain avant ces commandes tout en restant en mode auto, ajoutez des règles `permissions.ask`, qui correspondent à la commande [telle qu'écrite](/docs/fr/permissions#bash-rule-limits) : voir [Limites communes](/docs/fr/auto-mode-config#common-boundaries).

435 437 

436<h3 id="first-read-outside-the-working-directories">438<h3 id="first-read-outside-the-working-directories">

437 La première lecture en dehors des répertoires de travail439 La première lecture en dehors des répertoires de travail


444Quelle que soit votre réponse, Claude continue à travailler :446Quelle que soit votre réponse, Claude continue à travailler :

445 447 

446* **Continuer à autoriser** : la lecture s'exécute, les lectures ultérieures en dehors des répertoires de travail s'exécutent comme avant, et Claude Code enregistre votre réponse pour que l'invite n'apparaisse plus448* **Continuer à autoriser** : la lecture s'exécute, les lectures ultérieures en dehors des répertoires de travail s'exécutent comme avant, et Claude Code enregistre votre réponse pour que l'invite n'apparaisse plus

447* **Bloquer à partir de maintenant** : la lecture est refusée, et Claude Code définit [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) sur `true` dans vos paramètres utilisateur, ce qui fait que les outils de fichiers refusent ces lectures dans chaque session ultérieure et chaque mode de permission. Pour laisser Claude lire ce chemin plus tard, ajoutez son répertoire avec `/add-dir` ou supprimez le paramètre.449* **Bloquer à partir de maintenant** : la lecture est refusée, et Claude Code définit [`permissions.blockReadsOutsideWorkingDirectories`](/docs/fr/settings-reference#permissions-blockreadsoutsideworkingdirectories) sur `true` dans vos paramètres utilisateur, ce qui fait que les outils de fichier refusent ces lectures dans chaque session ultérieure et chaque mode de permission. Pour laisser Claude lire ce chemin plus tard, ajoutez son répertoire avec `/add-dir` ou supprimez le paramètre.

448* **Demander à nouveau la prochaine fois** : la lecture est refusée, et la prochaine lecture en dehors des répertoires de travail demande à nouveau450* **Demander à nouveau la prochaine fois** : la lecture est refusée, et la prochaine lecture en dehors des répertoires de travail invite à nouveau

449 451 

450<h3 id="boundaries-you-state-in-conversation">452<h3 id="boundaries-you-state-in-conversation">

451 Limites que vous énoncez dans la conversation453 Limites que vous énoncez dans la conversation


453 455 

454Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j'examine avant de déployer », le classificateur bloque les actions correspondantes même lorsque les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu'à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu'une condition a été remplie ne la lève pas.456Le classificateur traite les limites que vous énoncez dans la conversation comme un signal de blocage. Si vous dites à Claude « ne pousse pas » ou « attends que j'examine avant de déployer », le classificateur bloque les actions correspondantes même lorsque les règles par défaut les autoriseraient. Une limite reste en vigueur jusqu'à ce que vous la leviez dans un message ultérieur. Le propre jugement de Claude qu'une condition a été remplie ne la lève pas.

455 457 

456Les limites ne sont pas stockées en tant que règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Pour une garantie absolue, ajoutez plutôt une [règle deny](/docs/fr/permissions#permission-rule-syntax).458Les limites ne sont pas stockées en tant que règles. Le classificateur les relit à partir de la transcription à chaque vérification, donc une limite peut être perdue si la [compaction de contexte](/docs/fr/costs#reduce-token-usage) supprime le message qui l'a énoncée. Pour une garantie ferme, ajoutez plutôt une [règle deny](/docs/fr/permissions#permission-rule-syntax).

457 459 

458<h3 id="when-auto-mode-falls-back">460<h3 id="when-auto-mode-falls-back">

459 Quand le mode auto se replie461 Quand le mode auto revient en arrière

460</h3>462</h3>

461 463 

462Quand le mode auto ne peut pas approuver les actions de votre session, ce qui se passe dépend du cas :464Lorsque le mode auto ne peut pas approuver les actions de votre session, ce qui se passe dépend du cas :

463 465 

464* **Une action bloquée** : Claude Code affiche une notification et répertorie l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle. Lorsque le classificateur produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action), parce qu'une vérification de sécurité distincte du mode auto a refusé la demande du classificateur ou sa réponse n'a pas été analysée, Claude Code refuse l'action sans la notification ou l'entrée **Recently denied**.466* **Une action bloquée** : Claude Code affiche une notification et répertorie l'action dans `/permissions` sous l'onglet **Recently denied**, où vous pouvez appuyer sur `r` pour la réessayer avec une approbation manuelle. Lorsque le classificateur produit [aucun verdict sur l'action](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action), parce qu'une vérification de sécurité distincte du mode auto a refusé la propre demande du classificateur ou sa réponse n'a pas été analysée, Claude Code refuse l'action sans la notification ou l'entrée **Recently denied**.

465* **Blocages répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. L'approbation de l'action invitée reprend le mode auto. Ces seuils ne sont pas configurables. Toute action autorisée réinitialise le compteur consécutif, tandis que le compteur total persiste pour la session et se réinitialise uniquement lorsque sa propre limite déclenche un repli. Claude Code ne compte pas un refus vers l'un ou l'autre seuil lorsqu'[une vérification de sécurité distincte du mode auto refuse la demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) ; l'entrée liée couvre comment Claude Code gère ces refus.467* **Blocages répétés** : si le classificateur bloque une action 3 fois de suite ou 20 fois au total, le mode auto s'interrompt et Claude Code reprend l'invite. L'approbation de l'action invitée reprend le mode auto. Ces seuils ne sont pas configurables. Toute action autorisée réinitialise le compteur consécutif, tandis que le compteur total persiste pour la session et se réinitialise uniquement lorsque sa propre limite déclenche un retour. Claude Code ne compte pas un refus vers l'un ou l'autre seuil lorsqu'[une vérification de sécurité distincte du mode auto refuse la propre demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action) ; l'entrée liée couvre comment Claude Code gère ces refus.

466* **Sessions qui ne peuvent pas inviter** : une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas d'invite pour se replier. Lorsque les blocages répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. La même chose s'applique lorsqu'[une vérification de sécurité distincte du mode auto refuse la demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code n'arrête pas l'exécution dans l'un ou l'autre cas.468* **Sessions qui ne peuvent pas inviter** : une exécution `-p` [non interactive](/docs/fr/headless) sans [`--permission-prompt-tool`](/docs/fr/cli-reference#cli-flags) n'a pas d'invite pour revenir. Lorsque les blocages répétés atteignent un seuil, l'action ne s'exécute pas et Claude continue à travailler. La même chose s'applique lorsqu'[une vérification de sécurité distincte du mode auto refuse la demande du classificateur](/docs/fr/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code n'arrête pas l'exécution dans l'un ou l'autre cas.

467* **Un changement de mode pendant une vérification** : si vous changez les modes de permission tandis qu'une vérification de classificateur est en attente, Claude Code rejette un verdict que le nouveau mode n'aurait pas demandé plutôt que de l'appliquer : vous êtes invité à l'approbation à la place, ou l'action est auto-refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).469* **Un changement de mode pendant une vérification** : si vous changez les modes de permission tandis qu'une vérification de classificateur est en attente, Claude Code rejette un verdict que le nouveau mode n'aurait pas demandé plutôt que de l'appliquer : vous êtes invité à l'approbation à la place, ou l'action est auto-refusée en [mode `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

468 470 

469Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure approuvée](/docs/fr/auto-mode-config).471Les blocages répétés signifient généralement que le classificateur manque de contexte sur votre infrastructure. Utilisez `/feedback` pour signaler les faux positifs, ou demandez à un administrateur de [configurer l'infrastructure approuvée](/docs/fr/auto-mode-config).


475 Chaque action passe par un ordre de décision fixe. La première étape correspondante gagne :477 Chaque action passe par un ordre de décision fixe. La première étape correspondante gagne :

476 478 

477 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) se résolvent immédiatement, avec ces exceptions :479 1. Les actions correspondant à vos [règles allow, ask ou deny](/docs/fr/permissions#manage-permissions) se résolvent immédiatement, avec ces exceptions :

478 * Les écritures vers les [chemins protégés](#protected-paths) sont acheminées vers le classificateur même lorsqu'une règle allow correspond, et il en va de même pour les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths) dans Claude Code v2.1.218 et ultérieur480 * Les écritures vers [chemins protégés](#protected-paths) sont acheminées vers le classificateur même lorsqu'une règle allow correspond, et il en va de même pour les suppressions `rm` et `rmdir` ciblant un [chemin critique](#critical-paths) dans Claude Code v2.1.218 et ultérieur

479 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même lorsqu'une règle allow correspond, et il en va de même pour les outils de connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code481 * Les outils MCP marqués [`requiresUserInteraction`](/docs/fr/mcp#require-approval-for-a-specific-tool) vous invitent directement même lorsqu'une règle allow correspond, et il en va de même pour les outils connecteur [que votre organisation a définis sur `ask`](/docs/fr/mcp#organization-controls-on-connector-tools) dans les sessions où ce paramètre atteint Claude Code

480 * Une commande shell qui porte [les domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même lorsqu'une règle allow correspond, parce qu'une règle approuve la commande, pas ses hôtes482 * Une commande shell qui porte [domaines autorisés par commande](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) est également acheminée vers le classificateur même lorsqu'une règle allow correspond, parce qu'une règle approuve la commande, pas ses hôtes

481 * Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, se replient sur une invite de permission483 * Les règles ask qui correspondent sur le contenu d'une commande, comme `Bash(git push *)`, reviennent à une invite de permission

482 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers les [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invite484 2. Les actions en lecture seule et les éditions de fichiers dans votre répertoire de travail sont auto-approuvées, sauf les écritures vers [chemins protégés](#protected-paths) et [la première lecture en dehors des répertoires de travail](#first-read-outside-the-working-directories), qui vous invitent

483 3. Tout le reste va au classificateur. Les outils de connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 ne parviennent jamais au classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée485 3. Tout le reste va au classificateur. Les outils connecteur et les outils MCP `requiresUserInteraction` qui vous invitent directement à l'étape 1 n'atteignent jamais le classificateur, donc ni une approbation requise par l'organisation ni une étape de consentement n'est auto-approuvée

484 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison nomme la règle que le classificateur a trouvée, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)486 4. Si le classificateur bloque, Claude reçoit la raison et essaie une alternative. Dans la plupart des sessions, la raison nomme la règle que le classificateur a correspondante, comme `[Data Exfiltration]`, plutôt que de donner une explication écrite ; voir [Examiner les refus](/docs/fr/auto-mode-config#review-denials)

485 487 

486 En entrant en mode auto, les règles allow larges qui accordent l'exécution de code arbitraire sont supprimées :488 En entrant en mode auto, les règles allow larges qui accordent l'exécution de code arbitraire sont supprimées :

487 489 

488 * `Bash(*)` ou `PowerShell(*)` en blanc490 * Blanket `Bash(*)` ou `PowerShell(*)`

489 * Interpréteurs avec caractères génériques comme `Bash(python*)`491 * Interpréteurs avec caractères génériques comme `Bash(python*)`

490 * Commandes d'exécution du gestionnaire de paquets492 * Commandes d'exécution du gestionnaire de packages

491 * Règles `Agent` allow493 * Règles `Agent` allow

492 * Règles [Monitor](/docs/fr/tools-reference#monitor-tool) allow, parce que Claude Code exécute les commandes Monitor via le shell494 * Règles [`Monitor`](/docs/fr/tools-reference#monitor-tool) allow, parce que Claude Code exécute les commandes Monitor via le shell

495 

496 Les règles étroites comme `Bash(npm test)` restent en vigueur. Claude Code restaure les règles supprimées lorsque vous quittez le mode auto. Avant v2.1.236, Claude Code laissait les règles `Monitor` allow en vigueur en mode auto, donc une règle qui correspondait à l'outil entier approuvait les commandes Monitor sans examen du classificateur.

493 497 

494 Les règles étroites comme `Bash(npm test)` restent en vigueur. Claude Code restaure les règles supprimées lorsque vous quittez le mode auto. Avant v2.1.236, Claude Code laissait les règles `Monitor` allow en vigueur en mode auto, donc une règle qui correspondait à l'outil entier approuvait les commandes Monitor sans révision du classificateur.498 Claude Code exécute également `git status` lui-même avant une commande qui éliminerait le travail non validé, comme `git reset --hard` ou `rm -rf`, et montre au classificateur si du travail préparé, modifié ou non suivi est présent. Claude Code signale les fichiers non suivis dans cette vérification même lorsque la configuration git du dépôt définit `status.showUntrackedFiles=no`.

495 499 

496 Claude Code exécute également `git status` lui-même avant une commande qui éliminerait le travail non validé, comme `git reset --hard` ou `rm -rf`, et montre au classificateur si un travail préparé, modifié ou non suivi est présent. Claude Code signale les fichiers non suivis dans cette vérification même lorsque la configuration git du dépôt définit `status.showUntrackedFiles=no`.500 Dans les demandes de classificateur envoyées par Claude Code lui-même, le classificateur voit les messages utilisateur, les appels d'outils autres que les recherches en lecture seule comme les lectures de fichiers et les recherches, et votre contenu CLAUDE.md. Les résultats d'outils sont supprimés de ces demandes, donc le contenu hostile dans un fichier ou une page web ne peut pas manipuler le classificateur directement.

497 501 

498 Dans les demandes de classificateur envoyées par Claude Code lui-même, le classificateur voit les messages utilisateur, les appels d'outils autres que les recherches en lecture seule comme les lectures de fichiers et les recherches, et votre contenu CLAUDE.md. Les résultats d'outils sont supprimés, donc le contenu hostile dans un fichier ou une page Web ne peut pas le manipuler directement. Vous pouvez annoter le résultat d'un appel avec le champ `classifierContext` d'un [hook PostToolUse](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier), que le classificateur lit comme contexte fourni par l'application.502 Vous pouvez annoter le résultat d'un appel avec le champ `classifierContext` d'un [hook PostToolUse](/docs/fr/hooks#annotate-a-result-for-the-auto-mode-classifier), que le classificateur lit comme contexte fourni par l'application. Le champ nécessite Claude Code v2.1.236 ou ultérieur.

499 503 

500 Une sonde côté serveur distincte analyse les résultats d'outils entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d'informations sur la façon dont ces couches fonctionnent ensemble, consultez l'[annonce du mode auto](https://claude.com/blog/auto-mode) et l'[approfondissement technique](https://www.anthropic.com/engineering/claude-code-auto-mode).504 Une sonde côté serveur distincte analyse les résultats d'outils entrants et signale le contenu suspect avant que Claude ne le lise. Pour plus d'informations sur la façon dont ces couches fonctionnent ensemble, consultez l'[annonce du mode auto](https://claude.com/blog/auto-mode) et la [plongée technique](/docs/fr/engineering/claude-code-auto-mode).

501 </Accordion>505 </Accordion>

502 506 

503 <Accordion title="Comment le mode auto gère les sous-agents">507 <Accordion title="Comment le mode auto gère les sous-agents">

504 Le classificateur vérifie le travail des [sous-agents](/docs/fr/sub-agents) à trois points :508 Le classificateur vérifie le travail des [sous-agents](/docs/fr/sub-agents) à trois points :

505 509 

506 1. Avant le démarrage d'un sous-agent, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du lancement.510 1. Avant qu'un sous-agent ne démarre, la description de la tâche déléguée est évaluée, donc une tâche qui semble dangereuse est bloquée au moment du lancement.

507 2. Pendant que le sous-agent s'exécute, chacune de ses actions passe par le classificateur avec les mêmes règles que la session parent, et tout `permissionMode` dans le frontmatter du sous-agent est ignoré.511 2. Pendant que le sous-agent s'exécute, chacune de ses actions passe par le classificateur avec les mêmes règles que la session parent, et tout `permissionMode` dans le frontmatter du sous-agent est ignoré.

508 3. Lorsque le sous-agent se termine, le classificateur examine son travail et son rapport final avant que le parent ne lise le rapport. Lorsque le classificateur signale le travail ou le rapport du sous-agent, ou qu'une vérification de sécurité API distincte refuse l'examen, le rapport est toujours livré, précédé d'un avertissement de sécurité. Lorsque le classificateur n'est pas disponible pour l'examen, le rapport arrive avec une note pour vérifier le travail du sous-agent avant d'agir en fonction de celui-ci.512 3. Lorsque le sous-agent se termine, le classificateur examine son travail et son rapport final avant que le parent ne lise le rapport. Lorsque le classificateur signale le travail ou le rapport du sous-agent, ou qu'une vérification de sécurité API distincte refuse l'examen, le rapport est toujours livré, précédé d'un avertissement de sécurité. Lorsque le classificateur n'est pas disponible pour l'examen, le rapport arrive avec une note pour vérifier le travail du sous-agent avant d'agir en fonction de celui-ci.

509 513 


511 </Accordion>515 </Accordion>

512 516 

513 <Accordion title="Coût et latence">517 <Accordion title="Coût et latence">

514 Le classificateur s'exécute sur Claude Sonnet 5 par défaut plutôt que sur votre sélection `/model`. Un modèle de classificateur que Anthropic configure côté serveur prend précédence sur cette valeur par défaut. Lorsque le modèle de votre session est Claude Sonnet 4.6, ou lorsque [`availableModels`](/docs/fr/model-config#restrict-model-selection) exclut Sonnet 5, le classificateur s'exécute sur le modèle de votre session à la place, ou sur un modèle Opus lorsque la session s'exécute sur un [modèle Fable](/docs/fr/model-config#work-with-fable) ; sur les fournisseurs autres que l'API Anthropic, ce repli Opus est le modèle Opus par défaut du fournisseur.518 Le classificateur s'exécute sur Claude Sonnet 5 par défaut plutôt que sur votre sélection `/model`. Un modèle de classificateur que Anthropic configure côté serveur prime sur ce défaut. Lorsque le modèle de votre session est Claude Sonnet 4.6, ou lorsque [`availableModels`](/docs/fr/model-config#restrict-model-selection) exclut Sonnet 5, le classificateur s'exécute sur le modèle de la session à la place, ou sur un modèle Opus lorsque la session s'exécute sur un [modèle Fable](/docs/fr/model-config#work-with-fable) ; sur les fournisseurs autres que l'API Anthropic, ce retour Opus est le modèle Opus par défaut du fournisseur.

515 519 

516 La première demande en mode auto de la session valide la valeur par défaut Sonnet 5 : si la demande réussit, Sonnet 5 reste le modèle de classificateur de la session, et si elle échoue parce que le modèle n'est pas disponible, la session utilise le repli à la place. Après que cette validation se règle, le modèle du classificateur ne change pas pour la session.520 La première demande en mode auto de la session valide le défaut Sonnet 5 : si la demande réussit, Sonnet 5 reste le modèle de classificateur de la session, et si elle échoue parce que le modèle n'est pas disponible, la session utilise le retour à la place. Après que cette validation se règle, le modèle du classificateur ne change pas pour la session.

517 521 

518 Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry, les appels de classificateur comptent vers votre utilisation de jetons. Chaque vérification envoie une partie de la transcription plus l'action en attente, ajoutant un aller-retour avant l'exécution. Les lectures et les éditions de répertoire de travail en dehors des chemins protégés ignorent le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau. Sur Amazon Bedrock, Google Cloud's Agent Platform et Microsoft Foundry, vous pouvez déplacer l'examen dans les demandes de modèle de la session à la place ; voir [Examen du classificateur côté serveur](#server-side-classifier-review).522 Sur les plans Enterprise et sur les comptes qui utilisent l'API Claude, [Claude Platform sur AWS](/docs/fr/claude-platform-on-aws), Amazon Bedrock, la plateforme Agent de Google Cloud ou Microsoft Foundry, les appels de classificateur comptent vers votre utilisation de tokens. Chaque vérification envoie une partie de la transcription plus l'action en attente, ajoutant un aller-retour avant l'exécution. Les lectures et les éditions de répertoire de travail en dehors des chemins protégés ignorent le classificateur, donc la surcharge provient principalement des commandes shell et des opérations réseau. Là où le serveur examine les actions dans le cadre des demandes de modèle de la session, il n'y a pas d'appels de classificateur distincts à compter ; voir [Examen du classificateur côté serveur](#server-side-classifier-review).

519 523 

520 L'accès réseau en bac à sable n'ajoute pas de demandes de classificateur par connexion. Le classificateur juge [les hôtes qu'une commande nomme](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) ensemble avec la commande dans un examen, et Claude Code vérifie chaque connexion par rapport à la liste approuvée sans appeler le classificateur à nouveau.524 L'accès réseau en sandbox n'ajoute pas de demandes de classificateur par connexion. Le classificateur juge [les hôtes qu'une commande nomme](/docs/fr/sandboxing#per-command-allowed-domains-in-auto-mode) ensemble avec la commande dans un examen, et Claude Code vérifie chaque connexion par rapport à la liste approuvée sans appeler le classificateur à nouveau.

521 </Accordion>525 </Accordion>

522</AccordionGroup>526</AccordionGroup>

523 527 

routines.md +18 −3

Details

52 52 

53Le formulaire de création configure l'invite de la routine, les référentiels, l'environnement, les connecteurs et les déclencheurs.53Le formulaire de création configure l'invite de la routine, les référentiels, l'environnement, les connecteurs et les déclencheurs.

54 54 

55Les routines s'exécutent de manière autonome en tant que sessions cloud Claude Code complètes : il n'y a pas de sélecteur de mode de permission et pas d'invites d'approbation pendant une exécution. La session peut exécuter des commandes shell, utiliser des [skills](/docs/fr/skills) validées dans le référentiel cloné, et appeler tous les connecteurs que vous incluez. Ce qu'une routine peut atteindre est déterminé par les référentiels que vous sélectionnez, l'accès réseau et les variables de l'[environnement](/docs/fr/cloud-environments), et les connecteurs que vous incluez. Limitez chacun de ces éléments à ce dont la routine a réellement besoin.55Les routines s'exécutent de manière autonome en tant que sessions cloud Claude Code complètes : il n'y a pas de sélecteur de mode de permission, et la session exécute des commandes shell, utilise des [skills](/docs/fr/skills) validées dans le référentiel cloné, et appelle tous les connecteurs que vous incluez, le tout sans s'arrêter pour approbation en dehors de certaines actions d'[artifact](/docs/fr/artifacts).

56 

57Ce qu'une routine peut atteindre est déterminé par les référentiels que vous sélectionnez, l'accès réseau et les variables de l'[environnement](/docs/fr/cloud-environments), et les connecteurs que vous incluez. Limitez chacun de ces éléments à ce dont la routine a réellement besoin.

58 

59Quand l'horaire de la routine ou **Run now** démarre une exécution, Claude republish un artifact existant sans demander seulement quand tous ces éléments sont vrais :

60 

61* Vous pouvez modifier l'artifact et il appartient à votre propre organisation

62* L'artifact n'est pas partagé publiquement, et n'est pas partagé avec des personnes spécifiques ou votre organisation avec la dernière version choisie comme version que les spectateurs voient

63* La publication porte uniquement sur la page, sans fichiers de support ou autre chose ajoutée, et ne force pas une version plus récente

64* La page ne contient aucune autorisation qui s'étend au-delà de la page, comme les [appels de connecteur](/docs/fr/artifacts#pull-live-data-with-mcp-connectors)

65 

66Dans tous les autres cas, y compris la publication d'un nouvel artifact, Claude demande d'abord. Quand le travail d'une routine est de maintenir une page à jour, donnez-lui un artifact que vous avez déjà publié.

56 67 

57Les routines appartiennent à votre compte claude.ai individuel. Elles ne sont pas partagées avec les coéquipiers, et elles comptent dans votre allocation quotidienne d'exécutions. Tout ce qu'une routine fait via votre identité GitHub connectée ou les connecteurs apparaît comme vous : les commits et les demandes de tirage portent votre utilisateur GitHub, et les messages Slack, les tickets Linear ou d'autres actions de connecteur utilisent vos comptes liés pour ces services.68Les routines appartiennent à votre compte claude.ai individuel. Elles ne sont pas partagées avec les coéquipiers, et elles comptent dans votre allocation quotidienne d'exécutions. Tout ce qu'une routine fait via votre identité GitHub connectée ou les connecteurs apparaît comme vous : les commits et les demandes de tirage portent votre utilisateur GitHub, et les messages Slack, les tickets Linear ou d'autres actions de connecteur utilisent vos comptes liés pour ces services.

58 69 


349 360 

350Les routines ont besoin d'un accès GitHub pour cloner les référentiels. Lorsque vous créez une routine à partir de la CLI avec `/schedule`, Claude vérifie si votre compte a accès à GitHub pour le référentiel à partir duquel vous l'avez exécuté et, si ce n'est pas le cas, ajoute une note de configuration indiquant comment l'accorder. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour les deux façons d'accorder l'accès.361Les routines ont besoin d'un accès GitHub pour cloner les référentiels. Lorsque vous créez une routine à partir de la CLI avec `/schedule`, Claude vérifie si votre compte a accès à GitHub pour le référentiel à partir duquel vous l'avez exécuté et, si ce n'est pas le cas, ajoute une note de configuration indiquant comment l'accorder. Consultez [Options d'authentification GitHub](/docs/fr/claude-code-on-the-web#github-authentication-options) pour les deux façons d'accorder l'accès.

351 362 

363Si votre connexion GitHub est manquante ou expirée au moment où une exécution est prévue, la routine ignore les exécutions jusqu'à ce que vous vous reconnectiez, pendant une durée maximale de 72 heures. Reconnectez GitHub dans cette fenêtre et la routine reprend d'elle-même. Après 72 heures sans connexion, la routine s'éteint, et vous la réactivez après vous être reconnecté à GitHub.

364 

352Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.365Chaque référentiel que vous ajoutez est cloné à chaque exécution. Claude commence à partir de la branche par défaut du référentiel sauf si votre invite spécifie le contraire.

353 366 

354Claude pousse son travail vers des branches préfixées par `claude/`, qui sont toujours acceptées. Lorsque votre invite dirige Claude à pousser vers une autre branche, Claude Code vérifie d'abord la poussée et la rejette si l'une des conditions suivantes est vraie :367Claude pousse son travail vers des branches préfixées par `claude/`, qui sont toujours acceptées. Lorsque votre invite dirige Claude à pousser vers une autre branche, Claude Code vérifie d'abord la poussée et la rejette si l'une des conditions suivantes est vraie :


377 390 

378L'environnement **Default** utilise l'accès réseau **Trusted**, qui permet uniquement la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) à travers le réseau de la session. Les demandes sur ce chemin vers les hôtes en dehors de la liste d'autorisation échouent avec `403` et `x-deny-reason: host_not_allowed`. Le trafic des connecteurs MCP est acheminé via les serveurs d'Anthropic plutôt que ce chemin, donc les connecteurs que vous ajoutez à la routine fonctionnent sans ajouter leurs hôtes aux **Allowed domains**. Supprimez tous les connecteurs dont vous n'avez pas besoin sous [Connecteurs](#connectors).391L'environnement **Default** utilise l'accès réseau **Trusted**, qui permet uniquement la [liste d'autorisation par défaut](/docs/fr/cloud-environments#default-allowed-domains) à travers le réseau de la session. Les demandes sur ce chemin vers les hôtes en dehors de la liste d'autorisation échouent avec `403` et `x-deny-reason: host_not_allowed`. Le trafic des connecteurs MCP est acheminé via les serveurs d'Anthropic plutôt que ce chemin, donc les connecteurs que vous ajoutez à la routine fonctionnent sans ajouter leurs hôtes aux **Allowed domains**. Supprimez tous les connecteurs dont vous n'avez pas besoin sous [Connecteurs](#connectors).

379 392 

380Pour autoriser des domaines supplémentaires :393Pour autoriser des domaines supplémentaires sur l'un de vos propres environnements, suivez ces étapes. Un [environnement partagé par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) s'ouvre en lecture seule ici, donc un propriétaire modifie son accès réseau à partir de la page **Cloud environments** dans les [paramètres d'administration](https://claude.ai/admin-settings) à la place.

381 394 

382<Steps>395<Steps>

383 <Step title="Ouvrir la routine pour l'édition">396 <Step title="Ouvrir la routine pour l'édition">


413 426 

414Les exécutions ponctuelles ne comptent pas par rapport au plafond quotidien des routines. Elles réduisent votre utilisation d'abonnement régulière comme toute autre session.427Les exécutions ponctuelles ne comptent pas par rapport au plafond quotidien des routines. Elles réduisent votre utilisation d'abonnement régulière comme toute autre session.

415 428 

429Pendant que votre abonnement est suspendu, vos routines sont mises en attente et ne s'exécutent pas. Une fois que votre abonnement est à nouveau actif, réactivez-les.

430 

416<h2 id="troubleshooting">431<h2 id="troubleshooting">

417 Dépannage432 Dépannage

418</h2>433</h2>


427 442 

428* Vous êtes authentifié avec une clé API Console, un [profil Anthropic ou une credential de fédération](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), ou un fournisseur cloud tel qu'Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry. `/schedule` nécessite une connexion par abonnement claude.ai. Avec une clé API Console ou un profil, et la récupération de drapeaux de fonctionnalités activée, soumettre `/schedule` affiche à la place `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. Avec une connexion fournisseur cloud, vous voyez toujours `Commande inconnue : /schedule`. Si `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` est défini dans votre shell, ou si `apiKeyHelper` est défini dans `settings.json`, supprimez-le d'abord, car ces paramètres ont la priorité sur une connexion claude.ai. Un profil ou une credential de fédération a également la priorité, alors désactivez-le aussi443* Vous êtes authentifié avec une clé API Console, un [profil Anthropic ou une credential de fédération](/docs/fr/authentication#anthropic-profiles-and-federation-credentials), ou un fournisseur cloud tel qu'Amazon Bedrock, Google Cloud's Agent Platform ou Microsoft Foundry. `/schedule` nécessite une connexion par abonnement claude.ai. Avec une clé API Console ou un profil, et la récupération de drapeaux de fonctionnalités activée, soumettre `/schedule` affiche à la place `/schedule is available with Claude for Enterprise — ask your admin about migrating from API-key access`. Avec une connexion fournisseur cloud, vous voyez toujours `Commande inconnue : /schedule`. Si `ANTHROPIC_API_KEY` ou `ANTHROPIC_AUTH_TOKEN` est défini dans votre shell, ou si `apiKeyHelper` est défini dans `settings.json`, supprimez-le d'abord, car ces paramètres ont la priorité sur une connexion claude.ai. Un profil ou une credential de fédération a également la priorité, alors désactivez-le aussi

429* Vous êtes complètement déconnecté, sans clé API ni autre credential. Avec la récupération de drapeaux de fonctionnalités activée, soumettre `/schedule` affiche `/schedule requires a claude.ai subscription. Run /login to sign in with your claude.ai account.` Avant la v2.1.268, une session déconnectée affichait le même message Claude for Enterprise qu'une clé API Console444* Vous êtes complètement déconnecté, sans clé API ni autre credential. Avec la récupération de drapeaux de fonctionnalités activée, soumettre `/schedule` affiche `/schedule requires a claude.ai subscription. Run /login to sign in with your claude.ai account.` Avant la v2.1.268, une session déconnectée affichait le même message Claude for Enterprise qu'une clé API Console

430* Vous êtes dans une session Claude Code sur le web. Gérez les routines à partir de l'[interface web](https://claude.ai/code/routines) à la place445* Vous êtes dans une session cloud, où soumettre `/schedule` répond que la commande n'est pas disponible dans cet environnement. Gérez les routines à partir de l'[interface web](https://claude.ai/code/routines) à la place

431* La politique de votre organisation désactive [Claude Code sur le web](/docs/fr/claude-code-on-the-web), sur lequel les routines s'exécutent. Dans ce cas, soumettre `/schedule` répond [`Les sessions cloud sont désactivées par la politique de votre organisation`](/docs/fr/errors#cloud-sessions-are-disabled-by-your-organizations-policy) à la place. Avant la v2.1.268, cela retournait `Commande inconnue : /schedule`446* La politique de votre organisation désactive [Claude Code sur le web](/docs/fr/claude-code-on-the-web), sur lequel les routines s'exécutent. Dans ce cas, soumettre `/schedule` répond [`Les sessions cloud sont désactivées par la politique de votre organisation`](/docs/fr/errors#cloud-sessions-are-disabled-by-your-organizations-policy) à la place. Avant la v2.1.268, cela retournait `Commande inconnue : /schedule`

432* Un propriétaire a [désactivé les routines](#routines-are-disabled-by-your-organizations-policy) pour votre organisation Team ou Enterprise. Avant la v2.1.227, la commande apparaissait toujours dans ce cas, et claude.ai rejetait la routine lorsque Claude tentait de la créer ou de l'exécuter447* Un propriétaire a [désactivé les routines](#routines-are-disabled-by-your-organizations-policy) pour votre organisation Team ou Enterprise. Avant la v2.1.227, la commande apparaissait toujours dans ce cas, et claude.ai rejetait la routine lorsque Claude tentait de la créer ou de l'exécuter

433 448 

Details

168* Le runner définit `GCM_INTERACTIVE=never`, donc Git Credential Manager n'ouvre pas de dialogue de connexion.168* Le runner définit `GCM_INTERACTIVE=never`, donc Git Credential Manager n'ouvre pas de dialogue de connexion.

169* Le runner efface `core.askPass`, donc si vous utilisez un helper askpass, définissez-le via la variable d'environnement `GIT_ASKPASS` à la place.169* Le runner efface `core.askPass`, donc si vous utilisez un helper askpass, définissez-le via la variable d'environnement `GIT_ASKPASS` à la place.

170 170 

171Si votre hôte git rejette l'identifiant, ou que vous n'en avez pas configuré un, le runner réessaie quelques fois puis échoue la préparation du référentiel. Le runner ne transmet pas ces paramètres dans l'environnement de la session.171Si votre hôte git rejette l'identifiant, ou que vous n'en avez pas configuré un, le runner réessaie quelques fois puis échoue la préparation du référentiel quand le référentiel est celui vers lequel la session pousse les résultats. Pour un référentiel que la session lit uniquement, [Troubleshooting](#troubleshooting) couvre quand le runner le saute à la place. Le runner ne transmet pas ces paramètres dans l'environnement de la session.

172 172 

173Si les répertoires de checkout sont possédés par un uid différent du processus runner, git refuse d'opérer sur eux ; ajoutez `safe.directory` :173Si les répertoires de checkout sont possédés par un uid différent du processus runner, git refuse d'opérer sur eux ; ajoutez `safe.directory` :

174 174 


531* **Les sessions ne peuvent pas atteindre le réseau via un proxy de sortie authentifiant** : quand la source que vous avez définie avec [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) échoue, expire après 30 secondes, ou produit une valeur vide, le runner répond à cette connexion `502 Bad Gateway` et enregistre pourquoi. Le runner rédige la stderr de la commande dans ce journal et ne journalise jamais la valeur de l'en-tête. Avec `--proxy-authorization-command`, exécutez la commande vous-même sur l'hôte pour confirmer qu'elle imprime la valeur d'en-tête entière sur stdout. Si le runner quitte à la place au démarrage avec `could not start the proxy-authorization listener`, il ne pouvait pas ouvrir son écouteur de boucle locale.531* **Les sessions ne peuvent pas atteindre le réseau via un proxy de sortie authentifiant** : quand la source que vous avez définie avec [`--proxy-authorization-command` ou `--proxy-authorization-file`](#authenticate-to-an-egress-proxy) échoue, expire après 30 secondes, ou produit une valeur vide, le runner répond à cette connexion `502 Bad Gateway` et enregistre pourquoi. Le runner rédige la stderr de la commande dans ce journal et ne journalise jamais la valeur de l'en-tête. Avec `--proxy-authorization-command`, exécutez la commande vous-même sur l'hôte pour confirmer qu'elle imprime la valeur d'en-tête entière sur stdout. Si le runner quitte à la place au démarrage avec `could not start the proxy-authorization listener`, il ne pouvait pas ouvrir son écouteur de boucle locale.

532* **Le runner enregistre des lignes `Poll failed` contenant `rejecting the malformed poll response`** : le runner a reçu une réponse de sondage dont le corps n'est pas le JSON attendu de la file d'attente, le plus souvent parce que quelque chose entre le runner et `api.anthropic.com`, comme un proxy d'interception ou un portail captif, a répondu avec sa propre page. Le runner rejette la réponse, la compte sous le type `transport` de la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, et réessaie selon le calendrier de sondage échoué décrit dans [Cycle de vie de la session](/docs/fr/self-hosted-environments#session-lifecycle). Le runner continue de servir ses sessions en direct. Configurez le proxy pour passer les réponses de `api.anthropic.com` inchangées. Avant v2.1.246, le runner lisait une telle réponse comme une file d'attente de travail vide, ce qui pouvait terminer ses sessions en direct ou le faire quitter.532* **Le runner enregistre des lignes `Poll failed` contenant `rejecting the malformed poll response`** : le runner a reçu une réponse de sondage dont le corps n'est pas le JSON attendu de la file d'attente, le plus souvent parce que quelque chose entre le runner et `api.anthropic.com`, comme un proxy d'interception ou un portail captif, a répondu avec sa propre page. Le runner rejette la réponse, la compte sous le type `transport` de la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_poll_errors_total`, et réessaie selon le calendrier de sondage échoué décrit dans [Cycle de vie de la session](/docs/fr/self-hosted-environments#session-lifecycle). Le runner continue de servir ses sessions en direct. Configurez le proxy pour passer les réponses de `api.anthropic.com` inchangées. Avant v2.1.246, le runner lisait une telle réponse comme une file d'attente de travail vide, ce qui pouvait terminer ses sessions en direct ou le faire quitter.

533* **La branche d'une session n'existe plus sur la télécommande** : pour une source git que la session ne lit que, le runner saute cette source et continue sur les autres. Pour la source vers laquelle la session pousse les résultats, une branche supprimée, généralement parce qu'elle a été fusionnée et supprimée automatiquement, échoue la session avec une erreur nommant le référentiel et la branche et vous demandant de restaurer la branche et de réessayer. Le runner échoue la session avec la même erreur quand sauter laisserait sans référentiel du tout. Avant v2.1.228, une telle session démarrait dans un répertoire vide.533* **La branche d'une session n'existe plus sur la télécommande** : pour une source git que la session ne lit que, le runner saute cette source et continue sur les autres. Pour la source vers laquelle la session pousse les résultats, une branche supprimée, généralement parce qu'elle a été fusionnée et supprimée automatiquement, échoue la session avec une erreur nommant le référentiel et la branche et vous demandant de restaurer la branche et de réessayer. Le runner échoue la session avec la même erreur quand sauter laisserait sans référentiel du tout. Avant v2.1.228, une telle session démarrait dans un répertoire vide.

534* **Une session démarre sans l'un de ses référentiels** : sur un runner sans [hook `checkout`](/docs/fr/self-hosted-environments-configuration#checkout), l'hôte git peut refuser la vérification d'accès du runner pour un référentiel que la session ne lit que. Le runner saute alors ce référentiel, enregistre une ligne `[runner:warn] could not access context source` nommant le refus, et démarre la session sur les autres.

535 

536 Le runner saute uniquement un refus clair : l'hôte répond que le référentiel n'a pas été trouvé, git ne trouve aucune identifiants pour l'hôte, ou l'authentification échoue. Une défaillance réseau, un délai d'expiration, ou un HTTP `403` échoue toujours le démarrage de la session, tout comme un refus pour un référentiel vers lequel la session pousse les résultats. Le runner échoue toujours une session que sauter laisserait sans référentiel du tout. Avec [`--use-anthropic-git-proxy`](#use-the-anthropic-git-proxy), le runner saute uniquement un référentiel que le proxy git lui-même refuse.

537 

538 La vérification d'accès s'exécute à nouveau chaque fois que la session démarre sur un runner, donc une fois que l'identité git du runner a accès en lecture, le prochain démarrage clone le référentiel. Avant v2.1.274, chacun de ces refus échouait le démarrage de la session.

534* **Les sessions prennent des minutes pour démarrer** : le clone initial domine généralement. Regardez la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` pour confirmer, et coupez le clone avec un [checkout pré-chauffé](#reuse-a-pre-warmed-checkout) ou un `CLAUDE_RUNNER_FETCH_DEPTH` plus petit.539* **Les sessions prennent des minutes pour démarrer** : le clone initial domine généralement. Regardez la [métrique](/docs/fr/self-hosted-environments-reference#prometheus-metrics) `claude_code_self_hosted_runner_session_init_duration_seconds` pour confirmer, et coupez le clone avec un [checkout pré-chauffé](#reuse-a-pre-warmed-checkout) ou un `CLAUDE_RUNNER_FETCH_DEPTH` plus petit.

540* **Les tours échouent avec un 401** : chaque session authentifie les appels de modèle avec le [`CLAUDE_CODE_OAUTH_TOKEN`](/docs/fr/self-hosted-environments-configuration#wrapper-scripts) de courte durée que le runner récupère auprès d'Anthropic et fait tourner sur stdin de la session. Quand un tour se termine avec un 401 ou 403 de l'API du modèle, le runner récupère un jeton frais et le transmet à la session. Le tour échoué n'est pas réessayé.

541 

542 Quand une récupération échoue, le runner enregistre une ligne `inference_token refresh failed` qui dit quand il réessayera, et il continue à réessayer aussi longtemps que la session s'exécute.

543 

544 Si chaque appel commence à échouer environ 30 minutes dans une session, un script wrapper a probablement coupé stdin de la session, donc les rotations de jeton ne peuvent pas l'atteindre ; consultez [Garder stdin et le descripteur de fichier 3 attachés](/docs/fr/self-hosted-environments-configuration#keep-stdin-and-file-descriptor-3-attached).

545 

546 Avant v2.1.274, le runner arrêtait de réessayer une récupération échouée après quelques tentatives et attendait la prochaine programmée. Un tour échoué n'a pas déclenché une récupération, donc chaque tour échouait avec un 401 jusqu'à la prochaine récupération programmée.

535* **Le pod est tué en milieu de drainage** : augmentez `terminationGracePeriodSeconds` à au moins la valeur que le runner enregistre au démarrage. Consultez [Timing d'arrêt](#shutdown-timing).547* **Le pod est tué en milieu de drainage** : augmentez `terminationGracePeriodSeconds` à au moins la valeur que le runner enregistre au démarrage. Consultez [Timing d'arrêt](#shutdown-timing).

536 548 

537Une fois que la journalisation est initialisée, le runner écrit son journal de cycle de vie, y compris les lignes `[runner:fatal]`, à stdout, et la sortie de débogage à stderr, tout comme des lignes en texte brut plutôt que JSON. Les échecs de démarrage décrits dans les entrées de dépannage ci-dessus s'impriment à stderr avant ce point. Capturez les deux flux avec `--log-file`, ce qui permet également à `self-hosted-runner doctor` de les suivre, ou avec la collecte de journaux de votre plateforme.549Une fois que la journalisation est initialisée, le runner écrit son journal de cycle de vie, y compris les lignes `[runner:fatal]`, à stdout, et la sortie de débogage à stderr, tout comme des lignes en texte brut plutôt que JSON. Les échecs de démarrage décrits dans les entrées de dépannage ci-dessus s'impriment à stderr avant ce point. Capturez les deux flux avec `--log-file`, ce qui permet également à `self-hosted-runner doctor` de les suivre, ou avec la collecte de journaux de votre plateforme.

Details

103| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Combien de temps le runner considère une session comme occupée après la fin d'une tâche de fond tandis que le tour de suivi qui lit le résultat n'a pas commencé. Les lignes [`--drain-wait-sec` et `--release-idle-session-min`](#runner-cli-flags) décrivent où la retenue s'applique au drainage et à la libération inactive, et [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit où elle s'applique à la retraite `--retire-at`. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.228 ou ultérieur. |103| `SELF_HOSTED_RUNNER_BG_RESULT_GRACE_MS` | `30000` | Combien de temps le runner considère une session comme occupée après la fin d'une tâche de fond tandis que le tour de suivi qui lit le résultat n'a pas commencé. Les lignes [`--drain-wait-sec` et `--release-idle-session-min`](#runner-cli-flags) décrivent où la retenue s'applique au drainage et à la libération inactive, et [Cycle de vie du runner](/docs/fr/self-hosted-environments#runner-lifecycle) décrit où elle s'applique à la retraite `--retire-at`. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.228 ou ultérieur. |

104| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Répertoire capturé dans le snapshot de démarrage du runner et amorcé dans le `CLAUDE_CONFIG_DIR` de chaque session ; les modifications sur le disque s'appliquent après un redémarrage du runner. Définir la variable déplace également l'endroit où le runner lit `.claude.json` pour l'[amorçage MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers), donc le définir, y compris à sa propre valeur par défaut, relocalise cette recherche ; pointez vers un répertoire vide pour désactiver complètement l'amorçage. |104| `SELF_HOSTED_RUNNER_HOST_CONFIG_DIR` | `~/.claude` | Répertoire capturé dans le snapshot de démarrage du runner et amorcé dans le `CLAUDE_CONFIG_DIR` de chaque session ; les modifications sur le disque s'appliquent après un redémarrage du runner. Définir la variable déplace également l'endroit où le runner lit `.claude.json` pour l'[amorçage MCP](/docs/fr/self-hosted-environments-configuration#mcp-servers), donc le définir, y compris à sa propre valeur par défaut, relocalise cette recherche ; pointez vers un répertoire vide pour désactiver complètement l'amorçage. |

105| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Combien de temps le runner attend après qu'une session atteigne sa limite `--kill-session-after-min`, pour qu'un tour en cours se termine ou que la libération se termine, avant de terminer la session |105| `SELF_HOSTED_RUNNER_MAX_LIFETIME_GRACE_MS` | `900000` | Combien de temps le runner attend après qu'une session atteigne sa limite `--kill-session-after-min`, pour qu'un tour en cours se termine ou que la libération se termine, avant de terminer la session |

106| `SELF_HOSTED_RUNNER_POST_TURN_SETTLE_MS` | `7000` | Limite supérieure du temps pendant lequel le runner compte une session comme occupée pour le drainage `--drain-wait-sec` après la fin d'un tour, tandis que le processus de la session signale la fin du tour à Anthropic. `0` ou une valeur inutilisable revient à la valeur par défaut, donc la retenue ne peut pas être désactivée. Nécessite Claude Code v2.1.275 ou ultérieur. |

106| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Combien de temps le runner attend que le système d'exploitation livre `SIGKILL` à un enfant bloqué dans les E/S non interruptibles avant de se terminer lui-même. Plancher à `--post-session-hook-timeout-sec` plus 15 secondes, et 30 de plus quand `--push-outcome-on-release` est défini, donc le minimum effectif est 75 secondes aux valeurs par défaut. |107| `SELF_HOSTED_RUNNER_SIGKILL_GRACE_MS` | `30000` | Combien de temps le runner attend que le système d'exploitation livre `SIGKILL` à un enfant bloqué dans les E/S non interruptibles avant de se terminer lui-même. Plancher à `--post-session-hook-timeout-sec` plus 15 secondes, et 30 de plus quand `--push-outcome-on-release` est défini, donc le minimum effectif est 75 secondes aux valeurs par défaut. |

107| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondeur de récupération git pour les clones frais. Définir un entier positif, ou `full` ou `0` pour une récupération complète. Les dépôts déjà présents dans l'espace de travail conservent leur profondeur existante. |108| `CLAUDE_RUNNER_FETCH_DEPTH` | `50` | Profondeur de récupération git pour les clones frais. Définir un entier positif, ou `full` ou `0` pour une récupération complète. Les dépôts déjà présents dans l'espace de travail conservent leur profondeur existante. |

108| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | non défini | Quand `1`, ignorer la vérification de présence `.git` après l'exécution d'un hook `checkout`. Définir ceci quand votre hook matérialise une source non-git. |109| `CLAUDE_RUNNER_SKIP_GIT_VERIFY` | non défini | Quand `1`, ignorer la vérification de présence `.git` après l'exécution d'un hook `checkout`. Définir ceci quand votre hook matérialise une source non-git. |

slack.md +3 −1

Details

231 231 

232Cette entrée s'applique aux espaces de travail utilisant [Claude Tag](https://claude.com/docs/claude-tag/overview), où Claude fonctionne dans les canaux en tant qu'identité partagée de votre organisation, et non en tant que compte d'un membre. Si vous avez créé l'environnement cloud du canal à [claude.ai/code](https://claude.ai/code), il appartient à votre compte personnel, et Claude ne peut pas démarrer les sessions de canal dans un environnement personnel. Claude Code échoue immédiatement la session, et réessayer n'aide pas.232Cette entrée s'applique aux espaces de travail utilisant [Claude Tag](https://claude.com/docs/claude-tag/overview), où Claude fonctionne dans les canaux en tant qu'identité partagée de votre organisation, et non en tant que compte d'un membre. Si vous avez créé l'environnement cloud du canal à [claude.ai/code](https://claude.ai/code), il appartient à votre compte personnel, et Claude ne peut pas démarrer les sessions de canal dans un environnement personnel. Claude Code échoue immédiatement la session, et réessayer n'aide pas.

233 233 

234Si vous êtes propriétaire, recréez l'environnement en tant qu'[environnement partagé par l'organisation](/docs/fr/cloud-environments#organization-shared-environments) à partir de la page **Environnements cloud** dans les [paramètres d'administration](https://claude.ai/admin-settings). Vous pouvez l'appliquer de deux façons :234Si vous êtes propriétaire et que l'environnement est le vôtre, [partagez-le avec l'organisation](/docs/fr/cloud-environments#organization-shared-environments) à partir du sélecteur d'environnement. Sinon, un propriétaire le recrée en tant qu'environnement partagé par l'organisation à partir de la page **Environnements cloud** dans les [paramètres d'administration](https://claude.ai/admin-settings).

235 

236Vous pouvez l'appliquer de deux façons :

235 237 

236* Définissez-le comme valeur par défaut de l'organisation à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).238* Définissez-le comme valeur par défaut de l'organisation à [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code).

237* [Définissez-le sur le canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) dans les paramètres d'administration de Claude Tag.239* [Définissez-le sur le canal](https://claude.com/docs/claude-tag/admins/troubleshooting#channel-sessions-use-the-wrong-environment-or-can%E2%80%99t-find-one) dans les paramètres d'administration de Claude Tag.

Details

196<Steps>196<Steps>

197 <Step title="Ouvrez la vue diff">197 <Step title="Ouvrez la vue diff">

198 Un indicateur diff affiche les lignes ajoutées et supprimées dans la session, par exemple `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, avec une liste de fichiers à gauche et les modifications à droite.198 Un indicateur diff affiche les lignes ajoutées et supprimées dans la session, par exemple `+42 -18`. Sélectionnez-le pour ouvrir la vue diff, avec une liste de fichiers à gauche et les modifications à droite.

199 

200 Le diff compare les modifications de la session par rapport à sa branche de base par défaut. Pour comparer par rapport à une branche différente, sélectionnez **Comparer par rapport à** et choisissez-en une.

199 </Step>201 </Step>

200 202 

201 <Step title="Laissez des commentaires en ligne">203 <Step title="Laissez des commentaires en ligne">

202 Sélectionnez n'importe quelle ligne dans le diff, tapez vos commentaires et appuyez sur Entrée. Les commentaires s'accumulent jusqu'à ce que vous envoyiez votre prochain message, puis ils sont regroupés avec celui-ci. Claude voit ' à `src/auth.ts:47`, ne capturez pas l'erreur ici ' aux côtés de votre instruction principale, vous n'avez donc pas à décrire où se trouve le problème.204 Sélectionnez n'importe quelle ligne dans le diff, tapez vos commentaires et appuyez sur Entrée. Les commentaires s'accumulent jusqu'à ce que vous envoyiez votre prochain message, puis ils sont regroupés avec celui-ci. Claude voit « à `src/auth.ts:47`, ne capturez pas l'erreur ici » aux côtés de votre instruction principale, vous n'avez donc pas à décrire où se trouve le problème.

203 </Step>205 </Step>

204 206 

205 <Step title="Créez une demande de tirage">207 <Step title="Créez une demande de tirage">