Vai al contenuto principale
Quando Claude ignora un’istruzione o una funzione che hai configurato non appare, la causa è solitamente che il file non è stato caricato, è stato caricato da una posizione diversa da quella prevista, o un altro file l’ha sovrascritto. Questa guida mostra come ispezionare cosa Claude Code ha effettivamente caricato in modo da poter restringere quale situazione si applica. Per problemi di installazione, autenticazione e connettività, consulta invece Troubleshooting.

Vedi cosa è stato caricato nel contesto

Il comando /context mostra tutto ciò che occupa la finestra di contesto per la sessione corrente, suddiviso per categoria: prompt di sistema, file di memoria, skills, strumenti MCP e messaggi di conversazione. Eseguilo per primo per confermare se i tuoi CLAUDE.md, regole o descrizioni di skill sono presenti. Per dettagli su una categoria specifica, segui con il comando dedicato:
ComandoMostra
/memoryQuali file CLAUDE.md e rules sono stati caricati, più voci di memoria automatica
/skillsSkills disponibili da fonti di progetto, utente e plugin
/agentsSubagenti configurati e le loro impostazioni
/hooksConfigurazioni di hook attive
/mcpServer MCP connessi e il loro stato
/permissionsRegole di consentimento e negazione risolte attualmente in vigore
/doctorDiagnostica della configurazione: chiavi non valide, errori di schema, salute dell’installazione
/statusFonti di impostazioni attive, incluso se le impostazioni gestite sono in vigore
Se un file di memoria manca da /memory, controlla la sua posizione rispetto a come i file CLAUDE.md si caricano. I file CLAUDE.md della sottodirectory si caricano su richiesta quando Claude legge un file in quella directory con lo strumento Read, non all’inizio della sessione. Se /memory conferma che il file è stato caricato ma Claude ancora non segue una particolare istruzione, il problema è probabilmente come l’istruzione è scritta piuttosto che se è stata caricata. CLAUDE.md funziona bene per il tipo di guida che daresti a un nuovo collega, come convenzioni di progetto, comandi di compilazione e dove appartengono i file. L’aderenza diminuisce quando un’istruzione è abbastanza vaga da poter essere interpretata in più modi, quando due file danno indicazioni conflittuali, o quando il file è cresciuto abbastanza che le singole regole ricevono meno attenzione. Scrivi istruzioni efficaci copre i modelli di specificità, dimensione e struttura che mantengono l’aderenza alta.
CLAUDE.md e permissions risolvono problemi diversi. CLAUDE.md dice a Claude come funziona il tuo progetto in modo che prenda buone decisioni. Permissions e hooks applicano limiti indipendentemente da ciò che Claude decide. Usa CLAUDE.md per “lo facciamo così qui”. Usa permissions o hooks per confini di sicurezza e qualsiasi cosa che non deve mai accadere, dove hai bisogno di una garanzia invece di una guida.

Controlla le impostazioni risolte

Le impostazioni si uniscono tra gli ambiti gestiti, utente, progetto e locale. Le impostazioni gestite vincono sempre quando presenti. Tra il resto, l’ambito più vicino sostituisce quello più ampio nell’ordine locale, poi progetto, poi utente. Alcune impostazioni possono anche essere impostate da flag della riga di comando o variabili di ambiente, che agiscono come un altro livello di override. Quando un’impostazione non sembra applicarsi, il valore che hai impostato è solitamente sovrascritto da un altro ambito o da una variabile di ambiente. Esegui /doctor per convalidare i tuoi file di configurazione e far emergere chiavi non valide o errori di schema. Esegui /status per vedere quali fonti di impostazioni sono attive, incluso se le impostazioni gestite sono in vigore. Per capire quale ambito vince per una data chiave, vedi Come gli ambiti interagiscono.

Controlla i server MCP

Esegui /mcp per vedere ogni server configurato, il suo stato di connessione e se l’hai approvato per il progetto corrente. Un server può essere definito correttamente ma comunque non fornire strumenti per alcuni motivi comuni:
  • I server con ambito di progetto in .mcp.json richiedono un’approvazione una tantum. Se il prompt è stato chiuso, il server rimane disabilitato fino a quando non lo approvi da /mcp.
  • Un server che non riesce ad avviarsi appare come non riuscito in /mcp. I percorsi di file relativi in command o args sono una causa frequente, poiché si risolvono rispetto alla directory da cui hai lanciato Claude Code piuttosto che alla posizione di .mcp.json.
  • Un server che appare come connesso ma elenca zero strumenti si è avviato correttamente ma non sta restituendo un elenco di strumenti. Seleziona Reconnect da /mcp. Se il conteggio rimane a zero, esegui claude --debug mcp per vedere l’output stderr del server.
Per i percorsi di configurazione e le regole di ambito, vedi MCP.

Controlla gli hooks

Esegui /hooks per elencare ogni hook registrato per la sessione corrente, raggruppato per evento. Se un hook che hai definito non appare, non viene letto: gli hooks vanno sotto la chiave "hooks" in un file di impostazioni, non in un file autonomo. Se l’hook appare ma non si attiva, il matcher è la causa usuale. Il campo matcher è una singola stringa che usa | per corrispondere a più nomi di strumenti, ad esempio "Edit|Write". Un nome di strumento scritto male non riesce silenziosamente perché il matcher non corrisponde mai. Un valore di array è un errore di schema: Claude Code mostra un avviso di errore di impostazioni, /doctor segnala l’errore di convalida e la voce di hook viene eliminata in modo che non appaia in /hooks. Le modifiche a settings.json hanno effetto nella sessione in esecuzione dopo un breve ritardo di stabilità del file. Non è necessario riavviare. Se /hooks mostra ancora la definizione precedente alcuni secondi dopo il salvataggio, esegui /hooks di nuovo per aggiornare la visualizzazione. Se /hooks mostra l’hook ma comunque non si attiva, il passo successivo è guardare la valutazione dell’hook dal vivo. Avvia una sessione con claude --debug hooks e attiva la chiamata dello strumento. Il log di debug registra ogni evento, quali matcher sono stati controllati e il codice di uscita e l’output dell’hook. Vedi Debug hooks per il formato del log e troubleshooting degli hooks per i modelli di errore comuni.

Cause comuni

La maggior parte delle sorprese di configurazione risale a un piccolo insieme di regole di posizione e sintassi. Controlla questi prima di assumere un bug:
SintomoCausaSoluzione
Hook non si attiva maimatcher è un array JSON invece di una stringaUsa una singola stringa con | per corrispondere a più strumenti, ad esempio "Edit|Write". Vedi matcher patterns.
Hook non si attiva maiIl valore di matcher è minuscolo, ad esempio "bash"La corrispondenza è sensibile alle maiuscole. I nomi degli strumenti sono capitalizzati: Bash, Edit, Write, Read.
Hook non si attiva maiGli hooks sono in un file .claude/hooks.json autonomoNon esiste un file di hooks autonomo. Definisci gli hooks sotto la chiave "hooks" in settings.json. Vedi hook configuration.
Permissions, hooks o env impostati globalmente vengono ignoratiLa configurazione è stata aggiunta a ~/.claude.json~/.claude.json contiene lo stato dell’app e gli interruttori dell’interfaccia utente. permissions, hooks e env appartengono a ~/.claude/settings.json. Questi sono due file diversi.
Un valore di settings.json sembra ignoratoLa stessa chiave è impostata in settings.local.jsonsettings.local.json sostituisce settings.json, e entrambi sostituiscono ~/.claude/settings.json. Vedi settings precedence.
Skill non appare in /skillsIl file di skill è in .claude/skills/name.md invece che in una cartellaUsa una cartella con SKILL.md dentro: .claude/skills/name/SKILL.md.
Skill appare in /skills ma Claude non la invoca maiSkill ha disable-model-invocation: true nel suo frontmatter, o la sua descrizione non corrisponde a come formuli la richiestaControlla il badge in /skills: un’etichetta “user-only” significa che Claude non la attiverà da sola. Vedi skill invocation.
Le istruzioni di CLAUDE.md della sottodirectory sembrano ignorateI file della sottodirectory si caricano su richiesta, non all’inizio della sessioneSi caricano quando Claude legge un file in quella directory con lo strumento Read, non al lancio e non quando scrive o crea file lì. Vedi come i file CLAUDE.md si caricano.
Subagent ignora le istruzioni di CLAUDE.mdI subagenti non sempre ereditano la memoria del progettoMetti le regole critiche nel corpo del file dell’agente, che diventa il prompt di sistema del subagente. Vedi subagent configuration.
La logica di pulizia non viene mai eseguita alla fine della sessioneNessun hook SessionEnd configuratoSessionStart e SessionEnd esistono entrambi. Vedi l’elenco degli eventi di hook.
I server MCP in .mcp.json non si caricano maiIl file è sotto .claude/ o utilizza il formato di configurazione di Claude DesktopLa configurazione MCP del progetto va alla radice del repository come .mcp.json, non dentro .claude/. Vedi MCP configuration.
Server MCP del progetto aggiunto ma non appareIl prompt di approvazione una tantum è stato chiusoI server con ambito di progetto richiedono approvazione. Esegui /mcp per vedere lo stato e approvare.
Il server MCP non riesce ad avviarsi da alcune directorycommand o args utilizza un percorso di file relativoUsa percorsi assoluti per gli script locali. Gli eseguibili sul tuo PATH come npx o uvx funzionano così come sono.
Il server MCP si avvia senza le variabili di ambiente previsteLe variabili sono in settings.json env, che non si propaga ai processi figlio MCPImposta invece env per server in .mcp.json.
La regola di negazione Bash(rm *) non blocca /bin/rm o find -deleteLe regole di prefisso corrispondono alla stringa di comando letterale, non all’eseguibile sottostanteAggiungi modelli espliciti per ogni variante, o usa un PreToolUse hook o la sandbox per una garanzia difficile.

Risorse correlate

Per il riferimento completo su ogni superficie di configurazione, vedi la pagina dedicata: