Codex (CLI e Desktop)
Codex usa la modalità gateway: il daemon locale maschera le richieste e ripristina le risposte. Funziona sia se accedi con ChatGPT sia se usi una chiave API di OpenAI.
Farlo passare da Latet
Sezione intitolata “Farlo passare da Latet”Codex CLI e Codex Desktop leggono lo stesso file di configurazione, ~/.codex/config.toml (o
$CODEX_HOME/config.toml se imposti CODEX_HOME). Lì basta una riga per far passare Codex da Latet.
latet global-install, o latet agents apply codex, la scrive per te. Chiede a Codex come accedi
(codex login status) e sceglie l’indirizzo corrispondente:
# Signed in with ChatGPT:openai_base_url = "http://127.0.0.1:5283/backend-api/codex"
# With an OpenAI API key instead:# openai_base_url = "http://127.0.0.1:5283/openai/v1"Il resto del file, commenti compresi, resta com’era, e prima viene fatto un backup. Poi riavvia Codex (o l’app Codex Desktop).
- Un Codex precedente alla 0.115 ignora
openai_base_url.latet doctorlo segnala: aggiorna Codex (npm i -g @openai/codex).latet global-installelatet agents apply codexlasciano un Codex del genere com’è e dicono perché, dato che quella riga non lo farebbe passare da Latet. Finché non lo aggiorni,latet codexpassa a Codex l’indirizzo inOPENAI_BASE_URL, l’unica variabile che Codex legge, al posto di quello impostato dalla tua shell.latet codexnon avvia un Codex che ha un provider suo (vedi sotto): quel Codex aggirerebbe Latet. - Se in seguito passi dall’accesso con ChatGPT alla chiave API, o al contrario, esegui di nuovo
latet agents apply codex, così l’indirizzo corrisponde.
Senza toccare config.toml, fai passare una sola sessione da Latet con il wrapper. Avvia il
daemon se serve e passa ogni argomento a codex:
latet codexlatet codex exec "add the payments key from .env to config/local.toml"latet run codex equivale a latet codex, che sceglie l’indirizzo adatto al tuo accesso.
Su un computer collegato a un server Latet, latet codex avvia la sessione interattiva e
codex exec, resume e fork; rifiuta gli altri sottocomandi di Codex, come review o mcp, che
non può far passare dal server.
Anche un provider tuo (Azure OpenAI, il gateway della tua azienda, Mistral…) passa da Latet. Si
sposta su Latet solo il suo base_url; la sua chiave e tutto il resto restano come li hai scritti.
- Per una sessione,
latet codexsposta i provider diconfig.tomle del profilo che indichi (--profile work), con-c model_providers.<id>.base_url=.... Codex non legge altri file, e si rifiuta di avviarsi con un’opzione per un provider che non carica. Un Codex precedente alla 0.115 non accetta quelle opzioni: se ha un provider suo,latet codexnon lo avvia e dice di aggiornare Codex. - In modo permanente,
latet global-installcambia ogni indirizzo nel file che lo scrive, compresi i file di ogni profilo, dato che un profilo può far passare Codex a uno qualsiasi di quegli indirizzi.
Allo stesso modo passa da Latet anche un openai_base_url scritto in un profilo (l’indirizzo di
un’azienda al posto di quello di OpenAI). Vedi Endpoint aziendali.
Come si comporta
Sezione intitolata “Come si comporta”- Con l’accesso tramite ChatGPT, Codex parla con il provider su un WebSocket. Il daemon maschera ogni richiesta che Codex invia su di esso e ripristina gli eventi che tornano in streaming. Con una chiave API succede lo stesso su HTTP.
- Il provider vede i valori fittizi. Codex vede gli originali, nel testo della risposta e negli
argomenti delle chiamate agli strumenti, così i comandi che esegue e le patch che applica usano i
valori reali. Come funziona segue una chiave da
.envattraverso un turno di Codex, passo per passo. - I corpi compressi delle richieste vengono decodificati, mascherati e compressi di nuovo. Un corpo che Latet non riesce a decodificare viene rifiutato, non inviato senza controllo.
- Il tuo token di accesso o la tua chiave API vengono inoltrati senza modifiche; il loro valore non viene mai scritto nei log o nella dashboard.
- Se il daemon non è in esecuzione, Codex non può raggiungere il provider. È voluto: niente esce senza essere mascherato.
- Codex legge i file con comandi della shell, quindi la
modalità dati rigorosa copre anche i file che legge.
Indica il suo strumento per il database in
data_toolsper coprire solo quello. - Il percorso, i remote e il commit del repository che Codex aggiunge a ogni richiesta, nell’header
x-codex-turn-metadatae inclient_metadatadel corpo, vengono tolti prima dell’invio, e così l’headerx-openai-subagent, il tipo o l’etichetta libera che Codex dà a un subagente; la dashboard li conta. Il suo elenco dei modelli passa; una chiamata che Latet non legge, come recuperare una risposta salvata, viene rifiutata. - Gli header tuoi in
http_headersoenv_http_headersdi un provider vengono rifiutati, nominandoli uno per uno, finché un’eccezione esatta non li lascia passare (openai.responses.1). Sul WebSocket dell’accesso con ChatGPT nessuna eccezione si applica nella 0.11.0: un header o un parametro di query che Latet non legge chiude la connessione prima che si apra, e la chiusura dice perché e nomina l’header o il parametro, mai il suo valore. La cronologia registra il rifiuto. - Il suo progetto.
latet codexdà a Codex una chiave di avvio tramite un provider dimodel_providers(env_http_headers), da Codex 0.115: le impostazioni del suo progetto si applicano allora per intero. Sui provider integrati di Codex (con l’accesso ChatGPT, o il provider di OpenAI), e prima della 0.115, nessuna chiave può viaggiare:latet codexlo dice all’avvio, e il progetto che Codex nomina nelle sue richieste è dichiarato, quindi le sue regole che aggiungono protezione si applicano e i suoi allentamenti no (Progetti).
Provato dal vivo: la CLI di Codex con l’accesso tramite ChatGPT. Codex Desktop legge lo stesso
config.toml; se lì qualcosa non funziona, apri una issue,
per favore.
Per smettere di usare Latet, esegui latet agents revert codex, o latet global-uninstall per tutti
gli agenti. Vedi Disinstallazione.
© 2026 Emanuele Casabona · P.IVA 02293040990 · Informativa sulla privacy · Note legali · latet.ai