Tout client MCP qui compte en 2026 demande avant qu’un assistant exécute un outil qui modifie quelque chose. Cette partie de la réponse est banale et rassurante. La partie utile, c’est ce qui se passe après la première demande, car personne ne clique longtemps quarante fois par jour sur « Autoriser » : chaque client propose un moyen de ne plus être sollicité, et les clients diffèrent nettement par la finesse de ce moyen.
En bref : Claude Code, Zed, Cursor et Devin Desktop permettent de préapprouver des outils MCP individuels par leur nom. Codex, le moteur de l’application de bureau ChatGPT, peut à la place décider d’après les étiquettes du serveur lui-même — demander pour tout ce qui n’est pas marqué en lecture seule. VS Code fait les deux au niveau de la boîte de dialogue et ajoute des interrupteurs valables pour tout l’espace de travail. Aucune de ces conceptions n’est fausse, mais elles échouent de manières différentes, et l’échec qui doit vous préoccuper dépend de qui a écrit le serveur.
Ce comparatif complète notre tour d’horizon des clients MCP capables de lancer un serveur local. Celui-là répond à « est-ce que ça démarre » ; celui-ci répond à « que se passe-t-il quand l’assistant décide de modifier quelque chose ». Tout ce qui suit a été vérifié dans la documentation de chaque éditeur le 29 septembre 2026.
| Client | Par défaut pour les outils MCP | Autorisation permanente la plus fine | Décide d’après les annotations ? |
|---|---|---|---|
| Claude Code | Demande (mode Manual) | Par outil : mcp__server__tool en allow, ask ou deny |
Non documenté |
| Connecteurs Claude Desktop | Demande | Par outil ou catégorie : Always allow, Needs approval, Blocked | Classe les outils en lecture seule et écriture/suppression |
| Codex CLI, IDE, application de bureau ChatGPT | Selon le mode | Par serveur, surchargé par outil | Oui : mode writes, indices destructifs |
| ChatGPT sur le web (mode développeur) | Demande pour les écritures | Par outil, pour une conversation | Oui : readOnlyHint |
| Cursor | Demande | Liste d’autorisation server:tool |
Non documenté |
| VS Code | Demande (Manual permissions) | Par outil ou serveur ; session, espace de travail ou toujours | Non documenté |
| Zed | Demande (confirm) |
Règle mcp:server:tool |
Non documenté |
| Devin Desktop | Demande avant tout outil MCP | Par outil ou serveur entier ; session ou permanent | Non documenté |
Deux colonnes portent l’essentiel du sens. « Autorisation permanente la plus
fine » vous dit si vous pouvez faire confiance à search sans faire confiance à
share. « Décide d’après les annotations » vous dit si le client fait ce tri à
votre place — à partir d’étiquettes que le serveur a écrites sur lui-même.

Codex a la conception la plus explicite, et comme l’application de bureau
ChatGPT, Codex CLI et l’extension IDE partagent un même fichier de
configuration, elle couvre les trois. Chaque serveur MCP reçoit un
default_tools_approval_mode, et chaque outil peut le surcharger avec
tools.<tool>.approval_mode. Les valeurs documentées sont auto, prompt,
writes et approve.
La plus intéressante est writes. Selon OpenAI, elle « demande pour les outils
qui ne sont pas marqués en lecture seule ». La recherche s’exécute sans bruit,
tout le reste s’arrête et demande, et un outil sans aucune annotation compte
comme une écriture — le défaut prudent quand un serveur ne dit rien. En plus des
modes, la documentation des approbations de Codex précise que les appels
d’outils MCP destructifs exigent toujours une approbation lorsque l’outil
annonce une annotation destructive, sauf s’il annonce aussi une annotation de
lecture.
Un changement à connaître si votre configuration est ancienne : Codex ne prend
plus en charge approval_policy = "untrusted", et ce réglage retiré peut
empêcher le client de démarrer. La confiance envers un projet se règle désormais
avec le trust_level du projet.
ChatGPT sur le web suit le même principe. En mode développeur, disponible sur
les comptes Pro, Plus, Business, Enterprise et Education, « les actions
d’écriture exigent par défaut une confirmation » ; ChatGPT respecte
readOnlyHint et traite tout outil qui en est dépourvu comme une écriture. Un
choix peut être mémorisé par outil pour le reste d’une conversation, et pas
plus longtemps.
Claude Code ne lit pas les annotations pour décider. Il utilise des règles
d’autorisation réparties en trois listes — allow, ask et deny — évaluées dans
un ordre fixe : deny, puis ask, puis allow. Les outils MCP se nomment
mcp__<server>__<tool>, donc mcp__notes__search autorise un outil,
mcp__notes__get_* une famille, et mcp__notes ou mcp__notes__* couvre le
serveur entier. Le mode par défaut s’appelle désormais Manual ; les modes plus
permissifs comprennent acceptEdits, auto, où un classifieur examine les
actions à votre place, et bypassPermissions.
Deux détails penchent du côté de la sécurité. Les serveurs déclarés dans le
.mcp.json versionné d’un projet ont besoin de votre approbation avant même de
se connecter. Et l’auteur d’un serveur peut marquer un outil avec
_meta["anthropic/requiresUserInteraction"], après quoi Claude Code affiche sa
demande à chaque appel — même en acceptEdits, auto et bypassPermissions.
Les réglages des connecteurs de Claude Desktop, sous Customize → Connectors, classent les outils d’un serveur en catégories, comme lecture seule et écriture/suppression, et chaque catégorie ou outil peut être réglé sur Always allow, Needs approval ou Blocked.
Cursor le dit clairement : « Cursor demande une approbation avant
d’utiliser des outils MCP par défaut. » Le MCP suit les mêmes Run Modes que les
commandes du terminal. En Auto-review, les appels de la liste d’autorisation
s’exécutent immédiatement et tout le reste passe par un modèle classifieur ;
Run Everything exécute chaque appel d’outil sans demander. La liste
d’autorisation accepte des entrées server:tool avec jokers. Un piège : laisser
vide la liste d’outils autorisés d’un serveur autorise tous les outils de ce
serveur.
VS Code appelle son niveau par défaut Manual permissions : tout ce qui n’est pas approuvé automatiquement exige une confirmation. La boîte de dialogue permet d’approuver une seule utilisation ou d’accorder l’approbation pour la session, l’espace de travail ou toutes les invocations futures, et des approbations par outil peuvent être définies pour chaque serveur MCP. Allow all supprime entièrement les demandes, et Assisted permissions, où un modèle juge chaque appel, est marqué comme expérimental. Une exception mérite l’attention : les serveurs MCP fournis dans un plugin d’agent « sont implicitement approuvés lorsque vous installez le plugin » et sautent la demande de confiance distincte au démarrage. Installer le plugin, c’est prendre la décision de confiance.
Zed a le système de règles le plus lisible.
agent.tool_permissions.default vaut confirm tant que vous ne le changez pas,
avec allow et deny comme alternatives. Les règles nomment les outils MCP
sous la forme mcp:<server>:<tool_name> et peuvent être réglées pour toujours
autoriser, toujours confirmer ou toujours refuser, le refus l’emportant. La
demande elle-même propose « Allow once », « Deny once » et « Always for »
l’outil ; pour les outils MCP, seule l’option au niveau de l’outil existe.
Devin Desktop, l’ex-Windsurf, a changé de modèle en même temps que de nom. Son agent, Devin Local, « remplace les niveaux d’exécution automatique par un système d’autorisations plus fin », et par défaut il demande avant d’appeler tout outil MCP. Depuis la demande, vous pouvez autoriser un outil ou tous les outils de ce serveur, pour la session ou de façon permanente, et les règles Deny priment sur tout. Les administrateurs Enterprise peuvent préapprouver des serveurs ou des outils précis pour toute l’organisation.
La spécification MCP donne aux serveurs un vocabulaire pour décrire leurs
outils : readOnlyHint, destructiveHint, idempotentHint, openWorldHint.
Elle dit aussi aux clients jusqu’où les croire : les clients « DOIVENT
considérer les annotations d’outils comme non fiables, sauf si elles proviennent
de serveurs de confiance ». Et elle demande un humain dans la boucle, capable
de refuser n’importe quel appel d’outil.
Cela remet les deux conceptions ci-dessus en perspective. Un client qui décide
d’après les annotations, comme le mode writes de Codex, est pratique avec un
serveur de confiance : vous configurez une ligne, et chaque nouvel outil
d’écriture ajouté par le serveur déclenche automatiquement une demande. Avec un
serveur dont vous vous méfiez, il n’est ni plus ni moins sûr que l’honnêteté du
serveur. Un outil qui modifie des données et se dit en lecture seule s’exécute
sans demande.
Un client qui vous fait nommer les outils, comme Claude Code ou Zed, échoue dans l’autre sens. Il se moque de ce que prétend le serveur, mais un nouvel outil d’écriture ajouté par une mise à jour n’est couvert que si votre règle était assez large pour l’attraper — ou assez étroite pour le manquer et retomber sur une demande. Les règles par nom sont les plus sûres lorsqu’elles disent « autoriser ces lectures », et non « autoriser ce serveur ».

Quel que soit le client, les quatre mêmes habitudes couvrent l’essentiel du risque :
Signaux d’alerte : une entrée de liste d’autorisation Cursor pour un serveur dont la liste d’outils est vide, un plugin VS Code que personne dans l’équipe n’a examiné, et « Always allow » cliqué sur un outil dont vous n’avez pas lu le nom.

Le serveur MCP de Speak-Y est conçu pour les deux types de client. Les
outils de lecture — rechercher des enregistrements, lire les transcriptions, les
résumés et les actions à mener, lister les tags et les canaux — portent
readOnlyHint et lisent la bibliothèque directement sur votre machine. Les
outils qui modifient quelque chose — tags, titres, noms des intervenants,
nouvelle transcription, partage dans un canal d’équipe — sont déclarés comme
modifiant des données et passent par l’application Speak-Y en cours
d’exécution, où chaque appel est journalisé et où ils peuvent être désactivés.
Deux d’entre eux sont marqués destructiveHint à dessein : retranscribe, car
il remplace le texte actuel d’un enregistrement, corrections manuelles
comprises, et share_to_channel, car des collègues peuvent lire un
enregistrement avant que vous ne le retiriez. Dans le mode writes de Codex,
ces demandes apparaissent sans aucune configuration ; dans Claude Code ou Zed,
autorisez les outils de lecture par leur nom et laissez le reste en ask.
Si vous préférez qu’un client ne puisse que lire, démarrez le serveur avec
--read-only dans la configuration de ce client : les outils qui modifient ne
lui sont pas publiés du tout, il n’y a donc rien à approuver par accident. La
mise en place se fait en un clic depuis Paramètres → Intégrations, et le
serveur MCP est gratuit sur toutes les formules, y compris Free.

La demande d’approbation n’est qu’un des contrôles qui rendent un assistant capable d’écrire sûr à utiliser. Les autres — quelles modifications sont réversibles et ce que conserve le journal — sont traités dans ce qui rend l’accès en écriture MCP sûr, et la documentation MCP détaille la configuration client par client.
Tous les grands clients demandent par défaut. Claude Code, Cursor, VS Code, Zed et Devin Desktop affichent une demande avant l’exécution d’un outil MCP tant que vous ne l’avez pas préapprouvé, et le mode développeur de ChatGPT exige une confirmation pour tout outil non marqué en lecture seule. Ce qui change, c’est la finesse de la préapprobation ensuite : par outil, par serveur, pour la session ou définitivement. Vérifié le 29 septembre 2026.
Codex et ChatGPT le font explicitement. Le mode d’approbation writes de Codex demande pour les outils qui ne sont pas marqués en lecture seule et demande toujours avant un outil qui se déclare destructif ; le mode développeur de ChatGPT traite tout outil sans readOnlyHint comme une action d’écriture. Claude Code, Cursor, VS Code et Zed ne documentent pas les annotations comme critère d’approbation : c’est vous qui écrivez les règles, par nom d’outil.
Oui, dans tous les clients de ce comparatif, mais le mécanisme diffère. Dans Claude Code, Zed, Cursor et Devin Desktop, vous autorisez les outils de lecture par leur nom, par exemple mcp__server__search dans Claude Code ou mcp:server:search dans Zed. Dans Codex, le mode writes le fait en une ligne, en comptant sur le serveur pour marquer honnêtement ses outils de lecture.
Non. La spécification MCP indique que les clients doivent considérer les annotations d’outils comme non fiables, sauf si elles viennent de serveurs de confiance. Un serveur qui marque un outil d’écriture comme étant en lecture seule neutralise toute politique client fondée sur cet indice. Voyez les annotations comme une commodité pour les serveurs auxquels vous faites déjà confiance, et nommez explicitement les outils dans vos règles pour les autres.
Préapprouver uniquement les outils de lecture, garder une demande sur tout ce qui modifie des données, et donner aux clients en qui vous avez moins confiance une instance en lecture seule. Avec Speak-Y, démarrer le serveur avec --read-only dans la configuration d’un client retire complètement à ce client les outils qui modifient, tandis qu’un autre client garde l’accès complet avec ses propres demandes.