Usare due account ChatGPT/Codex diversi su Windows con VS Code

,

Uso due account ChatGPT: uno personale e uno di lavoro. Sullo stesso PC volevo una configurazione molto semplice: ChatGPT Desktop con l’account personale e Codex dentro VS Code con l’account di lavoro.

ChatGPT Desktop
→ account personale

VS Code + Codex
→ account di lavoro

Sembrava banale. In pratica ho scoperto che, nel mio ambiente Windows, separare i due login richiedeva anche separare lo stato locale usato da Codex. La soluzione che ha funzionato per me è stata usare un CODEX_HOME dedicato per l’istanza di VS Code che uso per lavoro.

Nota: io uso Visual Studio Code Insiders, quindi negli esempi principali trovi Code - Insiders.exe. Più avanti trovi anche i comandi pronti per VS Code stabile.

Qual era il problema con i due account?

Avevo fatto logout da ChatGPT Desktop e login con il mio account personale. Poi ho aperto VS Code e Codex risultava autenticato con lo stesso account.

Controllando lo stato locale di Codex ho trovato la directory predefinita del mio utente:

C:\Users\Matteo\.codex

Dentro, tra gli altri file, era presente auth.json. La documentazione di Codex descrive auth.json come uno dei meccanismi usati per conservare localmente le credenziali quando lo storage è impostato su file. Nel mio caso il risultato pratico era che i due utilizzi non rimanevano separati come volevo.

La presenza e il nome esatto dei file interni possono cambiare tra versioni e configurazioni. Quello che mi interessava non era modificare auth.json, ma dare a Codex un ambiente locale distinto.

Come separare Codex con CODEX_HOME?

Codex permette di usare la variabile d’ambiente CODEX_HOME per cambiare la directory in cui cerca il proprio stato e la propria configurazione. È esattamente ciò che serve per creare un ambiente Codex separato.

Ho lasciato l’ambiente personale nella posizione predefinita:

C:\Users\Matteo\.codex

Per il lavoro ne ho creato uno dedicato:

C:\Users\Matteo\.codex-lavoro

Come avviare VS Code con un CODEX_HOME diverso?

In PowerShell imposto la variabile, creo la directory se serve e avvio VS Code dalla stessa shell.

$env:CODEX_HOME="$env:USERPROFILE\.codex-lavoro"

New-Item -ItemType Directory -Force -Path $env:CODEX_HOME | Out-Null

& "$env:LOCALAPPDATA\Programs\Microsoft VS Code Insiders\Code - Insiders.exe"

A quel punto Codex parte usando il nuovo ambiente e può richiedere una nuova autenticazione. Io ho effettuato il login con l’account di lavoro.

E se uso VS Code stabile?

Il principio è identico. In una normale installazione utente:

$env:CODEX_HOME="$env:USERPROFILE\.codex-lavoro"

New-Item -ItemType Directory -Force -Path $env:CODEX_HOME | Out-Null

& "$env:LOCALAPPDATA\Programs\Microsoft VS Code\Code.exe"

Se VS Code è installato altrove basta sostituire il percorso dell’eseguibile.

Come verificare che VS Code stia usando il CODEX_HOME corretto?

Nel terminale integrato controllo:

$env:CODEX_HOME

Nel mio caso restituisce:

C:\Users\Matteo\.codex-lavoro

Dopo l’utilizzo, nella mia installazione sono comparsi elementi come auth.json, config.toml, skills\, plugins\, cache\, .sandbox\ e state_5.sqlite. Sono dettagli osservati nella mia versione, non un’interfaccia stabile da cui dipendere.

Perché bisogna fare attenzione alle istanze di VS Code già aperte?

Se VS Code è già in esecuzione, una nuova apertura può riutilizzare il processo esistente. Per evitare dubbi, prima della modalità lavoro chiudo tutte le istanze.

Con VS Code Insiders:

Stop-Process -Name "Code - Insiders" -Force -ErrorAction SilentlyContinue

$env:CODEX_HOME="$env:USERPROFILE\.codex-lavoro"

& "$env:LOCALAPPDATA\Programs\Microsoft VS Code Insiders\Code - Insiders.exe"

Con VS Code stabile:

Stop-Process -Name "Code" -Force -ErrorAction SilentlyContinue

Come creare un launcher per l’account Codex di lavoro?

Una volta verificato che tutto funziona, ho creato un piccolo launcher .cmd.

VS Code Insiders

File: VS Code Lavoro - Insiders.cmd

@echo off

set "CODEX_HOME=%USERPROFILE%\.codex-lavoro"

if not exist "%CODEX_HOME%" mkdir "%CODEX_HOME%"

start "" "%LOCALAPPDATA%\Programs\Microsoft VS Code Insiders\Code - Insiders.exe"

VS Code stabile

File: VS Code Lavoro.cmd

@echo off

set "CODEX_HOME=%USERPROFILE%\.codex-lavoro"

if not exist "%CODEX_HOME%" mkdir "%CODEX_HOME%"

start "" "%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe"

Cosa succede se apro VS Code normalmente?

Se apro VS Code senza impostare CODEX_HOME, Codex torna all’ambiente predefinito. In pratica posso avere due modalità:

VS Code normale
→ ambiente Codex personale

VS Code Lavoro.cmd
→ ambiente Codex di lavoro

Cosa succede alla prima configurazione Windows di Codex?

Al primo avvio con il nuovo CODEX_HOME, nella mia installazione Codex ha mostrato una richiesta per completare la configurazione Windows. Il tentativo con privilegi amministrativi non è andato a buon fine e ho continuato senza accesso amministratore.

Codex ha comunque inizializzato la sandbox e ha funzionato normalmente. La verifica più utile è stata pratica: creare, modificare e cancellare un file nel workspace.

Cosa non conviene copiare tra due CODEX_HOME?

Ho evitato di copiare tutta la vecchia .codex nella nuova directory. Nella mia installazione ci sono file di autenticazione e stato locale come auth.json, database SQLite, identificativi d’installazione e stato globale.

Se l’obiettivo è separare gli ambienti, copiare indiscriminatamente quello stato va nella direzione opposta. Ho lasciato inizializzare il nuovo ambiente da zero e ho effettuato una nuova autenticazione.

Qual è la configurazione finale?

C:\Users\Matteo\
│
├── .codex\
│   └── ambiente personale
│
└── .codex-lavoro\
    └── ambiente di lavoro

I launcher decidono semplicemente quale ambiente Codex usare. Non devo spostare file di autenticazione a mano né modificare lo stato interno.

Script rapido per verificare l’ambiente

Write-Host "CODEX_HOME:"
Write-Host $env:CODEX_HOME

Write-Host "`nAuth presente:"
Test-Path "$env:CODEX_HOME\auth.json"

Write-Host "`nContenuto CODEX_HOME:"
Get-ChildItem $env:CODEX_HOME -Force |
    Select-Object Name, LastWriteTime

Se il launcher di lavoro è stato usato correttamente, la prima parte mostra C:\Users\Matteo\.codex-lavoro.

Perché questa separazione è utile?

Il caso tipico è chi usa un account ChatGPT personale e uno aziendale sullo stesso computer. Lo stesso principio può essere usato per mantenere ambienti distinti, per esempio .codex-personale, .codex-lavoro, .codex-cliente-a e .codex-cliente-b.

Il vantaggio, almeno per il mio modo di lavorare, è semplice: non devo continuare a fare logout e login quando passo da un contesto all’altro.

È un principio di separazione che uso anche in altri workflow basati sull’AI. Ne ho parlato nell’articolo Dal caos all’ordine: la mia esperienza nel refactoring di un sito Prestashop 1.6 verso la versione 9, dove Codex entra nel processo insieme a ChatGPT e Copilot.

In sintesi

Per usare due account Codex diversi sullo stesso PC Windows non ho duplicato VS Code e non ho spostato manualmente i file di autenticazione. Ho separato gli ambienti tramite CODEX_HOME e avvio la modalità di lavoro con un launcher dedicato.

ChatGPT Desktop / ambiente predefinito
→ personale

VS Code avviato con CODEX_HOME=.codex-lavoro
→ lavoro

È una soluzione piccola, ma mi permette di mantenere distinti due contesti che uso ogni giorno senza cambiare continuamente account.