Que fait Codex Multi-Profil (Windows) ?
Assistant non officiel pour Codex Desktop sur Windows lorsque vous avez besoin de plusieurs connexions ChatGPT tout en conservant un espace de travail partagé.
Par défaut : Partage en direct + AuthSwap
| Élément | Emplacement |
|---|---|
| Sessions, compétences, MCP, souvenirs, projets | Toujours %USERPROFILE%\.codex |
| Compte | profiles\<nom>\auth.json, échangé avec ~\.codex\auth.json au lancement |
| À la fermeture | Un observateur sauvegarde l'auth secondaire, puis restaure le fichier auth.json principal |
| Interface Electron | --user-data-dir=profiles\<nom> (racine du profil, pas un dossier electron\ imbriqué) |
N'ouvrez pas le Codex du Store et un profil en même temps.
Pourquoi AuthSwap (et pas un second CODEX_HOME)
Le serveur d'application de bureau ignore parfois CODEX_HOME et lit ~\.codex\auth.json de toute façon. Un second répertoire CODEX_HOME affiche alors le compte principal. AuthSwap place le jeton secondaire dans le chemin réellement lu par l'application.
Règles de lancement (vérifiées)
- N'exécutez pas d'exécutables depuis
WindowsApps(accès refusé). Clonez d'abordChatGPT.exe. - Le point d'entrée est
ChatGPT.exe.Codex.exese termine avec le code 1. Get-AppxPackage.InstallLocationpeut être vide – préférez un clone local existant.- Définissez à la fois
CODEX_ELECTRON_USER_DATA_PATHet--user-data-dirvers la racine du profil. - Ne comptez pas sur
Start-Processpour hériter de$env:CODEX_HOME. Écrivez un fichier.cmdavecsetetstart. Set-Content -Encoding UTF8de PowerShell 5.1 écrit une BOM. Cela peut invaliderconfig.toml. Utilisez[IO.File]::WriteAllText(..., UTF8Encoding $false).- Ne définissez jamais une variable
CODEX_HOMEpersistante au niveau utilisateur. - Ne copiez jamais
auth.jsonentre machines ou dans git.
Chemins
| Élément | Chemin |
|---|---|
| Répertoire d'installation | %LOCALAPPDATA%\CodexParallelDesktop |
| Module partagé | CodexMultiProfile.psm1 |
| Lanceur de profil | Launch-CodexProfile.ps1 |
| Restauration principale | Launch-CodexMain.ps1 |
| Gestionnaire | CodexProfile.ps1 (new, list, stop, shortcut, launch) |
| Profils | ...\profiles\<nom>\ |
| Clone | ...\versions\<ver>\app\ChatGPT.exe |
| Répertoire partagé | %USERPROFILE%\.codex |
Commandes
$root = "$env:LOCALAPPDATA\CodexParallelDesktop"
# Lancement recommandé (AuthSwap)
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexProfile.ps1" -Name codex1
# Restaurer le Codex principal du Store
powershell -NoProfile -ExecutionPolicy Bypass -File "$root\Launch-CodexMain.ps1"
# Gestionnaire
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
Flux de travail pour l'agent
- « Changer de compte / conserver mes données » → AuthSwap via
Launch-CodexProfile.ps1. - « Créer un autre profil » →
-Action new, puis lancer avecLaunch-CodexProfile.ps1. - Mauvais compte dans l'interface → comparer les e-mails dans les deux fichiers
auth.json; corriger le lancement (wrapper cmd) ; ne pas demander à l'utilisateur de se reconnecter si l'auth du profil est toujours valide. - Accès refusé / chemin vide / code de sortie 1 → cloner
ChatGPT.exe, jamais depuisWindowsApps, jamaisInstallLocationvide. - Après modification des scripts, copier
CodexMultiProfile.psm1et les lanceurs dans%LOCALAPPDATA%\CodexParallelDesktopet dansscripts\de cette compétence. Les lanceurs importent le module depuis$PSScriptRoot. - « Est-ce installé / quel compte est actif ? » →
-Action status(les e-mails sont masqués) puis-Action verify.
Authentification de profil empoisonnée
Si l'utilisateur ouvre Codex Main pendant qu'un profil est toujours en cours d'exécution, la restauration peut écrire le jeton principal dans profiles\<nom>\auth.json.
Des gardes existent déjà dans les scripts :
- L'observateur /
Launch-CodexMainne sauvegarde l'auth du profil que lorsque l'e-mail actif diffère deauth.json.__main__ - Conserve
auth.json.secondary.bak - Si l'auth du profil est manquante ou égale à l'auth principale → connexion bootstrap (effacement de l'auth active, forcer la connexion secondaire)
À ne pas faire
- Copier ou commiter
auth.json - Ouvrir Main + Profil ShareLive en même temps
- Lancer
Codex.exeou un cheminWindowsApps Start-Processsans cmd explicite /CODEX_HOME- Écrire
config.tomlavecSet-Content -Encoding UTF8sur Windows PowerShell 5.1
Détails : docs/architecture.md, docs/troubleshooting.md.