{"id":138,"date":"2026-09-17T14:27:45","date_gmt":"2026-09-17T13:27:45","guid":{"rendered":"https:\/\/www.matteobononi.it\/blog\/?p=138"},"modified":"2026-09-17T14:27:45","modified_gmt":"2026-09-17T13:27:45","slug":"usare-due-account-chatgpt-codex-diversi-su-windows-con-vs-code","status":"publish","type":"post","link":"https:\/\/www.matteobononi.it\/blog\/usare-due-account-chatgpt-codex-diversi-su-windows-con-vs-code\/","title":{"rendered":"Usare due account ChatGPT\/Codex diversi su Windows con VS Code"},"content":{"rendered":"<p>Uso due account ChatGPT: uno personale e uno di lavoro. Sullo stesso PC volevo una configurazione molto semplice: <strong>ChatGPT Desktop con l\u2019account personale<\/strong> e <strong>Codex dentro VS Code con l\u2019account di lavoro<\/strong>.<\/p>\n<pre class=\"wp-block-preformatted\">ChatGPT Desktop\n\u2192 account personale\n\nVS Code + Codex\n\u2192 account di lavoro<\/pre>\n<p>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 \u00e8 stata usare un <code>CODEX_HOME<\/code> dedicato per l\u2019istanza di VS Code che uso per lavoro.<\/p>\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Nota:<\/strong> io uso Visual Studio Code Insiders, quindi negli esempi principali trovi <code>Code - Insiders.exe<\/code>. Pi\u00f9 avanti trovi anche i comandi pronti per VS Code stabile.<\/p><\/blockquote>\n<h2 class=\"wp-block-heading\">Qual era il problema con i due account?<\/h2>\n<p>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.<\/p>\n<p>Controllando lo stato locale di Codex ho trovato la directory predefinita del mio utente:<\/p>\n<pre class=\"wp-block-code\"><code>C:&#092;Users&#092;Matteo&#092;.codex<\/code><\/pre>\n<p>Dentro, tra gli altri file, era presente <code>auth.json<\/code>. La documentazione di Codex descrive <code>auth.json<\/code> come uno dei meccanismi usati per conservare localmente le credenziali quando lo storage \u00e8 impostato su file. Nel mio caso il risultato pratico era che i due utilizzi non rimanevano separati come volevo.<\/p>\n<p>La presenza e il nome esatto dei file interni possono cambiare tra versioni e configurazioni. Quello che mi interessava non era modificare <code>auth.json<\/code>, ma dare a Codex un ambiente locale distinto.<\/p>\n<h2 class=\"wp-block-heading\">Come separare Codex con CODEX_HOME?<\/h2>\n<p>Codex permette di usare la variabile d\u2019ambiente <code>CODEX_HOME<\/code> per cambiare la directory in cui cerca il proprio stato e la propria configurazione. \u00c8 esattamente ci\u00f2 che serve per creare un ambiente Codex separato.<\/p>\n<p>Ho lasciato l\u2019ambiente personale nella posizione predefinita:<\/p>\n<pre class=\"wp-block-code\"><code>C:&#092;Users&#092;Matteo&#092;.codex<\/code><\/pre>\n<p>Per il lavoro ne ho creato uno dedicato:<\/p>\n<pre class=\"wp-block-code\"><code>C:&#092;Users&#092;Matteo&#092;.codex-lavoro<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Come avviare VS Code con un CODEX_HOME diverso?<\/h2>\n<p>In PowerShell imposto la variabile, creo la directory se serve e avvio VS Code dalla stessa shell.<\/p>\n<pre class=\"wp-block-code\"><code>$env:CODEX_HOME=\"$env:USERPROFILE&#092;.codex-lavoro\"\n\nNew-Item -ItemType Directory -Force -Path $env:CODEX_HOME | Out-Null\n\n&amp; \"$env:LOCALAPPDATA&#092;Programs&#092;Microsoft VS Code Insiders&#092;Code - Insiders.exe\"<\/code><\/pre>\n<p>A quel punto Codex parte usando il nuovo ambiente e pu\u00f2 richiedere una nuova autenticazione. Io ho effettuato il login con l\u2019account di lavoro.<\/p>\n<h2 class=\"wp-block-heading\">E se uso VS Code stabile?<\/h2>\n<p>Il principio \u00e8 identico. In una normale installazione utente:<\/p>\n<pre class=\"wp-block-code\"><code>$env:CODEX_HOME=\"$env:USERPROFILE&#092;.codex-lavoro\"\n\nNew-Item -ItemType Directory -Force -Path $env:CODEX_HOME | Out-Null\n\n&amp; \"$env:LOCALAPPDATA&#092;Programs&#092;Microsoft VS Code&#092;Code.exe\"<\/code><\/pre>\n<p>Se VS Code \u00e8 installato altrove basta sostituire il percorso dell\u2019eseguibile.<\/p>\n<h2 class=\"wp-block-heading\">Come verificare che VS Code stia usando il CODEX_HOME corretto?<\/h2>\n<p>Nel terminale integrato controllo:<\/p>\n<pre class=\"wp-block-code\"><code>$env:CODEX_HOME<\/code><\/pre>\n<p>Nel mio caso restituisce:<\/p>\n<pre class=\"wp-block-code\"><code>C:&#092;Users&#092;Matteo&#092;.codex-lavoro<\/code><\/pre>\n<p>Dopo l\u2019utilizzo, nella mia installazione sono comparsi elementi come <code>auth.json<\/code>, <code>config.toml<\/code>, <code>skills&#092;<\/code>, <code>plugins&#092;<\/code>, <code>cache&#092;<\/code>, <code>.sandbox&#092;<\/code> e <code>state_5.sqlite<\/code>. Sono dettagli osservati nella mia versione, non un\u2019interfaccia stabile da cui dipendere.<\/p>\n<h2 class=\"wp-block-heading\">Perch\u00e9 bisogna fare attenzione alle istanze di VS Code gi\u00e0 aperte?<\/h2>\n<p>Se VS Code \u00e8 gi\u00e0 in esecuzione, una nuova apertura pu\u00f2 riutilizzare il processo esistente. Per evitare dubbi, prima della modalit\u00e0 lavoro chiudo tutte le istanze.<\/p>\n<p>Con VS Code Insiders:<\/p>\n<pre class=\"wp-block-code\"><code>Stop-Process -Name \"Code - Insiders\" -Force -ErrorAction SilentlyContinue\n\n$env:CODEX_HOME=\"$env:USERPROFILE&#092;.codex-lavoro\"\n\n&amp; \"$env:LOCALAPPDATA&#092;Programs&#092;Microsoft VS Code Insiders&#092;Code - Insiders.exe\"<\/code><\/pre>\n<p>Con VS Code stabile:<\/p>\n<pre class=\"wp-block-code\"><code>Stop-Process -Name \"Code\" -Force -ErrorAction SilentlyContinue<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Come creare un launcher per l\u2019account Codex di lavoro?<\/h2>\n<p>Una volta verificato che tutto funziona, ho creato un piccolo launcher <code>.cmd<\/code>.<\/p>\n<h3 class=\"wp-block-heading\">VS Code Insiders<\/h3>\n<p>File: <code>VS Code Lavoro - Insiders.cmd<\/code><\/p>\n<pre class=\"wp-block-code\"><code>@echo off\n\nset \"CODEX_HOME=%USERPROFILE%&#092;.codex-lavoro\"\n\nif not exist \"%CODEX_HOME%\" mkdir \"%CODEX_HOME%\"\n\nstart \"\" \"%LOCALAPPDATA%&#092;Programs&#092;Microsoft VS Code Insiders&#092;Code - Insiders.exe\"<\/code><\/pre>\n<h3 class=\"wp-block-heading\">VS Code stabile<\/h3>\n<p>File: <code>VS Code Lavoro.cmd<\/code><\/p>\n<pre class=\"wp-block-code\"><code>@echo off\n\nset \"CODEX_HOME=%USERPROFILE%&#092;.codex-lavoro\"\n\nif not exist \"%CODEX_HOME%\" mkdir \"%CODEX_HOME%\"\n\nstart \"\" \"%LOCALAPPDATA%&#092;Programs&#092;Microsoft VS Code&#092;Code.exe\"<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Cosa succede se apro VS Code normalmente?<\/h2>\n<p>Se apro VS Code senza impostare <code>CODEX_HOME<\/code>, Codex torna all\u2019ambiente predefinito. In pratica posso avere due modalit\u00e0:<\/p>\n<pre class=\"wp-block-preformatted\">VS Code normale\n\u2192 ambiente Codex personale\n\nVS Code Lavoro.cmd\n\u2192 ambiente Codex di lavoro<\/pre>\n<h2 class=\"wp-block-heading\">Cosa succede alla prima configurazione Windows di Codex?<\/h2>\n<p>Al primo avvio con il nuovo <code>CODEX_HOME<\/code>, nella mia installazione Codex ha mostrato una richiesta per completare la configurazione Windows. Il tentativo con privilegi amministrativi non \u00e8 andato a buon fine e ho continuato senza accesso amministratore.<\/p>\n<p>Codex ha comunque inizializzato la sandbox e ha funzionato normalmente. La verifica pi\u00f9 utile \u00e8 stata pratica: creare, modificare e cancellare un file nel workspace.<\/p>\n<h2 class=\"wp-block-heading\">Cosa non conviene copiare tra due CODEX_HOME?<\/h2>\n<p>Ho evitato di copiare tutta la vecchia <code>.codex<\/code> nella nuova directory. Nella mia installazione ci sono file di autenticazione e stato locale come <code>auth.json<\/code>, database SQLite, identificativi d\u2019installazione e stato globale.<\/p>\n<p>Se l\u2019obiettivo \u00e8 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.<\/p>\n<h2 class=\"wp-block-heading\">Qual \u00e8 la configurazione finale?<\/h2>\n<pre class=\"wp-block-preformatted\">C:&#092;Users&#092;Matteo&#092;\n\u2502\n\u251c\u2500\u2500 .codex&#092;\n\u2502   \u2514\u2500\u2500 ambiente personale\n\u2502\n\u2514\u2500\u2500 .codex-lavoro&#092;\n    \u2514\u2500\u2500 ambiente di lavoro<\/pre>\n<p>I launcher decidono semplicemente quale ambiente Codex usare. Non devo spostare file di autenticazione a mano n\u00e9 modificare lo stato interno.<\/p>\n<h2 class=\"wp-block-heading\">Script rapido per verificare l\u2019ambiente<\/h2>\n<pre class=\"wp-block-code\"><code>Write-Host \"CODEX_HOME:\"\nWrite-Host $env:CODEX_HOME\n\nWrite-Host \"`nAuth presente:\"\nTest-Path \"$env:CODEX_HOME&#092;auth.json\"\n\nWrite-Host \"`nContenuto CODEX_HOME:\"\nGet-ChildItem $env:CODEX_HOME -Force |\n    Select-Object Name, LastWriteTime<\/code><\/pre>\n<p>Se il launcher di lavoro \u00e8 stato usato correttamente, la prima parte mostra <code>C:&#092;Users&#092;Matteo&#092;.codex-lavoro<\/code>.<\/p>\n<h2 class=\"wp-block-heading\">Perch\u00e9 questa separazione \u00e8 utile?<\/h2>\n<p>Il caso tipico \u00e8 chi usa un account ChatGPT personale e uno aziendale sullo stesso computer. Lo stesso principio pu\u00f2 essere usato per mantenere ambienti distinti, per esempio <code>.codex-personale<\/code>, <code>.codex-lavoro<\/code>, <code>.codex-cliente-a<\/code> e <code>.codex-cliente-b<\/code>.<\/p>\n<p>Il vantaggio, almeno per il mio modo di lavorare, \u00e8 semplice: non devo continuare a fare logout e login quando passo da un contesto all\u2019altro.<\/p>\n<p>\u00c8 un principio di separazione che uso anche in altri workflow basati sull\u2019AI. Ne ho parlato nell\u2019articolo <a href=\"https:\/\/www.matteobononi.it\/blog\/dal-caos-allordine-la-mia-esperienza-nel-refactoring-di-un-sito-prestashop-1-6-verso-la-versione-9\/\">Dal caos all\u2019ordine: la mia esperienza nel refactoring di un sito Prestashop 1.6 verso la versione 9<\/a>, dove Codex entra nel processo insieme a ChatGPT e Copilot.<\/p>\n<h2 class=\"wp-block-heading\">In sintesi<\/h2>\n<p>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 <code>CODEX_HOME<\/code> e avvio la modalit\u00e0 di lavoro con un launcher dedicato.<\/p>\n<pre class=\"wp-block-preformatted\">ChatGPT Desktop \/ ambiente predefinito\n\u2192 personale\n\nVS Code avviato con CODEX_HOME=.codex-lavoro\n\u2192 lavoro<\/pre>\n<p>\u00c8 una soluzione piccola, ma mi permette di mantenere distinti due contesti che uso ogni giorno senza cambiare continuamente account.<\/p>","protected":false},"excerpt":{"rendered":"<p>Come separare un account ChatGPT personale da un account Codex di lavoro su Windows usando CODEX_HOME, VS Code e un semplice launcher.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[58,56],"tags":[67,63,62,66,64,65],"class_list":["post-138","post","type-post","status-publish","format-standard","hentry","category-ia-applicata","category-sviluppo","tag-ai-automazione","tag-chatgpt","tag-codex","tag-powershell","tag-visual-studio-code","tag-windows"],"_links":{"self":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/comments?post=138"}],"version-history":[{"count":1,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/138\/revisions"}],"predecessor-version":[{"id":139,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/posts\/138\/revisions\/139"}],"wp:attachment":[{"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/media?parent=138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/categories?post=138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.matteobononi.it\/blog\/wp-json\/wp\/v2\/tags?post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}