Que fait Profils pour l'application Claude Desktop ?
Un seul vrai /Applications/Claude.app, un dossier de profil par compte grâce à --user-data-dir, un lanceur protégé dans le Dock par compte. L'application existante, sa connexion et le profil par défaut ne sont jamais touchés. Pour annuler, il suffit de supprimer les lanceurs et les dossiers supplémentaires.
Dérivé du guide de Chad Timblin Exécuter une application Claude Desktop distincte pour chaque compte Claude. macOS uniquement. Windows n'est pas vérifié ; l'annexe de ce guide contient les notes connues.
Règles de base
- Ne jamais modifier, déplacer, renommer, dupliquer ou resigner
/Applications/Claude.app. Pas même comme solution de repli. Si l'étape 2 échoue, arrêtez-vous et signalez-le ; ne proposez pas de clone. - Ne jamais écrire dans le profil par défaut
~/Library/Application Support/Claude. - Ne jamais lancer un profil déjà en cours d'exécution. L'application n'a pas de verrou d'instance unique sur macOS : deux lancements d'un même dossier donnent deux processus actifs partageant le même dossier (vérifié le 2026-11-04 sur la v4.16336.0, et le 2026-07-11 sur la v1.20186.1). Le chemin de mise au point d'un lanceur ne doit jamais retomber sur un relancement.
- Les connexions sont la responsabilité de l'utilisateur, avec exactement une instance en cours d'exécution. Les connexions Google et SSO passent par le navigateur et reviennent via un lien
claude://, que macOS transmet à l'instance déjà en cours. Avec deux instances ouvertes, celle qui est connectée reçoit le lien et enregistreGoogle sign-in code does not answer a sign-in this app started; ignoring, et l'autre reste sur l'écran de connexion. Ne jamais gérer les mots de passe. - Tenez compte de votre environnement d'exécution. Si cette session s'exécute dans l'application Claude Desktop, la quitter tue la session : donnez les étapes de fermeture à l'utilisateur sous forme de texte. Si
~/Libraryest illisible, demandez à l'utilisateur d'exécuter ceci depuis un terminal. - Supprimez uniquement les artefacts de test que vous avez créés lors de cette session. Le test de validation du script refuse de toucher à un dossier qui existait avant son exécution.
Périmètre
L'ensemble du travail représente environ dix commandes et un README. Les faits concernant la version installée proviennent du test jetable de l'étape 2, jamais de la lecture de app.asar, des droits d'accès, des fusibles ou des éléments internes d'Electron. Icônes de lanceur personnalisées uniquement si l'utilisateur le demande.
Étapes
S est scripts/claude-profiles.sh dans le répertoire de cette compétence ; bash $S affiche l'utilisation. Les sources AppleScript vont dans CLAUDE_LAUNCHER_SOURCES (par défaut ~/Documents/claude-multi-account/launcher-sources) ; pointez-les vers le dossier README de l'étape 5 si l'utilisateur en choisit un autre. Si /Applications n'est pas inscriptible, définissez CLAUDE_LAUNCHER_DIR=$HOME/Applications. verify-mechanism écrit et supprime /tmp/claude-profile-test-<pid>.
- Entrées. Le compte principal est celui qui est actuellement connecté. Il conserve le profil par défaut et reçoit
Claude (<Label>).app. Chaque autre compte reçoit le dossierClaude-<Label>et son propreClaude (<Label>).app. Demandez les libellés et les adresses e-mail s'ils n'ont pas été fournis. Pour déterminer quel compte est connecté, comparezlastKnownAccountUuiddansconfig.jsondu profil par défaut avecoauthAccountdans~/.claude.json; s'ils diffèrent, demandez à l'utilisateur quelle adresse e-mail l'application affiche. Aucun nom de dossier de profil ne peut être un préfixe d'un autre ;buildrefuse un conflit avec les dossiers existants et avec les dossiers nommés par d'autres sources de lanceurs. Les dossiers sous Application Support qui commencent parClaudemais ne contiennent pas de fichierCookies(commeClaude-3p) ne sont pas des profils ; laissez-les tranquilles. - Pré-vérification et mécanisme.
bash $S preflight. Prévenez l'utilisateur qu'une fenêtre va apparaître, puisbash $S verify-mechanism. ÉCHEC signifie arrêtez-vous et informez l'utilisateur. - Construction et test. Principal :
bash $S build <Label> default. Chaque autre compte :bash $S build <Label> Claude-<Label>, puisbash $S smoke <Label> Claude-<Label>. Ne testez jamais le lanceur principal : son chemin de mise au point déclenche l'invite d'automatisation à un moment où l'utilisateur ne s'y attend pas. Si des lanceurs ou un README d'une exécution antérieure existent, sauvegardez le dossier README, reconstruisez sur place (buildécrase), et ne supprimez jamais un lanceur que vous n'avez pas créé lors de cette session. - Vérification de migration. Les éléments côté claude.ai (conversations, projets, connecteurs) suivent la connexion. Les éléments côté bureau ne le font pas. Les serveurs MCP se trouvent dans
<profile>/claude_desktop_config.json: copiez les entrées de manière sélective, car une copie intégrale double chaque processus de serveur local. Les tâches planifiées se trouvent dans<profile>/local-agent-mode-sessions/<uuid>/<uuid>/scheduled-tasks.jsonet<profile>/claude-code-sessions/..., ne s'exécutent que lorsque leur compte est connecté dans une instance en cours, et migrent avec l'instance cible quittée : copiez exactement les champs, supprimeznotifySessionId, conservezlastRunAt, définissezenabled: falsesur l'ancienne copie et conservez-la. Le blocpreferencesde ce même fichier (paramètres Cowork, passerelle de contournement des autorisations, origines autorisées, octrois de dossiers, appairage avec l'extension Chrome) reste avec le profil par défaut ; listez dans le README ce que l'utilisateur pourrait vouloir redéfinir, et notez qu'une seule instance doit s'appairer avec l'extension Chrome.~/.claudeest partagé par toutes les instances, donc le CLAUDE.md global s'applique à toutes. - README. Remplissez
references/readme-template.mddans un dossier nommé par l'utilisateur (par défaut~/Documents/claude-multi-account). - Passez la main avec le texte ci-dessous, puis arrêtez-vous. Avant chaque connexion signalée par l'utilisateur, exécutez
bash $S pset confirmez qu'il n'affiche rien ; si ce n'est pas le cas, quittez vous-même les instances (killsur leurs pids, SIGTERM est une fermeture propre pour cette application) et alors seulement dites à l'utilisateur de cliquer sur le lanceur. Chaque fenêtre ouverte se ressemble, donc « quitter celle qui est connectée » est l'étape que les utilisateurs comprennent mal. - Lorsque l'utilisateur revient :
bash $S psdoit montrer chaque instance sur un profil distinct avec un UUIDaccount=distinct.
Texte de passation
Avec une seule instance ouverte à la fois :
- Faites glisser les lanceurs depuis Applications dans le Dock et supprimez la vignette Claude standard : une fois plusieurs instances en cours, cette vignette s'allume pour toutes et met au point celle que macOS choisit.
- Quittez chaque fenêtre Claude : appuyez sur Cmd+Q dans chacune jusqu'à ce qu'il n'en reste plus. Toutes les fenêtres se ressemblent, n'essayez donc pas d'en garder une. Une connexion n'est finalisée que lorsqu'exactement une instance est en cours d'exécution.
- Cliquez sur
Claude (<Label2>), connectez-vous avec ce compte, puis quittez-le de la même manière. Répétez pour chaque compte supplémentaire, toujours sans rien d'autre en cours.- Cliquez sur
Claude (<Label1>). Le compte principal est toujours connecté.- Désormais, ouvrez n'importe quelle combinaison. Pour quitter une seule instance, cliquez d'abord sur sa fenêtre, puis Cmd+Q.
La première fois qu'un lanceur met au point une instance en cours, macOS demande l'autorisation de contrôler les Événements système. Cliquez sur Autoriser ; refuser désactive uniquement la mise au point automatique. Les vignettes en cours partagent une icône et peuvent fusionner après un redémarrage du Dock. Les deux sont inoffensifs.
Pièges
| Symptôme | Que faire |
|---|---|
| Deux instances affichent la même icône dans le Dock, ou fusionnent en une seule vignette | Esthétique. Les lanceurs trouvent les instances par processus, pas par vignette. |
| Le raccourci clavier Quick Entry se déclenche dans une seule instance | Les deux l'enregistrent. Modifiez-le ou désactivez-le dans les paramètres d'une instance. |
| « Redémarrer pour mettre à jour » dans une instance | Quittez toutes les instances, puis relancez via les lanceurs. Un seul bundle d'application, un seul chemin de mise à jour. |
| Cowork utilisé dans un second profil | Il télécharge son propre bundle de machine virtuelle, environ 10 Go par profil. |
kill $pids échoue avec « pid illégal : 1\n2 » | zsh ne divise pas les mots. Passez par xargs kill. Le script le fait déjà. |
| Dossier de test supprimé alors que son instance était toujours en cours | Tue d'abord, confirme la disparition, puis supprime. Le script le fait déjà. |
| Connexion Google ou SSO ouvre le navigateur, se termine sur « Terminer la connexion dans l'application Claude », et « Ouvrir Claude » ne fait rien ; la nouvelle instance reste sur l'écran de connexion | Une autre instance était en cours et a pris le callback. Quittez toutes les instances (vérifiez avec ps), ouvrez uniquement ce lanceur, reconnectez-vous. Toutes les instances partagent ~/Library/Logs/Claude/main.log ; cherchez [Auth] et sign-in code pour voir laquelle l'a reçu. Des pids inchangés entre les tentatives signifient que l'utilisateur n'a jamais quitté. |
| Invite d'automatisation apparue lors de la configuration | Quelqu'un a ouvert un lanceur dont l'instance était déjà en cours. Cliquez sur Autoriser ; rien n'est cassé. |
Drapeaux rouges
- « L'application a un verrou d'instance unique, donc relancer en cas d'échec de mise au point est sûr. » Ce n'est pas le cas. L'étape 2 est la seule source de vérité concernant cette version.
- « La connexion est intégrée à l'application, donc les deux instances peuvent rester ouvertes. » Une instance pendant la connexion, toujours.
- « Plan B : cloner et resigner l'application. » Interdit. Arrêtez-vous et signalez-le à la place.
- « Laissez-moi inspecter app.asar / les droits d'accès / les fusibles d'abord. » Hors périmètre.
- « Je vais aussi ajouter des badges aux icônes pendant que j'y suis. » Uniquement sur demande.
- « Je vais aussi tester le lanceur principal. » Son chemin de mise au point invite l'utilisateur. Vérification par pipeline uniquement.
Rétablissement
Réinitialiser une instance non principale : quittez-la, supprimez son dossier de profil, cliquez sur son lanceur, reconnectez-vous. Tout annuler : supprimez les lanceurs et les dossiers de profil supplémentaires. La vraie application et le profil par défaut ne sont jamais impliqués. Reconstruire un lanceur à partir de sa source avec osacompile -o "/Applications/Claude (<Label>).app" <source>.applescript.