Come scrivere AGENTS.md perché Codex capisca le regole del tuo progetto

"La guida ufficiale OpenAI Codex su AGENTS.md serve a verificare ordine di lettura globale, di progetto e di sottodirectory, override, fallback, limite di dimensione e comando di verifica."
Ogni volta che Codex modifica il codice e dice “fatto”, lanci pnpm test e scopri che i test non sono mai partiti. Oppure, nella radice di un monorepo, esegue i test del package sbagliato. Ripetere ogni volta queste istruzioni stanca: npm run build, pnpm test, non toccare generated, prima di chiudere esegui lint. AGENTS.md serve proprio a scrivere queste regole dentro il progetto, così la seconda volta Codex non deve chiedertele di nuovo.
Se hai appena completato la guida introduttiva a Codex e alla scelta dell’interfaccia, il passo successivo non è chiedergli di rifattorizzare tutto il progetto. Prima conviene fissare le istruzioni che ripeti a voce.
Partiamo da uno scheletro seme da 12-20 righe, poi vediamo il caricamento a tre livelli, come verificare che funzioni, cosa non va scritto, come convivere con CLAUDE.md o Cursor Rules e quando aggiornarlo.
AGENTS.md non è README: è il manuale di lavoro persistente di Codex
README.md è scritto per lettori umani: spiega cos’è il progetto, come installarlo e come iniziare. AGENTS.md è scritto per Codex e contiene le regole caricate a ogni avvio: come fare build, come testare, quali directory non toccare e cosa controllare prima di dire che il lavoro è finito.
Secondo la documentazione ufficiale OpenAI, Codex legge AGENTS.md prima di iniziare a lavorare e lo usa come parte del contesto. Non è come ripetere ogni volta in chat “npm run build” o “pnpm test”: AGENTS.md è una guida persistente del progetto.
C’è però un confine da chiarire: AGENTS.md non è un sistema di memoria a lungo termine e non è una knowledge base che impara da sola. È solo un file statico caricato a ogni avvio. Se vuoi accumulare conoscenza tra sessioni o gestire memoria di progetto, puoi leggere la guida precedente sulla memoria degli agenti IA, dove separo memoria a lungo termine e regole di progetto.
Come Codex trova il tuo AGENTS.md: caricamento a tre livelli
L’ordine di lettura di Codex si capisce in tre livelli: globale, progetto e merge. Capire questo meccanismo aiuta a capire dove una regola ha effetto e perché a volte sembra non funzionare.
Livello globale: le tue abitudini personali
Codex prima cerca file nella tua directory utente ~/.codex. Questo livello contiene abitudini personali, per esempio lingua di risposta, preferenze di stile o strumenti che usi spesso. Attenzione: il livello globale legge al massimo un file, nell’ordine AGENTS.override.md -> AGENTS.md, e non li somma.
Livello progetto: scansione dalla radice Git alla directory corrente
Il livello progetto scansiona dalla radice Git, o dalla radice del progetto, fino alla directory di lavoro corrente. Anche a ogni livello legge al massimo un file, nell’ordine AGENTS.override.md -> AGENTS.md -> fallback filenames. I nomi fallback si possono configurare con project_doc_fallback_filenames, per esempio aggiungendo TEAM_GUIDE.md; il nome esatto dell’opzione va trattato come parte della documentazione ufficiale.
Ordine di merge: più è vicino, più è specifico
Tutti i file trovati vengono concatenati dalla radice alla directory corrente. Più un file è vicino alla directory corrente, più tardi appare nel contesto; per Codex, la regola locale diventa più facile da privilegiare.
Esempio: nella radice di un monorepo c’è AGENTS.md con “il comando di test è pnpm test”; in apps/web/AGENTS.md c’è “il comando di test è pnpm --filter web test”. Se avvii Codex in apps/web, l’ordine letto è: regole di radice -> regole di apps/web. Il comando di apps/web è più specifico.
Riepilogo dei tre livelli
| Livello | Ambito del percorso | Priorità dei file | Uso consigliato |
|---|---|---|---|
| Globale | ~/.codex/ | AGENTS.override.md -> AGENTS.md (al massimo un file) | Abitudini personali, non committate nel repo |
| Progetto | Radice Git -> directory corrente | Per ogni livello: AGENTS.override.md -> AGENTS.md -> fallback, al massimo un file | Regole condivise in radice, regole speciali nelle sottodirectory |
| Merge | Dalla radice alla directory corrente | I file più vicini compaiono dopo e sono più specifici | Nei monorepo, regole di package che raffinano quelle comuni |
Consiglio: metti nella radice le regole condivise dal team e nelle sottodirectory i requisiti speciali, per esempio un package con un comando di test diverso. AGENTS.override.md è utile per override temporanei o locali; non trasformarlo nello standard del team, altrimenti le regole restano nascoste e collaborare diventa più fragile.
Template minimo: quali 6 blocchi scrivere per primi?
OpenAI consiglia di trattare AGENTS.md come un “open-format README for agents”. Il punto è scriverlo corto, reale e verificabile. Non copiare subito un template da 300 righe trovato online: parti da 6 blocchi base e aggiungi solo quando serve.
Lo scheletro seme contiene questi 6 blocchi:
- repo layout: stack e struttura delle directory, così Codex sa dove stanno frontend, backend e test
- Commands: comandi esatti di build, test e lint; scrivi
pnpm test, non “esegui i test” - Constraints: directory o azioni da evitare, per esempio
src/generated/ - PR expectations: cosa controllare prima di aprire o chiudere una modifica
- Done when: criteri verificabili di completamento, per esempio
pnpm testepnpm build - Eventuali convenzioni speciali, come package manager, stile di codice o naming
Per una dashboard SaaS, un seme può essere così:
# AGENTS.md
## Repo layout
- Frontend: React + TypeScript + Vite (src/)
- Backend: Node.js + NestJS (server/)
- Database: PostgreSQL
- Package manager: pnpm
## Commands
- Install: pnpm install
- Dev: pnpm dev
- Build: pnpm build
- Test: pnpm test
- Lint: pnpm lint
## Constraints
- Do NOT edit src/generated/ (auto-generated code)
- Do NOT commit migrations/ without team review
## PR expectations
- Add tests for new features
- Run `pnpm test` before marking done
## Done when
- `pnpm test` passes
- `pnpm build` succeeds
Questo template è abbastanza corto da non sporcare il contesto. Parti da questi 6 blocchi e amplia quando emerge un problema ripetuto. Non infilare subito visione di prodotto, liste di dipendenze, diagrammi di architettura o indici delle API docs: un file enorme seppellisce le regole davvero importanti.
Come confermare che Codex abbia davvero letto AGENTS.md
Dopo aver scritto AGENTS.md, puoi usare un comando di verifica. Il comando consigliato dalla documentazione OpenAI è:
codex --ask-for-approval never "Summarize the current instructions."
Questo comando fa riassumere a Codex le istruzioni caricate. Se l’output contiene le tue regole, per esempio il comando di test o la directory da non toccare, allora sta funzionando. Se non compare nulla, o compaiono regole diverse, devi fare debug della catena di caricamento.
Checklist di diagnosi
| Controllo | Causa probabile | Soluzione |
|---|---|---|
| Maiuscole del nome file | Il file non si chiama AGENTS.md, per esempio Agent.md o agents.md | Rinominalo in AGENTS.md, con A maiuscola e suffisso tutto maiuscolo |
| Versione troppo vecchia | Versioni precedenti hanno avuto problemi con symlink, NFS o percorsi montati; il confine preciso dipende dalla versione documentata | Aggiorna Codex |
| Percorso mascherato | Il progetto è sotto symlink, mount NFS o bind mount e questo interferisce con la discovery | Controlla che Codex parta dal percorso reale; se serve, avvialo direttamente dal percorso fisico |
| Override in vantaggio | AGENTS.override.md o una regola di sottodirectory sovrascrive quella attesa | Controlla la directory corrente e quella globale per file override |
| Limite di dimensione | Il file supera il limite predefinito, indicato dalla documentazione come 32 KiB | Riduci il file, elimina liste deperibili e spiegazioni lunghe |
| Directory di avvio sbagliata | Codex parte da una directory fuori dal repo o dal package previsto | Conferma la working directory o usa --cd |
Se dopo la diagnosi continua a non funzionare, consulta la documentazione OpenAI Custom instructions o aggiorna Codex. Non fidarti dell’idea che “funzioni per forza”: percorso, versione, configurazione e directory corrente contano.
Cosa non dovrebbe finire in AGENTS.md
AGENTS.md non è un magazzino universale. Alcune cose portano rischi di sicurezza, manutenzione o rumore nel contesto, quindi vanno tenute fuori.
1. Segreti, API key e password di produzione
Sono un rischio di sicurezza. Nessun segreto, password di produzione o API token dovrebbe stare in AGENTS.md. Codex legge il file nel contesto e il file può essere visto dal team o finire in Git. Usa variabili d’ambiente, file .env non committati o un sistema dedicato di secrets. Se ti serve che Codex usi secrets in una sandbox, quello è un problema di livello di esecuzione.
2. Liste grandi che invecchiano
Sono un rischio di manutenzione. Non scrivere liste di dipendenze, numeri di ecosistema, prezzi, quote o campi che cambiano spesso. Una lista tipo “React 18.2, Vue 3.4, TypeScript 5.0…” sarà vecchia in pochi mesi. Scrivi il processo per aggiungere una dipendenza, non l’inventario completo.
3. Slogan astratti
Non sono eseguibili. Frasi come “mantieni alta qualità”, “scrivi codice elegante” o “assicurati che il codice sia manutenibile” non danno a Codex un’azione concreta. Sostituiscile con criteri: pnpm test passa, pnpm lint non segnala errori, le nuove funzionalità hanno test, Lighthouse resta sopra la soglia concordata.
4. Comandi vaghi
Sono troppo imprecisi. “Esegui qualche test” o “controlla la build” non basta. Scrivi comandi esatti: pnpm test, pnpm build o lighthouse --preset=desktop.
5. Requisiti non verificabili
Non hanno una chiusura chiara. “Garantire prestazioni migliori” o “migliorare la UX” non definisce un criterio di accettazione. Usa controlli misurabili, per esempio una API sotto 200 ms o un obiettivo Lighthouse.
6. Preferenze personali nella radice del repo
“Rispondi in cinese”, “risposte sotto 100 parole” o “usa VSCode di default” sono preferenze personali, non regole condivise del progetto. Metterle in ~/.codex/AGENTS.md va bene; la radice del repo dovrebbe contenere standard del team.
Principio: corto, reale, verificabile. AGENTS.md serve a ridurre le spiegazioni ripetute, non a incollare tutta la documentazione del progetto.
Se hai già CLAUDE.md o Cursor Rules, serve AGENTS.md?
Se usi Claude Code o Cursor, nel repository potresti già avere CLAUDE.md o Cursor Rules. Non serve mantenere tre copie della stessa cosa: usa import o coesistenza.
AGENTS.md vs CLAUDE.md: strategia di import
Claude Code legge CLAUDE.md, non AGENTS.md. Se il repo ha già AGENTS.md, puoi creare un CLAUDE.md minimale che lo importa:
@AGENTS.md
## Claude-specific
- Prefer Chinese responses
- Keep responses concise (under 100 words unless requested)
@AGENTS.md è la sintassi di import. Claude Code legge prima AGENTS.md e poi la sezione Claude-specific. Così le regole di progetto restano in AGENTS.md, mentre le preferenze specifiche di Claude restano in CLAUDE.md.
AGENTS.md vs Cursor Rules: Cursor ha il suo sistema
Cursor ha un sistema di Rules proprio: Project, Team e User Rules. La documentazione ufficiale di Cursor e alcuni riassunti citano il supporto ad AGENTS.md, ma i dettagli di caricamento vanno verificati nella documentazione attuale di Cursor. Se usi sia Cursor sia Codex, metti le regole comuni in AGENTS.md e lascia configurazioni o workflow specifici di Cursor nelle Cursor Rules.
AGENTS.md vs config.toml, Rules, Skills e MCP
AGENTS.md è il livello di istruzioni: dice a Codex “come dovrebbe lavorare”. Il livello di esecuzione, cioè permessi, sandbox, policy dei comandi e integrazioni degli strumenti, vive altrove.
| Confronto | AGENTS.md | Altro meccanismo | Differenza |
|---|---|---|---|
.codex/config.toml | Regole di progetto: build, test, directory da evitare | Configurazione di esecuzione: modello, sandbox, permessi, rete, shell environment | Regole in AGENTS.md, configurazione di esecuzione in config.toml; non vanno confuse |
| Rules | Indicazioni come “non eseguire comandi pericolosi” | Policy di comando come prefix_rule(pattern=["rm","-rf"], decision="forbidden") | Una regola scritta in un file non è un blocco di esecuzione |
| Skills | Regole di progetto sempre utili | Workflow riutilizzabili con script e reference | Regole permanenti in AGENTS.md, workflow complessi in Skills |
| MCP | Livello di istruzioni | Livello di integrazione strumenti | AGENTS.md non sostituisce MCP; istruzioni e strumenti restano separati |
In sintesi: AGENTS.md risolve il problema delle regole ripetute del progetto; Rules, config, sandbox e permessi controllano l’esecuzione; Skills incapsula workflow riutilizzabili; MCP collega strumenti esterni. Tenere chiari questi confini evita confusione.
Quando aggiornare AGENTS.md
AGENTS.md non va modificato a ogni cambiamento del progetto. Aggiornalo per scenari ricorrenti, così non diventa un file da mantenere continuamente.
Trigger di aggiornamento
La documentazione OpenAI consiglia di aggiornarlo in questi casi:
-
Codex ripete lo stesso errore: per esempio modifica due volte la directory sbagliata, oppure lancia sempre i test del package sbagliato. Aggiungi una constraint concreta: “Do NOT edit src/generated/” oppure “usa
pnpm --filter web test”. -
La PR review ripete lo stesso commento: il team continua a chiedere “questa modifica richiede test”, “non modificare generated code”, “evita default export”. Metti quel pattern nelle PR expectations.
-
Codex deve leggere troppi documenti per trovare la risposta: se ogni volta deve scavare in più livelli per trovare il comando di test o il flusso di build, aggiungi repo layout o Commands e porta le informazioni essenziali più in alto.
Principio della directory più vicina
Metti la regola nel livello in cui nasce l’errore. Non modificare sempre la radice; in un monorepo package diversi hanno regole diverse e possono mantenere AGENTS.md locali.
Se Codex lancia il test sbagliato lavorando in apps/web, aggiungi la regola in apps/web/AGENTS.md. Una regola in radice rischia di applicarsi troppo ampiamente.
Differenza rispetto alla memoria a lungo termine
AGENTS.md è un file statico caricato all’avvio. Non è una memoria che apprende automaticamente. Codex non aggiorna AGENTS.md a partire dalle tue correzioni, a meno che tu non glielo chieda esplicitamente.
Se ti serve conoscenza tra sessioni o governance della memoria, la guida sulla memoria degli agenti IA è il riferimento successivo.
Percorso di crescita del template: dal seme alla versione estesa
Non partire con un template da 300 righe. Inizia con 12-20 righe e amplia solo quando compare un trigger concreto.
Versione seme: solo i 6 blocchi essenziali
La versione seme copre repo layout, comandi comuni, constraints, PR expectations e done/verify. Può essere così piccola:
# AGENTS.md
## Repo layout
- Frontend: React + TypeScript + Vite (src/)
- Backend: Node.js + NestJS (server/)
- Package manager: pnpm
## Commands
- Install: pnpm install
- Dev: pnpm dev
- Build: pnpm build
- Test: pnpm test
- Lint: pnpm lint
## Constraints
- Do NOT edit src/generated/ (auto-generated code)
## PR expectations
- Add tests for new features
## Done when
- `pnpm test` passes
- `pnpm build` succeeds
Trigger di espansione: quando aggiungere un blocco?
Dopo qualche esecuzione, amplia solo per problemi concreti:
-
La prima volta che Codex modifica la directory sbagliata: se tocca
migrations/ogenerated/, aggiungi in Constraints “Do NOT commit migrations/ without team review” oppure “Do NOT edit any file in src/generated/”. -
La prima nota ripetuta in PR review: se i reviewer chiedono spesso test o named exports, aggiungi “Add tests for new features” oppure “Use named exports, not default exports”.
-
Il primo errore con il package manager: se in un progetto pnpm arrivano comandi npm, aggiungi “Always use pnpm, not npm or yarn”.
-
La prima dimenticanza del lint: se Codex chiude senza lint, aggiungi “
pnpm lintpasses with no errors” sotto Done when.
Versione estesa: 30-50 righe
Una versione estesa può aggiungere constraints, PR expectations, regole sul package manager e requisiti di lint:
# AGENTS.md
## Repo layout
- Frontend: React + TypeScript + Vite (src/)
- Backend: Node.js + NestJS (server/)
- Package manager: pnpm
## Commands
- Install: pnpm install
- Dev: pnpm dev
- Build: pnpm build
- Test: pnpm test
- Lint: pnpm lint
- Always use pnpm, not npm or yarn
## Constraints
- Do NOT edit src/generated/ (auto-generated code)
- Do NOT commit migrations/ without team review
- Do NOT modify .env files (use .env.example as template)
## PR expectations
- Add tests for new features
- Run `pnpm test` and `pnpm lint` before marking done
- Use named exports, not default exports
- Keep components under 200 lines; split if larger
## Done when
- `pnpm test` passes
- `pnpm build` succeeds
- `pnpm lint` passes with no errors
- New features have corresponding tests
Il principio è questo: crescere per trigger, non per anticipazione. AGENTS.md vale perché riduce istruzioni ripetute, non perché mostra tutta la documentazione del progetto.
Conclusione
AGENTS.md è una guida persistente del progetto, non un magazzino universale e non un sistema di memoria a lungo termine. Risolve il problema del “devo ripetere sempre le stesse regole” quando Codex inizia a lavorare.
Passi pratici:
-
Parti da un seme di 12-20 righe: repo layout, comandi, constraints, PR expectations e done/verify. Non iniziare con un template enorme.
-
Verifica che Codex lo abbia caricato: esegui
codex --ask-for-approval never "Summarize the current instructions."e controlla che la risposta contenga le tue regole. -
Amplia per trigger ripetuti: Codex ripete un errore, la PR review ripete una nota o Codex deve leggere troppi documenti per trovare l’informazione.
-
Tieni fuori ciò che è pericoloso o deperibile: niente segreti, inventari che invecchiano, slogan, comandi vaghi, obiettivi non verificabili o preferenze personali nella radice.
-
Usa import e coesistenza con CLAUDE.md o Cursor Rules: regole condivise in AGENTS.md, comportamenti specifici nei file di ciascuno strumento.
AGENTS.md dà a Codex un contesto di progetto stabile. I prossimi articoli della serie Codex possono spostare workflow ripetibili in Skills, trattare limiti di permessi e segreti, e rendere done/verify più affidabile con failure review e PR checks.
Creare un AGENTS.md mantenibile per Codex
Usa un template minimo, regole per directory e un comando di verifica per trasformare build, test, limiti e criteri di completamento ripetuti in regole che Codex può caricare.
⏱️ Estimated time: 30 min
- 1
Step 1: Crea AGENTS.md nella radice del repository
Inizia con una frase sul progetto, il gestore di pacchetti, le directory chiave e i comandi abituali di test, lint e build. - 2
Step 2: Aggiungi i confini dove Codex sbaglia più spesso
Scrivi condizioni concrete per directory generated, script di migrazione, configurazione di produzione o upgrade di dipendenze che non vanno toccati senza revisione. - 3
Step 3: Definisci il Done when
Elenca i controlli da eseguire prima di chiudere e chiedi di spiegare il motivo quando un controllo non viene eseguito. - 4
Step 4: Aggiungi regole locali per sottodirectory speciali
In un monorepo, metti AGENTS.md locali sotto apps, services o packages, così i comandi specifici del package compaiono più tardi nella catena di istruzioni. - 5
Step 5: Chiedi a Codex di riassumere le istruzioni correnti
Esegui il prompt di verifica e controlla che Codex abbia caricato le regole globali, di progetto e di sottodirectory attese. - 6
Step 6: Mantienilo a piccoli passi quando un errore si ripete
Quando Codex ripete lo stesso errore o una PR review ripete la stessa nota, aggiungi una sola regola concreta e verificabile.
FAQ
Qual è la differenza tra AGENTS.md e README.md?
Codex può leggere più AGENTS.md?
Quanto dovrebbe essere lungo AGENTS.md?
Posso mettere segreti o credenziali di deployment in AGENTS.md?
Come verifico che Codex abbia davvero letto AGENTS.md?
Se ho già CLAUDE.md o Cursor Rules, mi serve ancora AGENTS.md?
14 min di lettura · Pubblicato il: 26 giu 2026 · Aggiornato il: 1 lug 2026
Guida pratica a OpenAI Codex
Se arrivi dalla ricerca, il modo più veloce per orientarti è passare all’articolo precedente o successivo della stessa serie.
Precedente
Come usare Codex: guida completa per iniziare con CLI, estensione IDE, Codex Cloud e app desktop
Scegli il punto di ingresso giusto per OpenAI Codex, capisci differenze tra CLI, estensione IDE, app desktop e web/cloud, e completa una prima piccola attività di coding in modo verificabile.
Parte 1 di 2
Successivo
Questo è l’articolo più recente della serie per ora.
Articoli correlati
female-portrait-director: trasformare i prompt per ritratti IA in uno Skill riutilizzabile

female-portrait-director: trasformare i prompt per ritratti IA in uno Skill riutilizzabile
ADHD: aggiungere ai Coding Agent un motore di ragionamento parallelo Tree-of-Thought


Commenti
Accedi con GitHub per lasciare un commento