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:
| Comando | Mostra |
|---|---|
/memory | Quali file CLAUDE.md e rules sono stati caricati, più voci di memoria automatica |
/skills | Skills disponibili da fonti di progetto, utente e plugin |
/agents | Subagenti configurati e le loro impostazioni |
/hooks | Configurazioni di hook attive |
/mcp | Server MCP connessi e il loro stato |
/permissions | Regole di consentimento e negazione risolte attualmente in vigore |
/doctor | Diagnostica della configurazione: chiavi non valide, errori di schema, salute dell’installazione |
/status | Fonti di impostazioni attive, incluso se le impostazioni gestite sono in vigore |
/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.jsonrichiedono 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 incommandoargssono 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, eseguiclaude --debug mcpper vedere l’output stderr del server.
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:| Sintomo | Causa | Soluzione |
|---|---|---|
| Hook non si attiva mai | matcher è un array JSON invece di una stringa | Usa una singola stringa con | per corrispondere a più strumenti, ad esempio "Edit|Write". Vedi matcher patterns. |
| Hook non si attiva mai | Il 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 mai | Gli hooks sono in un file .claude/hooks.json autonomo | Non 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 ignorati | La 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 ignorato | La stessa chiave è impostata in settings.local.json | settings.local.json sostituisce settings.json, e entrambi sostituiscono ~/.claude/settings.json. Vedi settings precedence. |
Skill non appare in /skills | Il file di skill è in .claude/skills/name.md invece che in una cartella | Usa una cartella con SKILL.md dentro: .claude/skills/name/SKILL.md. |
Skill appare in /skills ma Claude non la invoca mai | Skill ha disable-model-invocation: true nel suo frontmatter, o la sua descrizione non corrisponde a come formuli la richiesta | Controlla 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 ignorate | I file della sottodirectory si caricano su richiesta, non all’inizio della sessione | Si 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.md | I subagenti non sempre ereditano la memoria del progetto | Metti 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 sessione | Nessun hook SessionEnd configurato | SessionStart e SessionEnd esistono entrambi. Vedi l’elenco degli eventi di hook. |
I server MCP in .mcp.json non si caricano mai | Il file è sotto .claude/ o utilizza il formato di configurazione di Claude Desktop | La 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 appare | Il prompt di approvazione una tantum è stato chiuso | I server con ambito di progetto richiedono approvazione. Esegui /mcp per vedere lo stato e approvare. |
| Il server MCP non riesce ad avviarsi da alcune directory | command o args utilizza un percorso di file relativo | Usa 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 previste | Le variabili sono in settings.json env, che non si propaga ai processi figlio MCP | Imposta invece env per server in .mcp.json. |
La regola di negazione Bash(rm *) non blocca /bin/rm o find -delete | Le regole di prefisso corrispondono alla stringa di comando letterale, non all’eseguibile sottostante | Aggiungi 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:- Riferimento della directory
.claude: ogni posizione del file di configurazione e cosa lo legge - Settings: ordine di precedenza e l’elenco completo delle chiavi
- Riferimento degli hooks: nomi degli eventi, payload e formato di output
--debug hooks - MCP: configurazione del server, approvazione e output
/mcp - Troubleshooting:
claude doctor, problemi di piattaforma e problemi di installazione