Perfiles de Claude Desktop
Un /Applications/Claude.app real, una carpeta de perfil por cuenta mediante --user-data-dir, un lanzador protegido en el Dock por cuenta. La aplicación existente, su inicio de sesión y el perfil predeterminado nunca se modifican. Para deshacer, basta con eliminar los lanzadores y las carpetas adicionales.
Derivado de la guía de Chad Timblin Ejecutar una aplicación de escritorio de Claude separada para cada cuenta de Claude. Solo macOS. Windows no está verificado; el apéndice de esa guía tiene las notas conocidas.
Reglas básicas
- Nunca modifiques, muevas, renombres, dupliques o vuelvas a firmar
/Applications/Claude.app. Tampoco como solución alternativa. Si el paso 2 falla, detente e informa; no ofrezcas un clon. - Nunca escribas en el perfil predeterminado
~/Library/Application Support/Claude. - Nunca lances un perfil que ya se esté ejecutando. La aplicación no tiene un bloqueo de instancia única en macOS: dos lanzamientos de una misma carpeta generan dos procesos vivos que comparten la misma carpeta (verificado el 2026-11-04 en v4.16336.0, y el 2026-07-11 en v1.20186.1). La ruta de enfoque de un lanzador nunca debe recurrir a relanzar.
- Los inicios de sesión son responsabilidad del usuario, con exactamente una instancia ejecutándose. Los inicios de sesión con Google y SSO hacen un viaje de ida y vuelta a través del navegador y regresan mediante un enlace
claude://, que macOS entrega a la instancia que ya se está ejecutando. Con dos abiertas, la que tiene la sesión iniciada lo recibe y registraGoogle sign-in code does not answer a sign-in this app started; ignoring, y la otra permanece en la pantalla de inicio de sesión. Nunca manejes contraseñas. - Ten en cuenta tu entorno de ejecución. Si esta sesión se ejecuta dentro de la aplicación de escritorio de Claude, al cerrarla se elimina la sesión: entrega los pasos para cerrar al usuario como texto. Si
~/Libraryno es legible, dile al usuario que ejecute esto desde una terminal. - Elimina solo los artefactos de prueba que hayas creado en esta sesión. La prueba de humo del script se niega a tocar una carpeta que existía antes de ejecutarse.
Alcance
Todo el trabajo son unos diez comandos más un README. Los datos sobre la versión instalada provienen de la prueba desechable del paso 2, nunca de leer app.asar, entitlements, fusibles o componentes internos de Electron. Iconos de lanzador personalizados solo si el usuario lo pide.
Pasos
S es scripts/claude-profiles.sh en el directorio de esta habilidad; bash $S imprime el uso. Las fuentes de AppleScript van a CLAUDE_LAUNCHER_SOURCES (por defecto ~/Documents/claude-multi-account/launcher-sources); apúntalo a la carpeta del README del paso 5 si el usuario elige otra. Si /Applications no es editable, establece CLAUDE_LAUNCHER_DIR=$HOME/Applications. verify-mechanism escribe y elimina /tmp/claude-profile-test-<pid>.
- Entradas. La cuenta principal es la que tiene la sesión iniciada actualmente. Esta conserva el perfil predeterminado y obtiene
Claude (<Etiqueta>).app. Cada otra cuenta obtiene la carpetaClaude-<Etiqueta>y su propioClaude (<Etiqueta>).app. Pide las etiquetas y los correos electrónicos si no se proporcionaron. Para saber qué cuenta tiene la sesión iniciada, comparalastKnownAccountUuiden elconfig.jsondel perfil predeterminado conoauthAccounten~/.claude.json; si difieren, pregunta al usuario qué correo electrónico muestra la aplicación. Ningún nombre de carpeta de perfil puede ser prefijo de otro;buildrechaza un conflicto con carpetas existentes y con carpetas nombradas por otras fuentes de lanzadores. Las carpetas en Application Support que comiencen conClaudepero no contengan un archivoCookies(comoClaude-3p) no son perfiles; déjalas en paz. - Pre-vuelo y mecanismo.
bash $S preflight. Advierte al usuario de que aparecerá una ventana, luegobash $S verify-mechanism. FALLO significa detenerse e informar al usuario. - Construcción y prueba de humo. Principal:
bash $S build <Etiqueta> default. Cada otra cuenta:bash $S build <Etiqueta> Claude-<Etiqueta>, luegobash $S smoke <Etiqueta> Claude-<Etiqueta>. Nunca hagas la prueba de humo al lanzador principal: su ruta de enfoque activa el mensaje de Automatización en un momento que el usuario no espera. Si existen lanzadores o un README de una ejecución anterior, haz una copia de seguridad de la carpeta README, reconstruye en el lugar (buildsobrescribe) y nunca elimines un lanzador que no hayas creado en esta sesión. - Comprobación de migración. Las cosas del lado de claude.ai (conversaciones, proyectos, conectores) siguen al inicio de sesión. Las cosas del lado del escritorio no. Los servidores MCP viven en
<perfil>/claude_desktop_config.json: copia las entradas de forma selectiva, ya que una copia completa duplica cada proceso de servidor local. Las tareas programadas viven en<perfil>/local-agent-mode-sessions/<uuid>/<uuid>/scheduled-tasks.jsony<perfil>/claude-code-sessions/..., se ejecutan solo mientras su cuenta tiene la sesión iniciada dentro de una instancia en ejecución y migran con la instancia de destino cerrada: copia los campos exactamente, eliminanotifySessionId, conservalastRunAt, estableceenabled: falseen la copia antigua y consérvala. El bloquepreferencesde ese mismo archivo (configuración de Cowork, puerta de permisos de omisión, orígenes permitidos, concesiones de carpetas, emparejamiento con la extensión de Chrome) permanece con el perfil predeterminado; enumera en el README lo que el usuario puede querer volver a configurar y señala que solo una instancia debe emparejarse con la extensión de Chrome.~/.claudees compartido por todas las instancias, por lo que el CLAUDE.md global se aplica a todas ellas. - README. Rellena
references/readme-template.mden una carpeta que nombre el usuario (por defecto~/Documents/claude-multi-account). - Entrega con el texto siguiente, luego detente. Antes de cada inicio de sesión que el usuario informe, ejecuta
bash $S psy confirma que no imprime nada; si lo hace, cierra las instancias tú mismo (killsobre sus pids, SIGTERM es un cierre limpio para esta aplicación) y solo entonces dile al usuario que haga clic en el lanzador. Todas las ventanas en ejecución tienen el mismo aspecto, por lo que "cerrar la que tiene la sesión iniciada" es el paso que los usuarios suelen hacer mal. - Cuando el usuario informe de vuelta:
bash $S psdebe mostrar cada instancia en un perfil distinto con un UUIDaccount=distinto.
Texto de entrega
Con solo una instancia abierta a la vez:
- Arrastra los lanzadores desde Aplicaciones al Dock y elimina el mosaico simple de Claude: una vez que se ejecuten varias instancias, ese mosaico se iluminará para todas ellas y enfocará la que macOS elija.
- Cierra todas las ventanas de Claude: presiona Cmd+Q en cada una hasta que no quede ninguna. Todas las ventanas son idénticas, así que no intentes conservar una. Un inicio de sesión solo se completa cuando se está ejecutando exactamente una instancia.
- Haz clic en
Claude (<Etiqueta2>), inicia sesión con esa cuenta, luego ciérrala de la misma manera. Repite para cada cuenta adicional, siempre sin nada más ejecutándose.- Haz clic en
Claude (<Etiqueta1>). La cuenta principal todavía tiene la sesión iniciada.- A partir de ahora, abre cualquier combinación. Para cerrar solo una instancia, haz clic primero en su ventana y luego presiona Cmd+Q.
La primera vez que un lanzador enfoca una instancia en ejecución, macOS pregunta si se le permite controlar Eventos del Sistema. Haz clic en Permitir; denegar solo desactiva el enfoque automático. Los mosaicos en ejecución comparten un solo icono y pueden fusionarse después de reiniciar el Dock. Ambos casos son inofensivos.
Problemas conocidos
| Síntoma | Qué hacer |
|---|---|
| Dos instancias muestran el mismo icono en el Dock, o se fusionan en un solo mosaico | Cosmético. Los lanzadores encuentran las instancias por proceso, no por mosaico. |
| El atajo de teclado de Entrada Rápida se activa en una sola instancia | Ambas lo registran. Cámbialo o desactívalo en la configuración de una instancia. |
| "Reiniciar para actualizar" en una instancia | Cierra todas las instancias, luego vuelve a lanzarlas a través de los lanzadores. Un paquete de aplicación, una ruta de actualización. |
| Cowork utilizado en un segundo perfil | Descarga su propio paquete de máquina virtual, unos 10 GB por perfil. |
kill $pids falla con "illegal pid: 1\n2" | zsh no divide palabras. Canaliza a través de xargs kill. El script ya lo hace. |
| Carpeta de prueba eliminada mientras su instancia aún se ejecutaba | Primero mata, confirma que desapareció, luego elimina. El script ya lo hace. |
| El inicio de sesión con Google o SSO abre el navegador, termina en "Finalizar inicio de sesión en la aplicación Claude" y "Abrir Claude" no hace nada; la nueva instancia permanece en la pantalla de inicio de sesión | Otra instancia se estaba ejecutando y tomó la devolución de llamada. Cierra todas las instancias (verifica con ps), abre solo ese lanzador, inicia sesión de nuevo. Todas las instancias comparten ~/Library/Logs/Claude/main.log; búscalo con [Auth] y sign-in code para ver cuál lo recibió. Pids sin cambios entre intentos significan que el usuario nunca cerró. |
| Apareció el mensaje de Automatización durante la configuración | Alguien abrió un lanzador cuya instancia ya se estaba ejecutando. Haz clic en Permitir; no hay nada roto. |
Banderas rojas
- "La aplicación tiene un bloqueo de instancia única, por lo que relanzar al fallar el enfoque es seguro." No lo tiene. El paso 2 es la única fuente de verdad sobre esta versión.
- "El inicio de sesión está dentro de la aplicación, por lo que ambas instancias pueden permanecer abiertas." Una instancia durante el inicio de sesión, siempre.
- "Plan B: clonar y volver a firmar la aplicación." Prohibido. Detente e informa en su lugar.
- "Déjame inspeccionar app.asar / entitlements / fusibles primero.\