Donner à un agent l'accès à tes identifiants, c'est toujours un pari. Il en a besoin pour appeler une API, pousser sur un dépôt ou interroger un service cloud. Mais s'il lit la clé, il peut aussi la divulguer, par erreur ou parce qu'une injection de prompt l'y pousse.
Jusqu'ici, Claude Code proposait deux options : laisser la sandbox lire les fichiers d'identifiants, ou les bloquer complètement avec sandbox.credentials (depuis la 2.1.187). La version 2.1.221, publiée le 4 août, ajoute une troisième voie : le mode mask.
Le principe, tel que décrit dans le changelog :
- les commandes sandboxées lisent une copie sentinelle du fichier d'identifiants : une valeur de remplacement, pas la vraie ;
- le masquage peut porter sur le fichier entier, ou seulement sur les portions capturées par une expression régulière d'extraction ;
- quand une requête réseau sort de la sandbox, le proxy de la sandbox substitue la vraie valeur à la volée.
Résultat : ta commande peut appeler une API autorisée avec la bonne clé, mais le processus qui tourne dans la sandbox ne voit jamais le vrai secret. Si une commande tente de l'afficher, de l'écrire dans un fichier ou de l'envoyer ailleurs, elle ne manipule que la sentinelle.
C'est une idée qu'on retrouve dans l'article d'Anthropic de mai sur le confinement des agents : garder les identifiants hors de portée de l'agent est l'une des protections les plus efficaces. Le mode mask pousse cette logique plus loin, sans empêcher l'usage légitime.
Le mode mask est disponible sur Linux et WSL. Sur macOS, le masquage des fichiers retombe sur un blocage : le fichier est simplement refusé, comme avec le comportement de protection classique.
L'option se déclare avec mode: "mask" sur les fichiers d'identifiants de la sandbox. Consulte la documentation de la sandbox pour la syntaxe exacte de ta configuration.
Beaucoup d'attaques contre les agents visent précisément les identifiants. Un fichier piégé qui demande de lire ~/.aws/credentials et de l'envoyer quelque part, un README qui glisse une instruction cachée… Avec le mode mask, même si l'agent se fait piéger, ce qu'il lit n'a aucune valeur hors du proxy de la sandbox.
Et comme la vraie valeur n'est substituée qu'à la sortie, par le proxy de la sandbox, les contrôles réseau de la sandbox restent un garde-fou complémentaire.
Justement, la 2.1.219 (24 juillet) a ajouté un réglage qui complète bien le mode mask : sandbox.network.strictAllowlist. Il refuse sans demander toute connexion vers un hôte absent de la liste blanche, au lieu de t'afficher une demande de permission.
C'est utile pour les sessions sans surveillance : plutôt que d'accumuler des demandes que personne ne lira, la sandbox bloque directement ce qui n'est pas prévu.
Combinés, les deux réglages donnent une configuration robuste :
- les commandes ne peuvent parler qu'aux hôtes autorisés ;
- elles ne voient jamais les vrais secrets ;
- les secrets ne sont substitués qu'à la sortie, par le proxy.
Autre ajout de la 2.1.221, côté développement d'applications : le skill claude-api gagne une sous-commande prompt-audit. Elle sert à auditer tes prompts et tes descriptions d'outils pour repérer les formulations écrites pour d'anciens modèles.
Pourquoi c'est utile ? Chaque génération de modèle change de comportement. On l'a vu avec Opus 4.7, qui prenait les consignes beaucoup plus au pied de la lettre : des prompts pensés pour des modèles qui interprétaient librement produisaient des résultats inattendus. Les prompts vieillissent, et on les relit rarement.
La 2.1.219 avait déjà mis à jour le skill claude-api pour utiliser Claude Opus 5 par défaut, avec un chemin de migration depuis Opus 4.8. L'audit de prompts complète cette migration : changer d'identifiant de modèle ne suffit pas, il faut aussi relire ce qu'on lui demande.
Si tu maintiens une application qui appelle l'API Claude, c'est l'occasion de faire le ménage : consignes en majuscules, répétitions insistantes, contournements de défauts qui n'existent plus…
Quelques autres ajouts des versions 2.1.218 à 2.1.222 :
- 2.1.218 : en mode lecteur d'écran, les suppressions de mots et de lignes sont désormais annoncées ;
- 2.1.218 : les skills avec
context: fork tournent en arrière-plan par défaut ;
- 2.1.219 : Claude Opus 5 devient le modèle Opus par défaut, et le fast mode s'applique à Opus 5 et Opus 4.8 ;
- 2.1.219 : un nouveau hook
DirectoryAdded se déclenche quand un répertoire de travail est ajouté en cours de session ;
- 2.1.221 : correction des gros envois qui échouaient avec des erreurs TLS à travers le proxy de la sandbox ;
- 2.1.221 : dans VS Code, une vue Focus masque l'activité des outils derrière un résumé par tour.
Le mode mask protège la valeur d'un secret, pas son usage. Si une commande piégée peut appeler une API autorisée avec ta clé substituée, elle peut toujours faire des dégâts via cette API : supprimer des ressources, lire des données. D'où l'importance de clés à privilèges limités, dédiées à l'agent, plutôt que tes clés personnelles d'administrateur.
- Active la sandbox, si ce n'est pas déjà fait.
- Liste tes fichiers d'identifiants et choisis pour chacun : bloquer, ou masquer (sur Linux et WSL).
- Établis une liste blanche d'hôtes réseau, et active
strictAllowlist pour les sessions sans surveillance.
- Passe
prompt-audit sur les prompts de tes applications API.
- 2.1.221 : le mode mask fait lire une copie sentinelle des identifiants ; le proxy substitue la vraie valeur à la sortie. Linux et WSL ; blocage sur macOS.
- 2.1.219 :
sandbox.network.strictAllowlist refuse sans demander les hôtes non autorisés.
- 2.1.221 : la sous-commande
prompt-audit du skill claude-api repère les prompts écrits pour d'anciens modèles.