Blog

Claude Code e Codex: attività notturne con /goal

Markdown

Il comando /goal in Claude Code 2.1.139 e Codex CLI esegue un agente AI autonomamente per ore. Spiego la configurazione, esempi reali e quanti token costa.

Leggi l’articolo completo

Punti chiave

Il comando /goal è apparso in Claude Code 2.1.139 (11 maggio 2026) e Codex CLI 0.128.0 (30 aprile 2026, stabile dal 21 maggio). Definisci una sola volta il criterio di «completamento» e l'agente alterna autonomamente pianificazione, azione e verifica finché il criterio non è soddisfatto o non esaurisce i token. OpenAI ha mostrato pubblicamente un'esecuzione di 25 ore con 13 milioni di token. È adatto a migrazioni, benchmark e refactoring con criteri misurabili. Non è adatto a compiti di UI, database di produzione o richieste vaghe come «miglioralo».

Le informazioni su come lavorare con Ailoot sono disponibili nella documentazione.

Che cos'è /goal e perché è apparso nel 2026?

Punti chiave

Prima di /goal, ogni turno dell'agente richiedeva un «continua» manuale. Apriva un file, lo leggeva, scriveva qualcosa, si fermava e aspettava. Il comando /goal imposta una volta il criterio di completamento: l'agente decide da sé quando il compito è concluso e non restituisce il controllo finché non ha terminato.

Lo scenario che abbiamo vissuto tutti prima di aprile 2026: assegno a Claude un compito, «migra il progetto da Pydantic v1 a v2». Inizia, si ferma dopo 30 secondi, controllo quello che ha fatto, scrivo «continua», compie il passo successivo, si ferma e io scrivo di nuovo «continua». In una migrazione ampia, questo significa 200–300 «continua» manuali, e finisco per fare da babysitter all'agente invece di scrivere altro codice in parallelo.

L'analisi di OpenAI era che il problema non fosse la «stupidità» del modello, ma l'architettura del ciclo. Il modello non sapeva quando fermarsi, quindi frenava a ogni turno. Dagli un criterio di «completamento» e deciderà da sé.

Così è nato /goal: un meccanismo integrato nell'harness, non nel modello.

La dichiarazione è stata fatta alla conferenza Code with Claude di Londra, il 19–20 maggio 2026. Descrive ciò che è realmente accaduto nel mese successivo al lancio di /goal in entrambi gli strumenti.

Come si configura la modalità Goal in Claude Code?

Punti chiave

Claude Code 2.1.139 è stato rilasciato l'11 maggio 2026 con il comando /goal. Un modello piccolo (Haiku per impostazione predefinita) controlla il criterio dopo ogni turno. Se il criterio non è soddisfatto, Claude fa un altro turno. Il criterio può contenere fino a 4.000 caratteri e c'è un solo obiettivo per sessione.

Un esempio minimo dalla documentazione ufficiale di Anthropic:

claude -p "/goal CHANGELOG.md has an entry for every PR merged this week"

Questo comando avvia l'agente in background con un obiettivo. Claude trova le PR, le confronta con CHANGELOG.md, aggiunge le righe mancanti e si ferma quando il criterio è soddisfatto.

In modalità interattiva, basta digitare /goal seguito dalla condizione:

/goal all pytest tests pass and mypy strict reports zero errors

Cosa fa Claude dopo:

  • Dopo ogni turno, un modello veloce separato (Haiku per impostazione predefinita) riceve la condizione corrente e la cronologia della conversazione
  • Questo modello risponde «sì» o «no» con una breve motivazione
  • Se la risposta è «no», Claude fa automaticamente un altro turno senza restituirti il controllo
  • Se la risposta è «sì», l'obiettivo viene cancellato e il controllo ti viene restituito

Dopo ogni turno, un modello piccolo e veloce controlla se la condizione è stata soddisfatta. Se non lo è, Claude inizia un altro turno senza restituirti il controllo.

— Documentazione ufficiale di Claude Code, https://code.claude.com/docs/en/goal

Limiti rigidi di cui nessuno ti parla finché non ci sbatti contro:

  • /goal funziona solo nelle directory di lavoro in cui è stata accettata la finestra di dialogo di fiducia. Se sei su una macchina nuova e Claude non ha ancora memorizzato quella directory, il comando fallirà
  • Negli ambienti aziendali con disableAllHooks o allowManagedHooksOnly, il comando non è disponibile
  • La condizione può contenere fino a 4.000 caratteri
  • Può esserci un solo obiettivo attivo per sessione. Un nuovo /goal reimposta quello precedente
  • Con --resume, la condizione viene mantenuta, ma i contatori di turni, tempo e token vengono azzerati

Comandi di controllo:

  • /goal senza argomenti: mostra lo stato corrente
  • /goal clear (o stop, off, reset, none, cancel): cancella l'obiettivo

Secondo Anthropic, il costo del valutatore è «di solito trascurabile rispetto al costo del turno principale». Haiku valuta il criterio e il testo della conversazione e non chiama strumenti, quindi il controllo costa poco; la parte costosa sono i turni del modello principale.

Come si configura /goal in Codex CLI?

Punti chiave

Codex CLI 0.128.0 ha aggiunto /goal il 30 aprile 2026 come funzione sperimentale. Il 21 maggio la modalità è diventata stabile nella release 26.519 / npm 0.133.0. Funziona tramite due modelli di prompt: continuation.md («continua») e budget_limit.md («fermati»). L'obiettivo è associato al thread e sopravvive ai riavvii.

Il comando ha lo stesso aspetto che in Claude:

codex
> /goal all vitest tests pass and there are no eslint errors

Codex offre più controlli per l'obiettivo:

ComandoCosa fa
/goal conditionimposta un obiettivo
/goalvisualizza lo stato
/goal pausemette in pausa
/goal resumeriprende
/goal editmodifica la condizione (con GA)
/goal clearcancella l'obiettivo

La differenza principale rispetto a Claude è che è Codex stesso a controllare se ha «finito», invece di un modello separato. Dopo ogni turno, Codex inserisce automaticamente nel contesto il modello continuation.md dal repository openai/codex. Traduzione letterale:

«Continua a lavorare per raggiungere l'obiettivo attivo del thread. Non ripetere il lavoro già svolto. Scegli la prossima azione concreta verso l'obiettivo. Segna l'obiettivo come raggiunto solo quando una verifica mostra che è stato effettivamente soddisfatto e non resta alcun lavoro necessario.»

Quando i token si avvicinano al limite, viene inserito un secondo modello, budget_limit.md:

«L'obiettivo ha raggiunto il suo limite di token. Non iniziare altro lavoro sostanziale. Concludi questo turno il prima possibile: riassumi i progressi utili, individua il lavoro e gli ostacoli rimanenti e lascia all'utente un passo successivo chiaro.»

La logica è la stessa: «non mentire su ciò che hai fatto». La continuazione richiede di proseguire solo se l'obiettivo non è stato davvero raggiunto. budget_limit richiede di fermarsi, descrivendo con sincerità ciò che resta.

A differenza di Claude, Codex associa l'obiettivo al thread, non alla sessione. Puoi chiudere il terminale e riaprirlo al mattino: /goal resume riprende lo stesso obiettivo con le stesse informazioni in memoria. È utile per le esecuzioni che dividi in blocchi secondo i tuoi orari.

In che cosa differiscono /goal in Claude Code e /goal in Codex?

Punti chiave

Claude separa chi scrive da chi giudica: il modello principale scrive codice e un modello piccolo separato valuta. Codex è un unico agente che controlla il proprio lavoro: si ricorda «non mentire su ciò che hai fatto». Le architetture sono diverse, ma il rischio di entrare in un ciclo è lo stesso.

Questa è la lacuna più comune nei confronti, quindi esaminiamola nel dettaglio.

AspettoClaude Code /goalCodex /goal
Releasev2.1.139, 11 maggio 2026v0.128.0, 30 aprile 2026 (sperimentale) → v0.133.0 / 26.519, 21 maggio 2026 (stabile)
Ambito dell'obiettivoSessioneThread (sopravvive ai riavvii)
Controlliset, clear (+ alias)set, view, pause, resume, edit, clear
Chi verifica se è «finito»Modello separato (Haiku per impostazione predefinita)Lo stesso agente, tramite un prompt inserito
Accesso del valutatore ai fileNo; giudica solo dal testo della conversazioneSì; può esaminare file, test e log
BudgetNel testo della condizione: «oppure fermati dopo 20 turni»Limite di token integrato + inserimento automatico di budget_limit.md
Limite massimo di spesaNessuno; solo il limite dell'abbonamentoNessuno; solo il limite dell'abbonamento
Lunghezza della condizioneFino a 4.000 caratteriNon specificata
Dove funzionaModalità interattiva, -p, app desktop, Remote ControlApp, estensione IDE, CLI, client ACP

La differenza concettuale è che Claude tratta il ciclo come un contratto di qualità (un valutatore esterno), mentre Codex lo tratta come un meccanismo di esecuzione (l'agente gestisce sé stesso).

In pratica: se vuoi che il criterio di «completamento» sia imparziale, scegli Claude. Se vuoi che l'agente possa controllare file e log durante la valutazione, scegli Codex.

Per saperne di più sugli strumenti, leggi la guida Codex vs Claude Code.

Esempio reale: migrazione da Pydantic v1 a v2 in 31 ore

Punti chiave

Codex /goal ha completato la migrazione di 14.000 righe di un servizio interno da Pydantic v1 a v2 in 31 ore effettive, suddivise in quattro sessioni. Il costo è stato di circa $44 con gpt-5.3-codex.

Il compito era formulato così: «migra da Pydantic v1 a v2, tutti i test pytest devono passare e mypy strict deve segnalare zero errori».

Cos'è successo:

  • Sessione 1 (8 ore): Codex ha analizzato gli import, riscritto le dichiarazioni BaseModel e configurato mypy
  • Sessione 2 (10 ore): ha riscritto i validatori e fatto fallire circa 200 test
  • Sessione 3 (7 ore): ha corretto i test e individuato dipendenze circolari
  • Sessione 4 (6 ore): ha risolto gli errori mypy e le regressioni rimasti

Costo in token:

«Tempo totale trascorso: circa 31 ore in quattro sessioni. Costo totale dei token Codex alle tariffe di gpt-5.3-codex: circa $44.»

Il prezzo è determinato soprattutto dai token di output di gpt-5.3-codex, a una tariffa di $14 per milione. Ciò significa che 31 ore di lavoro autonomo costano più o meno quanto settimane di abbonamento ChatGPT Plus.

Cosa non ha fatto l'agente da solo:

  • Non ha scritto la documentazione di migrazione per il team (Codex non ha capito che facesse parte della «migrazione»)
  • Non ha aggiornato i file di configurazione per pubblicare con la nuova versione di Pydantic
  • Gli è sfuggita una regressione in produzione, rilevata solo un giorno dopo

In altre parole, /goal ha svolto il 95% del lavoro; il 5% restante va ancora fatto a mano. È normale per la generazione attuale e non è un motivo per non usarlo.

14 ore notturne su un driver macOS

Quali compiti sono adatti a lunghe esecuzioni notturne

Punti chiave

I driver, come categoria di compiti, sono poco adatti al lavoro interattivo ma perfetti per cicli di lunga durata.

I tipi di compiti in cui questo approccio offre i maggiori vantaggi:

  • Lavoro di basso livello in cui un'iterazione e una verifica richiedono minuti (compilazione, esecuzione dei test)
  • Migrazioni con criteri formali chiari (tipi, test, lint)
  • Benchmark e ottimizzazioni con risultati misurabili
  • Documentazione e changelog con una struttura chiara

Claude /goal fa altrettanto bene, ma per i driver si sceglie più spesso Codex perché controlla direttamente file e log invece di affidarsi a un valutatore esterno.

Quanto costa e come evitare di esaurire i token durante la notte?

Punti chiave

/goal non ha un limite massimo di spesa rigido: valgono solo i limiti del tuo piano. Un'ora effettiva di Codex costa circa $1,50–$3 con gpt-5.3-codex. Claude costa di più in esecuzione e meno in valutazione. L'unica protezione è scrivere «oppure fermati dopo N turni» direttamente nella condizione.

Dati tratti da resoconti pubblici:

EsecuzioneDurataTokenCosto
Demo dello strumento di progettazione OpenAI25 ore13M(esecuzione interna)
Pydantic v1→v231 ore, 4 sessioni~3,1M in output~$44
Sistema di interviste vocali6 ore e 44 minuti in totale (41 minuti di calcolo)6,8 milioni in input, 94% nella cache-
Test rapido dei font5 minuti188.832meno del 5% della quota settimanale

La cosa principale da capire è che né Claude Code né Codex forniscono un limite rigido del tipo «smetti di spendere a $N». Ci sono tre protezioni:

  1. Limiti dell'abbonamento: Pro, Max o Enterprise. Con il piano Max di Anthropic ($100 al mese), un'esecuzione notturna di 14 ore rientra nella quota settimanale con ampio margine
  2. Limite di testo nella condizione: scrivi «oppure fermati dopo 20 turni» direttamente in /goal. Il giudice Claude lo leggerà e chiuderà l'obiettivo
  3. Limite di token in Codex: meccanismo integrato che inserisce budget_limit.md quando i token si esauriscono

Cosa fa lievitare il conto durante la notte:

  • Un criterio vago come «rendilo più comodo»: l'agente non si fermerà mai, perché il valutatore non sa cosa significhi «meglio»
  • Accesso ad API esterne senza stub: ogni nuovo tentativo costa token
  • Contesto lungo: dopo 6,7M di token interviene la compattazione del contesto e parte della memoria viene persa

Per saperne di più su come risparmiare, leggi le guide dove vanno a finire i token di Claude Code e come non esaurire i propri limiti.

Quando NON eseguire /goal: 5 situazioni

Punti chiave

Criteri vaghi come «fai in modo che abbia un bell'aspetto», modifiche di una riga, database di produzione con dati degli utenti, modifiche critiche per la sicurezza e compiti con dipendenze esterne poco chiare. In tutte e cinque le situazioni, l'agente finirà in un ciclo oppure consumerà token inutilmente.

La documentazione di OpenAI spiega esplicitamente cosa NON fare:

  1. Modifiche di una riga: usare /goal per rinominare una variabile costa più che farlo a mano
  2. Obiettivi vaghi: «migliora le prestazioni», «rendi il codice più pulito», «rendilo più comodo». Il valutatore non ha un criterio, quindi l'agente girerà a vuoto per sempre
  3. Database di produzione con dati degli utenti: l'agente potrebbe compromettere una migrazione e ripristinare da un backup costa più di qualsiasi risparmio
  4. Modifiche di sicurezza: autenticazione, crittografia, elaborazione dei pagamenti. Qui una persona deve esaminare ogni commit
  5. API esterne senza stub: ogni errore di rete costa token ed è fuori dal tuo controllo

Cosa fare se l'agente si blocca?

Punti chiave

Un segnale di ciclo è che l'agente modifica lo stesso punto per 3–4 turni e poi annulla le modifiche. Interrompilo con Ctrl+C, controlla il log, poi rendi il criterio più rigoroso oppure restringi il compito a un solo pezzo. In Claude è utile /goal clear; in Codex, usa /goal pause e modifica la condizione.

Come individuare rapidamente un ciclo:

  • L'agente tocca gli stessi file per 3+ turni e li riporta allo stato precedente
  • Nel log ricompaiono errori a cui ha già risposto
  • A te sembra che la condizione sia soddisfatta, ma l'agente dice «non soddisfatta»
  • L'uso di token per turno aumenta, ma il codice non progredisce

Cosa fare dopo:

  • In Claude Code: /goal clear, poi rendi la condizione più specifica
  • In Codex: /goal pause, esamina il thread corrente, modifica la condizione con /goal edit, poi /goal resume
  • In entrambi: controlla che il criterio sia effettivamente verificabile (un comando restituisce exit 0 o produce un output specifico)

Spesso la causa del ciclo è il compito stesso, non l'agente. La condizione «tutti i test passano» presuppone che i test possano passare. Se il codice presenta un problema architetturale profondo, l'agente continuerà a girare intorno al sintomo.

Criteri di «completamento»: disciplina dei compiti per /goal

Punti chiave

Un buon criterio è un comando che restituisce exit 0 o un output specifico. «Tutti i test sono passati» funziona. «Il codice è più pulito» no. È meglio combinare un controllo formale con una metrica misurabile, per esempio test più copertura minima.

OpenAI enuncia chiaramente questa regola nel suo Codex Cookbook ufficiale:

Un obiettivo non è considerato completo solo perché il modello pensa che lo sia. È completo soltanto quando il risultato è stato verificato rispetto a file, test, log, benchmark o altri artefatti concreti.

— OpenAI Codex Cookbook, Usare Goals in Codex, https://developers.openai.com/cookbook/examples/codex/using_goals_in_codex

Modelli di criteri che funzionano davvero:

Tipo di criterioCome formularlo
Test«pytest tests/ restituisce exit 0 e la copertura è almeno dell'80%»
Tipi«mypy strict segnala zero errori in src/»
Lint«eslint . restituisce exit 0 su tutti i file modificati»
Build«npm run build termina correttamente, senza errori TypeScript»
Benchmark«k6 run perf test mostra p95 sotto i 200 ms»
Diff«git diff mostra modifiche solo nei file X, Y, Z»
Combinato«pytest è verde E mypy strict segnala zero errori E ruff check passa»

La riga Combo combina test, mypy e lint. Se anche uno solo dei controlli è ancora rosso, l'obiettivo non è chiuso. Il valutatore non ha modo di barare.

Antimodelli:

  • «Il codice è migliore»
  • «L'usabilità è migliorata»
  • «Le prestazioni sono migliorate»
  • «La documentazione è completa»

La differenza tra «funziona» e «non funziona» sta nella verificabilità. Se un criterio non può essere controllato con un comando, non può essere controllato affatto. Questo è anche ciò che OpenAI intende per «coerenza a lungo termine»: un agente può ragionare a lungo, ma non può decidere da solo cosa sia «abbastanza buono».

Puoi provare l'idea «un prompt, un risultato» su un progetto reale: imposta /goal, formula un criterio, eseguilo e analizza cosa è andato storto.

Scopri Ailoot.

Maggiori dettagli

Domande frequenti

Cosa rende utile un criterio di completamento per /goal?

Indica un risultato verificabile: test, controllo dei tipi, build o benchmark con l’esito richiesto. Combina esplicitamente le verifiche necessarie e specifica i file consentiti. «Migliora il progetto» non offre un punto di arresto misurabile.

Cosa faccio se l’agente ripete le stesse modifiche fallite?

Interrompi l’esecuzione ed esamina il log. Se continua a modificare e ripristinare gli stessi file, restringi l’attività o rendi più preciso il criterio. Prima di riprendere verifica che i controlli richiesti possano effettivamente riuscire.

Tutti gli articoli