OCEWeb.it - Blog informatico

Codex su Windows: come risolvere l’errore CryptUnprotectData 2148073483

da | Ago 23, 2026 | Microsoft Windows, Tips

Negli ultimi aggiornamenti di OpenAI Codex su Windows può capitare di imbattersi in un comportamento piuttosto fastidioso: Codex apre normalmente il progetto, ma non riesce più a eseguire praticamente nessun comando locale. Ogni volta ci prova, ma ritorna l’errore di CryptUnprotectData e cambia metodo per le modifiche dei file. Ovviamente questo implica un rallentamento nell’esecuzione del lavoro da svolgere nonché un consumo di token per le ulteriori verifiche ed elaborazioni necessarie.

Il primo sospettato diventa inevitabilmente PowerShell. In realtà, almeno nel caso trattato in questa guida, PowerShell non c’entra quasi nulla.

Il comando non arriva nemmeno alla shell.

L’errore che compare è generalmente simile al seguente:

windows sandbox: CryptUnprotectData failed: 2148073483

Codex può quindi iniziare a rispondere con messaggi del tipo:

La struttura centrale è vuota o comunque non ancora leggibile tramite il terminale di questa sessione: il runtime PowerShell sta restituendo un errore interno di protezione (CryptUnprotectData).

Il risultato è che l’agente non riesce a eseguire correttamente operazioni banali come leggere una directory, controllare lo stato Git o eseguire gli script del progetto.

Cosa significa l’errore CryptUnprotectData 2148073483

Il valore decimale:

2148073483

corrisponde all’errore Windows:

0x8009000B
NTE_BAD_KEY_STATE

Il problema è collegato alla Windows Data Protection API, o DPAPI, utilizzata dal sandbox Windows di Codex per proteggere alcune credenziali necessarie al proprio ambiente isolato.

Il sandbox Windows più recente di Codex, denominato elevated sandbox, utilizza infatti due account locali dedicati:

  • CodexSandboxOffline
  • CodexSandboxOnline

Le relative credenziali vengono conservate localmente e cifrate tramite DPAPI.

OpenAI ha descritto pubblicamente questa architettura nella documentazione tecnica dedicata alla realizzazione del sandbox di Codex per Windows.

Quando la decifratura delle credenziali fallisce, Codex può interrompersi prima ancora di creare il processo PowerShell.

Il flusso che dovrebbe funzionare

Flusso esecuzione codex

Nel caso dell’errore 2148073483, la catena si interrompe prima dell’avvio del command runner.

Ecco perché tentare di correggere PowerShell, Git o i permessi del singolo progetto generalmente non porta da nessuna parte.

Come capire se è proprio questo il problema

Il sintomo più caratteristico è molto semplice: falliscono anche comandi che non hanno praticamente nulla a che fare con il progetto.

Ad esempio Codex potrebbe non riuscire a eseguire:

Get-Location

oppure:

Get-Date

o ancora:

git –version

Se il messaggio contiene:

CryptUnprotectData failed: 2148073483

è molto probabile che il problema sia nel sandbox elevated di Codex e non nella shell o nel repository sul quale stai lavorando.

Il problema è stato inoltre segnalato da diversi utenti Windows nel repository ufficiale di Codex. In alcune segnalazioni il malfunzionamento persiste anche dopo il riavvio di Windows, il reset dell’applicazione o la reinstallazione di Codex.

La soluzione: usare il sandbox unelevated

Il workaround che nel mio caso ha risolto immediatamente il problema consiste nel chiedere a Codex di utilizzare il precedente Windows sandbox unelevated.

La modifica è molto piccola e soprattutto non richiede di disabilitare completamente il sandbox.

1. Chiudi completamente Codex

Chiudi Codex Desktop e tutte le eventuali finestre dell’applicazione.

È meglio effettuare la modifica mentre Codex non è in esecuzione, evitando che il file di configurazione venga letto o modificato contemporaneamente dall’applicazione.

2. Apri il file config.toml

Il file di configurazione di Codex si trova normalmente nella directory:

%USERPROFILE%\.codex\config.toml

Che, ad esempio, può corrispondere a:

C:\Users\NomeUtente\.codex\config.toml

Puoi aprirlo con Visual Studio Code, Notepad++, Blocco note o qualsiasi altro editor di testo.

3. Cerca la configurazione del sandbox Windows

Nel file potrebbe essere presente questa configurazione:

[windows]
sandbox = “elevated”

Sostituiscila con:

[windows]
sandbox = “unelevated”

Se la sezione [windows] non esiste ancora, puoi aggiungerla.

Il risultato dovrà quindi contenere:

[windows]
sandbox = “unelevated”

Attenzione!!

Deve esserci una sola sezione [windows] valida nel file TOML. Non aggiungerne una seconda se ne esiste già una.

4. Non modificare sandbox_mode

Questo è un punto importante.

La proprietà:

[windows]
sandbox = “unelevated”

seleziona l’implementazione del sandbox utilizzata da Codex su Windows.

Non significa disabilitare tutte le protezioni.

Non è quindi necessario modificare:

sandbox_mode

e soprattutto non è necessario impostare Codex su danger-full-access soltanto per risolvere questo problema.

Sono impostazioni differenti.

5. Salva config.toml

Salva il file e chiudi l’editor.

6. Controlla che Codex sia realmente terminato

Se vuoi essere sicuro che non siano rimasti processi Codex attivi, puoi aprire una normale finestra PowerShell esterna a Codex ed eseguire:

Get-Process *codex* -ErrorAction SilentlyContinue

Se vengono visualizzati processi ancora attivi dopo aver chiuso l’applicazione, puoi terminarli con:

Get-Process *codex* -ErrorAction SilentlyContinue | Stop-Process -Force

7. Riapri Codex

Avvia nuovamente Codex Desktop e apri uno dei tuoi progetti.

La nuova configurazione dovrebbe essere utilizzata automaticamente.

Come verificare che il problema sia risolto

Non serve partire immediatamente con build da venti minuti, migrazioni del database e test di integrazione assortiti. Meglio chiedere a Codex qualcosa di decisamente meno avventuroso.

Esegui questi controlli in sequenza.

1. Controlla la directory corrente

Get-Location

2. Leggi il contenuto della directory

Get-ChildItem

3. Verifica Git

Se il progetto utilizza Git:

git status

Se tutti e tre i comandi vengono eseguiti normalmente, il runtime locale è tornato operativo.

Codex dovrebbe quindi essere nuovamente in grado di analizzare il progetto, modificare i file ed eseguire gli strumenti di sviluppo disponibili nel sistema.

Perché unelevated funziona

OpenAI ha sviluppato nel tempo due differenti implementazioni del sandbox Windows.

Il primo prototipo era il cosiddetto unelevated sandbox. Utilizzava SID sintetici, ACL e token Windows con restrizioni senza richiedere la creazione di utenti Windows dedicati.

Successivamente è stato sviluppato l’elevated sandbox, progettato per offrire un controllo più robusto, soprattutto sull’accesso alla rete.

Questa nuova architettura introduce però diversi componenti aggiuntivi:

  • account Windows dedicati;
  • credenziali locali;
  • cifratura DPAPI;
  • regole Windows Firewall;
  • codex-windows-sandbox-setup.exe;
  • codex-command-runner.exe.

L’errore CryptUnprotectData interessa proprio uno dei passaggi introdotti da questa architettura.

Impostando:

[windows]
sandbox = “unelevated”

Codex torna invece all’implementazione precedente del sandbox, aggirando il meccanismo che sta provocando l’errore DPAPI.

Unelevated significa eseguire Codex senza protezioni?

No.

È importante non confondere:

sandbox = “unelevated”

con:

sandbox_mode = “danger-full-access”

La prima impostazione sceglie quale implementazione Windows del sandbox deve essere utilizzata.

La seconda riguarda invece il livello generale di restrizioni applicato all’agente.

L’unelevated sandbox continua quindi a essere un ambiente con restrizioni. Non equivale ad autorizzare Codex a eseguire liberamente qualsiasi operazione sul computer.

Esiste però un compromesso da conoscere.

Il limite del sandbox unelevated

OpenAI ha spiegato che uno dei motivi principali che hanno portato alla progettazione dell’elevated sandbox riguarda la gestione dell’accesso alla rete.

Utilizzando gli account dedicati CodexSandboxOffline e CodexSandboxOnline, il sistema può applicare regole Windows Firewall specifiche al processo sandboxato.

L’implementazione unelevated utilizza un meccanismo meno robusto per questo particolare isolamento.

Di conseguenza, unelevated deve essere considerato un workaround quando l’elevated sandbox non funziona correttamente, non necessariamente la configurazione ideale definitiva.

Perché reinstallare Codex potrebbe non servire

Quando un’applicazione smette di funzionare dopo un aggiornamento, la tentazione è quasi automatica: disinstallare tutto e ricominciare da zero.

Nel caso dell’errore CryptUnprotectData 2148073483, però, ci sono segnalazioni nelle quali il problema continua a presentarsi anche dopo:

  • riavvio completo di Windows;
  • reset dell’applicazione;
  • reinstallazione di Codex;
  • avvio come amministratore;
  • utilizzo di un repository differente.

Questo è un altro indizio importante: il problema non dipende necessariamente dal progetto aperto.

Prima di iniziare a modificare permessi NTFS, configurazioni Git, profili PowerShell e mezzo sistema operativo, vale quindi la pena controllare la configurazione del sandbox.

Valuta anche...

La visibilità nei sistemi basati sull’AI è solo uno dei tanti cambiamenti che l’Intelligenza Artificiale sta portando nel modo in cui produciamo, cerchiamo e utilizziamo le informazioni. Per sfruttare davvero questi strumenti, però, è utile comprenderne anche i meccanismi: LLM, prompt, contesto, memoria, agenti, limiti ed errori sono concetti sempre più importanti anche per chi lavora nel web, nel marketing e nello sviluppo.

Nel mio libro “Intelligenza Artificiale senza sprechi” affronto questi temi con un approccio pratico e accessibile, pensato sia per chi vuole partire dalle basi sia per chi desidera approfondire e utilizzare l’AI in modo più consapevole ed efficace. Il libro è disponibile su Amazon e può essere letto gratuitamente con Prime Reading.

INTELLIGENZA ARTIFICIALE SENZA SPRECHI

Condividi questo articolo su: