O que Perfis do Claude Desktop faz?
Um único /Applications/Claude.app real, uma pasta de perfil por conta usando --user-data-dir, um lançador no Dock protegido por conta. O aplicativo existente, seu login e o perfil padrão nunca são tocados. Para desfazer, basta excluir os lançadores e as pastas extras.
Derivado do guia de Chad Timblin Executar um Aplicativo Claude Desktop Separado para Cada Conta Claude. Apenas macOS. Windows não foi verificado; o apêndice daquele guia contém as anotações conhecidas.
Regras básicas
- Nunca modifique, mova, renomeie, duplique ou reassine
/Applications/Claude.app. Nem como plano de contingência. Se a etapa 2 falhar, pare e reporte; não ofereça um clone. - Nunca escreva no perfil padrão
~/Library/Application Support/Claude. - Nunca inicie um perfil que já está em execução. O aplicativo não possui trava de instância única no macOS: duas execuções de uma mesma pasta geram dois processos ativos compartilhando a mesma pasta (verificado em 2026-11-04 na v4.16336.0 e em 2026-07-11 na v1.20186.1). O caminho de foco de um lançador nunca deve recorrer a reiniciar.
- Os logins são responsabilidade do usuário, com exatamente uma instância em execução. Logins do Google e SSO fazem ida e volta pelo navegador e retornam por um link
claude://, que o macOS entrega à instância já em execução. Com duas abertas, a que está logada recebe e registraGoogle sign-in code does not answer a sign-in this app started; ignoring, e a outra permanece na tela de login. Nunca lide com senhas. - Cuidado com seu ambiente de execução. Se esta sessão estiver rodando dentro do aplicativo Claude Desktop, fechá-lo encerra a sessão: repasse as etapas de encerramento ao usuário como texto. Se
~/Librarynão estiver legível, peça ao usuário para executar isto de um terminal. - Exclua apenas artefatos de teste que você criou nesta sessão. O teste automatizado do script se recusa a tocar em uma pasta que existia antes de sua execução.
Escopo
Todo o trabalho consiste em cerca de dez comandos mais um README. Informações sobre a versão instalada vêm do teste descartável na etapa 2, nunca da leitura de app.asar, entitlements, fuses ou detalhes internos do Electron. Ícones personalizados nos lançadores apenas quando o usuário pedir.
Etapas
S é scripts/claude-profiles.sh no diretório desta skill; bash $S exibe a ajuda. As fontes AppleScript vão para CLAUDE_LAUNCHER_SOURCES (padrão ~/Documents/claude-multi-account/launcher-sources); aponte para a pasta do README da etapa 5 se o usuário escolher outro local. Se /Applications não for gravável, defina CLAUDE_LAUNCHER_DIR=$HOME/Applications. verify-mechanism cria e remove /tmp/claude-profile-test-<pid>.
- Entradas. A conta principal é a que está logada no momento. Ela mantém o perfil padrão e recebe
Claude (<Rótulo>).app. Cada outra conta recebe a pastaClaude-<Rótulo>e seu próprioClaude (<Rótulo>).app. Pergunte pelos rótulos e e-mails se não foram fornecidos. Para descobrir qual conta está logada, comparelastKnownAccountUuidnoconfig.jsondo perfil padrão comoauthAccountem~/.claude.json; se forem diferentes, pergunte ao usuário qual e-mail o aplicativo exibe. Nenhum nome de pasta de perfil pode ser prefixo de outro;buildrecusa conflitos com pastas existentes e com pastas nomeadas por outras fontes de lançadores. Pastas em Application Support que começam comClaudemas não contêm arquivoCookies(comoClaude-3p) não são perfis; deixe-as em paz. - Pré-voo e mecanismo.
bash $S preflight. Avise o usuário que uma janela aparecerá, entãobash $S verify-mechanism. FALHA significa pare e informe ao usuário. - Construir e testar. Principal:
bash $S build <Rótulo> default. Cada outra conta:bash $S build <Rótulo> Claude-<Rótulo>, entãobash $S smoke <Rótulo> Claude-<Rótulo>. Nunca teste o lançador principal: seu caminho de foco aciona o prompt de Automação em um momento inesperado para o usuário. Se lançadores ou um README de uma execução anterior existirem, faça backup da pasta do README, reconstrua no local (buildsobrescreve) e nunca exclua um lançador que você não criou nesta sessão. - Verificação de migração. Itens do lado do claude.ai (conversas, projetos, conectores) acompanham o login. Itens do lado do Desktop não. Servidores MCP ficam em
<perfil>/claude_desktop_config.json: copie entradas seletivamente, pois uma cópia completa duplica cada processo de servidor local. Tarefas agendadas ficam em<perfil>/local-agent-mode-sessions/<uuid>/<uuid>/scheduled-tasks.jsone<perfil>/claude-code-sessions/..., executam apenas enquanto sua conta estiver logada em uma instância em execução e são migradas com a instância de destino encerrada: copie os campos exatamente, removanotifySessionId, mantenhalastRunAt, definaenabled: falsena cópia antiga e a mantenha. O blocopreferencesdo mesmo arquivo (configurações de Cowork, porta de permissão, origens permitidas, concessões de pastas, emparelhamento de extensão Chrome) permanece no perfil padrão; liste no README o que o usuário pode querer configurar novamente e observe que apenas uma instância deve emparelhar com a extensão Chrome.~/.claudeé compartilhado por todas as instâncias, então o CLAUDE.md global se aplica a todas elas. - README. Preencha
references/readme-template.mdem uma pasta que o usuário nomear (padrão~/Documents/claude-multi-account). - Repasse com o texto abaixo, então pare. Antes de cada login que o usuário relatar, execute
bash $S pse confirme que não imprime nada; se imprimir, encerre as instâncias você mesmo (killnos pids delas, SIGTERM é um encerramento limpo para este aplicativo) e só então diga ao usuário para clicar no lançador. Todas as janelas em execução parecem iguais, então "encerre a que está logada" é a etapa que os usuários erram. - Quando o usuário relatar de volta:
bash $S psdeve mostrar cada instância em um perfil distinto com um UUIDaccount=distinto.
Texto de repasse
Com apenas uma instância aberta por vez:
- Arraste os lançadores de Applications para o Dock e remova o bloco simples do Claude: quando várias instâncias estiverem em execução, aquele bloco acende para todas e foca na que o macOS escolher.
- Feche todas as janelas do Claude: pressione Cmd+Q em cada uma até que nenhuma reste. Todas as janelas são idênticas, então não tente manter uma. Um login só é concluído quando exatamente uma instância está em execução.
- Clique em
Claude (<Rótulo2>), faça login com essa conta, depois feche da mesma forma. Repita para cada conta adicional, sempre sem mais nada em execução.- Clique em
Claude (<Rótulo1>). A conta principal ainda está logada.- De agora em diante, abra qualquer combinação. Para encerrar apenas uma instância, clique primeiro em sua janela, depois Cmd+Q.
Na primeira vez que um lançador focar uma instância em execução, o macOS pergunta se deve permitir que ele controle Eventos do Sistema. Clique em Permitir; negar apenas desabilita o autofoco. Blocos em execução compartilham um ícone e podem se fundir após uma reinicialização do Dock. Ambos são inofensivos.
Armadilhas
| Sintoma | O que fazer |
|---|---|
| Duas instâncias mostram o mesmo ícone no Dock, ou se fundem em um bloco | Cosmético. Lançadores encontram instâncias por processo, não por bloco. |
| O atalho de teclado de Entrada Rápida funciona em apenas uma instância | Ambas o registram. Altere ou desabilite-o nas configurações de uma instância. |
| "Reinicie para atualizar" em uma instância | Feche todas as instâncias e reinicie através dos lançadores. Um pacote de aplicativo, um caminho de atualização. |
| Cowork usado em um segundo perfil | Ele baixa seu próprio pacote de VM, cerca de 10 GB por perfil. |
kill $pids falha com "illegal pid: 1\n2" | O zsh não faz separação por palavras. Use pipe com xargs kill. O script já faz isso. |
| Pasta de teste excluída enquanto sua instância ainda estava em execução | Encerre primeiro, confirme que terminou, depois exclua. O script já faz isso. |
| Login do Google ou SSO abre o navegador, termina em "Concluir login no aplicativo Claude" e "Abrir Claude" não faz nada; a nova instância permanece na tela de login | Outra instância estava em execução e recebeu o callback. Feche todas as instâncias (verifique com ps), abra apenas aquele lançador e faça login novamente. Todas as instâncias compartilham ~/Library/Logs/Claude/main.log; use grep para [Auth] e sign-in code para ver qual recebeu. Pids inalterados entre tentativas significam que o usuário nunca encerrou. |
| Prompt de Automação apareceu durante a configuração | Alguém abriu um lançador cuja instância já estava em execução. Clique em Permitir; nada está quebrado. |
Bandeiras vermelhas
- "O aplicativo tem uma trava de instância única, então reiniciar na falha de foco é seguro." Não tem. A etapa 2 é a única fonte de verdade sobre esta versão.
- "O login é dentro do aplicativo, então ambas as instâncias podem ficar abertas." Uma instância durante o login, sempre.
- "Plano B: clonar e reassinar o aplicativo." Proibido. Pare e reporte.
- "Deixe-me inspecionar app.asar / entitlements / fuses primeiro." Fora do escopo.
- "Vou colocar emblemas nos ícones enquanto estou nisso." Apenas sob solicitação.
- "Também vou testar o lançador principal." Seu caminho de foco gera prompt ao usuário. Apenas verificação no pipeline.
Recuperação
Redefinir uma instância não principal: encerre-a, exclua sua pasta de perfil, clique em seu lançador e faça login novamente. Desfazer tudo: exclua os lançadores e as pastas de perfil extras. O aplicativo real e o perfil padrão nunca são envolvidos. Reconstrua um lançador a partir de sua fonte com osacompile -o "/Applications/Claude (<Rótulo>).app" <fonte>.applescript.