Was macht Claude Desktop Profile?
Eine echte /Applications/Claude.app, ein Profilordner pro Konto via --user-data-dir, ein geschützter Dock-Starter pro Konto. Die bestehende App, deren Anmeldung und das Standardprofil werden nie angetastet. Rückgängig machen durch Löschen der Starter und der zusätzlichen Ordner.
Abgeleitet von Chad Timblins Anleitung Eine separate Claude Desktop App für jedes Claude-Konto ausführen. Nur macOS. Windows ist unbestätigt; der Anhang dieser Anleitung enthält die bekannten Hinweise.
Grundregeln
- Ändere, verschiebe, benenne, dupliziere oder signiere
/Applications/Claude.appniemals neu. Auch nicht als Fallback. Wenn Schritt 2 fehlschlägt, stoppe und melde; biete keinen Klon an. - Schreibe niemals in das Standardprofil
~/Library/Application Support/Claude. - Starte niemals ein Profil, das bereits läuft. Die App hat keine Single-Instance-Sperre unter macOS: Zwei Starts eines Ordners erzeugen zwei Live-Prozesse, die sich einen Ordner teilen (bestätigt am 2026-11-04 für v4.16336.0 und am 2026-07-11 für v1.20186.1). Der Fokuspfad eines Starters darf niemals auf einen Neustart zurückfallen.
- Anmeldungen sind Aufgabe des Benutzers, mit genau einer laufenden Instanz. Google- und SSO-Anmeldungen gehen über den Browser und kommen über einen
claude://-Link zurück, den macOS an die bereits laufende Instanz übergibt. Wenn zwei geöffnet sind, erhält die angemeldete den Link und protokolliertGoogle sign-in code does not answer a sign-in this app started; ignoring, die andere bleibt auf dem Anmeldebildschirm. Behandle niemals Passwörter. - Beachte deine Laufzeitumgebung. Wenn diese Sitzung in der Claude Desktop App läuft, beendet deren Schließen die Sitzung: Gib dem Benutzer die Schrittanleitung zum Schließen als Text. Wenn
~/Librarynicht lesbar ist, sage dem Benutzer, er solle dies von einem Terminal aus ausführen. - Lösche nur Testartefakte, die du in dieser Sitzung erstellt hast. Der Smoke-Test des Skripts weigert sich, einen Ordner anzufassen, der vor seiner Ausführung existierte.
Umfang
Die gesamte Aufgabe umfasst etwa zehn Befehle plus eine README. Fakten über die installierte Version stammen aus dem Wegwerftest in Schritt 2, niemals aus dem Lesen von app.asar, Berechtigungen, Fuses oder Electron-Interna. Benutzerdefinierte Starter-Symbole nur auf Anfrage.
Schritte
S ist scripts/claude-profiles.sh im Verzeichnis dieses Skills; bash $S zeigt die Nutzung an. AppleScript-Quellen gehen nach CLAUDE_LAUNCHER_SOURCES (Standard ~/Documents/claude-multi-account/launcher-sources); verweise auf den README-Ordner aus Schritt 5, falls der Benutzer einen anderen wählt. Wenn /Applications nicht beschreibbar ist, setze CLAUDE_LAUNCHER_DIR=$HOME/Applications. verify-mechanism schreibt und löscht /tmp/claude-profile-test-<pid>.
- Eingaben. Das primäre Konto ist das aktuell angemeldete. Es behält das Standardprofil und erhält
Claude (<Label>).app. Jedes weitere Konto erhält den OrdnerClaude-<Label>und seinen eigenenClaude (<Label>).app. Frage nach Labels und E-Mails, falls diese nicht angegeben wurden. Um herauszufinden, welches Konto angemeldet ist, vergleichelastKnownAccountUuidimconfig.jsondes Standardprofils mitoauthAccountin~/.claude.json; wenn sie abweichen, frage den Benutzer, welche E-Mail die App anzeigt. Kein Profilordnername darf ein Präfix eines anderen sein;buildweigert sich bei Konflikten mit vorhandenen Ordnern und mit Ordnern, die von anderen Starter-Quellen benannt werden. Ordner unter Application Support, die mitClaudebeginnen, aber keineCookies-Datei enthalten (z. B.Claude-3p), sind keine Profile; lasse sie in Ruhe. - Vorbereitung und Mechanismus.
bash $S preflight. Warne den Benutzer, dass ein Fenster erscheint, dannbash $S verify-mechanism. FEHLER bedeutet anhalten und dem Benutzer mitteilen. - Bauen und Testen. Primär:
bash $S build <Label> default. Jedes weitere Konto:bash $S build <Label> Claude-<Label>, dannbash $S smoke <Label> Claude-<Label>. Teste niemals den primären Starter: Sein Fokuspfad löst die Automatisierungsabfrage zu einem Zeitpunkt aus, den der Benutzer nicht erwartet. Wenn Starter oder eine README aus einem früheren Durchlauf existieren, sichere den README-Ordner, baue direkt neu (buildüberschreibt), und lösche niemals einen Starter, den du nicht in dieser Sitzung erstellt hast. - Migrationsprüfung. Dinge auf claude.ai-Seite (Unterhaltungen, Projekte, Verbindungen) folgen der Anmeldung. Desktop-seitige Dinge tun das nicht. MCP-Server leben in
<profil>/claude_desktop_config.json: kopiere Einträge selektiv, da eine pauschale Kopie jeden lokalen Server-Prozess verdoppelt. Geplante Aufgaben leben in<profil>/local-agent-mode-sessions/<uuid>/<uuid>/scheduled-tasks.jsonund<profil>/claude-code-sessions/..., laufen nur, während ihr Konto in einer laufenden Instanz angemeldet ist, und migrieren bei beendeter Zielinstanz: kopiere Felder genau, entfernenotifySessionId, behaltelastRunAt, setzeenabled: falseauf der alten Kopie und belasse sie. Derpreferences-Block derselben Datei (Cowork-Einstellungen, Bypass-Berechtigungs-Gate, erlaubte Ursprünge, Ordnerberechtigungen, Chrome-Erweiterungs-Pairing) bleibt beim Standardprofil; liste in der README auf, was der Benutzer möglicherweise erneut setzen möchte, und weise darauf hin, dass nur eine Instanz mit der Chrome-Erweiterung gepaart werden sollte.~/.claudewird von jeder Instanz geteilt, daher gilt die globaleCLAUDE.mdfür alle. - README. Fülle
references/readme-template.mdin einen vom Benutzer benannten Ordner (Standard~/Documents/claude-multi-account). - Übergabe mit dem untenstehenden Text, dann anhalten. Vor jeder vom Benutzer gemeldeten Anmeldung führe
bash $S psaus und bestätige, dass nichts ausgegeben wird; falls doch, beende die Instanzen selbst (killauf ihre PIDs, SIGTERM ist ein sauberes Beenden für diese App) und sage dem Benutzer erst dann, den einen Starter zu klicken. Jedes laufende Fenster sieht gleich aus, daher ist „die angemeldete Instanz beenden“ der Schritt, den Benutzer falsch machen. - Wenn der Benutzer sich zurückmeldet:
bash $S psmuss jede Instanz mit einem eindeutigen Profil und einer eindeutigenaccount=-UUID anzeigen.
Übergabetext
Bei immer nur einer geöffneten Instanz:
- Ziehe die Starter aus Programme in das Dock und entferne die einfache Claude-Kachel: Sobald mehrere Instanzen laufen, leuchtet diese Kachel für alle auf und fokussiert diejenige, die macOS auswählt.
- Beende jedes Claude-Fenster: Drücke Cmd+Q in jedem, bis keins mehr übrig ist. Alle Fenster sehen identisch aus, versuche also nicht, eines zu behalten. Eine Anmeldung wird nur abgeschlossen, wenn genau eine Instanz läuft.
- Klicke auf
Claude (<Label2>), melde dich mit diesem Konto an und beende es auf die gleiche Weise. Wiederhole dies für jedes weitere Konto, immer ohne dass etwas anderes läuft.- Klicke auf
Claude (<Label1>). Das primäre Konto ist noch angemeldet.- Öffne von nun an beliebige Kombinationen. Um nur eine Instanz zu beenden, klicke zuerst auf ihr Fenster, dann Cmd+Q.
Beim ersten Mal, wenn ein Starter eine laufende Instanz fokussiert, fragt macOS, ob es System Events steuern darf. Klicke auf Erlauben; Verweigern deaktiviert nur den automatischen Fokus. Laufende Kacheln teilen sich ein Symbol und können nach einem Dock-Neustart zusammenwachsen. Beides ist harmlos.
Fallstricke
| Symptom | Was zu tun ist |
|---|---|
| Zwei Instanzen zeigen das gleiche Dock-Symbol oder wachsen zu einer Kachel zusammen | Kosmetisch. Starter finden Instanzen über Prozesse, nicht über Kacheln. |
| Kurzbefehl für Schnelleingabe funktioniert nur in einer Instanz | Beide registrieren ihn. Ändere oder deaktiviere ihn in den Einstellungen einer Instanz. |
| „Neustarten zum Aktualisieren“ in einer Instanz | Beende alle Instanzen, starte dann über die Starter neu. Ein App-Bundle, ein Update-Pfad. |
| Cowork in einem zweiten Profil verwendet | Es lädt sein eigenes VM-Bundle herunter, etwa 10 GB pro Profil. |
kill $pids schlägt fehl mit „ungültige pid: 1\n2“ | zsh splittet keine Wörter. Leite durch xargs kill. Das Skript macht das bereits. |
| Testordner gelöscht, während seine Instanz noch lief | Zuerst beenden, bestätigen, dass weg, dann löschen. Das Skript macht das bereits. |
| Google- oder SSO-Anmeldung öffnet den Browser, endet mit „Anmeldung in der Claude App abschließen“ und „Claude öffnen“ tut nichts; die neue Instanz bleibt auf dem Anmeldebildschirm | Eine andere Instanz lief und hat den Callback abgefangen. Beende jede Instanz (überprüfe mit ps), öffne nur diesen Starter, melde dich erneut an. Alle Instanzen teilen sich ~/Library/Logs/Claude/main.log; durchsuche es mit [Auth] und sign-in code, um zu sehen, welche den Callback bekommen hat. Unveränderte PIDs über mehrere Versuche hinweg bedeuten, dass der Benutzer nie beendet hat. |
| Automatisierungsaufforderung während der Einrichtung erschienen | Jemand hat einen Starter geöffnet, dessen Instanz bereits lief. Klicke auf Erlauben; nichts ist kaputt. |
Warnsignale
- „Die App hat eine Single-Instance-Sperre, daher ist Neustarten bei Fokusfehler sicher.“ Das tut sie nicht. Schritt 2 ist die einzige Quelle der Wahrheit für diese Version.
- „Die Anmeldung ist app-intern, daher können beide Instanzen offen bleiben.“ Eine Instanz während der Anmeldung, immer.
- „Plan B: App klonen und neu signieren.“ Verboten. Stattdessen anhalten und melden.
- „Lass mich zuerst app.asar / Berechtigungen / Fuses inspizieren.“ Nicht im Rahmen.
- „Ich könnte die Symbole gleich mit Abzeichen versehen.“ Nur auf Anfrage.
- „Ich teste auch den primären Starter.“ Sein Fokuspfad fordert den Benutzer auf. Nur Pipeline-Prüfung.
Wiederherstellung
Setze eine nicht-primäre Instanz zurück: beende sie, lösche ihren Profilordner, klicke auf ihren Starter, melde dich erneut an. Alles rückgängig machen: lösche die Starter und die zusätzlichen Profilordner. Die echte App und das Standardprofil sind niemals betroffen. Baue einen Starter aus seiner Quelle neu mit osacompile -o "/Applications/Claude (<Label>).app" <quelle>.applescript.