O que Codex Multi-Profile (Windows) faz?
Utilitário não oficial para Codex Desktop no Windows quando você precisa de mais de um login do ChatGPT e ainda quer um espaço de trabalho compartilhado.
Padrão: ShareLive + AuthSwap
| Componente | Onde fica |
|---|---|
| Sessões, skills, MCP, memórias, projetos | Sempre %USERPROFILE%\.codex |
| Conta | profiles\<nome>\auth.json, trocado para ~\.codex\auth.json na inicialização |
| Ao fechar | O observador salva a auth secundária de volta e restaura o auth.json principal |
| UI do Electron | --user-data-dir=profiles\<nome> (raiz do perfil, não uma pasta electron\ aninhada) |
Não abra o Codex da Loja principal e um perfil ao mesmo tempo.
Por que AuthSwap (e não um segundo CODEX_HOME)
O app-servidor Desktop às vezes ignora CODEX_HOME e lê ~\.codex\auth.json de qualquer forma. Um segundo home então mostra a conta principal. AuthSwap coloca o token secundário no caminho que o aplicativo realmente lê.
Regras de inicialização (verificadas)
- Não execute executáveis de
WindowsApps(Acesso Negado). CloneChatGPT.exeprimeiro. - O ponto de entrada é
ChatGPT.exe.Codex.exesai com código 1. Get-AppxPackage.InstallLocationpode estar vazio — prefira um clone local existente.- Defina ambas
CODEX_ELECTRON_USER_DATA_PATHe--user-data-dirpara a raiz do perfil. - Não confie em
Start-Processherdando$env:CODEX_HOME. Escreva um.cmdcomsetestart. Set-Content -Encoding UTF8do PowerShell 5.1 escreve um BOM. Isso pode invalidarconfig.toml. Use[IO.File]::WriteAllText(..., UTF8Encoding $false).- Nunca defina um
CODEX_HOMEpersistente no nível do usuário. - Nunca copie
auth.jsonentre máquinas ou para dentro de git.
Caminhos
| Item | Caminho |
|---|---|
| Raiz de instalação | %LOCALAPPDATA%\CodexParallelDesktop |
| Módulo compartilhado | CodexMultiProfile.psm1 |
| Inicializador de perfil | Launch-CodexProfile.ps1 |
| Restaurar principal | Launch-CodexMain.ps1 |
| Gerenciador | CodexProfile.ps1 (new, list, stop, shortcut, launch) |
| Perfis | ...\profiles\<nome>\ |
| Clone | ...\versions\<ver>\app\ChatGPT.exe |
| Home compartilhado | %USERPROFILE%\.codex |
Comandos
$root = "$env:LOCALAPPDATA\CodexParallelDesktop"
# Inicialização recomendada (AuthSwap)
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexProfile.ps1" -Name codex1
# Restaurar Codex principal da Loja
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexMain.ps1"
# Gerenciador
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action new -Name codex2
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action list
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action status
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action verify
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\CodexProfile.ps1" -Action stop -Name codex1
Fluxo de trabalho do agente
- "Trocar conta / manter meus dados" → AuthSwap via
Launch-CodexProfile.ps1. - "Criar outro perfil" →
-Action new, depois inicie comLaunch-CodexProfile.ps1. - Conta errada na interface → compare os e-mails nos dois arquivos
auth.json; corrija a inicialização (wrapper cmd); não diga ao usuário para fazer login novamente se a auth do perfil ainda for válida. - Acesso Negado / caminho vazio / saída 1 → clone
ChatGPT.exe, nuncaWindowsApps, nuncaInstallLocationvazio. - Após editar scripts, copie
CodexMultiProfile.psm1e os inicializadores para%LOCALAPPDATA%\CodexParallelDesktope parascripts\dentro desta skill. Inicializadores importam o módulo de$PSScriptRoot. - "Está instalado / qual conta está ativa?" →
-Action status(e-mails são mascarados) depois-Action verify.
Auth de perfil corrompida
Se o usuário abrir o Codex Main enquanto um perfil ainda estiver em execução, a restauração pode escrever o token principal em profiles\<nome>\auth.json.
Proteções já nos scripts:
- O observador /
Launch-CodexMainsó salva a auth do perfil quando o e-mail ativo difere deauth.json.__main__ - Mantenha
auth.json.secondary.bak - Se a auth do perfil estiver ausente ou igual à principal → inicialização bootstrap (limpe a auth ativa, force o login secundário)
Não fazer
- Copiar ou commitar
auth.json - Abrir o Main e o perfil ShareLive juntos
- Iniciar
Codex.exeou um caminhoWindowsApps Start-Processsem um cmd explícito/CODEX_HOME- Escrever
config.tomlcomSet-Content -Encoding UTF8no Windows PowerShell 5.1
Detalhes: docs/architecture.md, docs/troubleshooting.md.