# Claude Code non riesce a vedere i file del progetto: perché e cosa fare nel 2026

> Perché Claude Code non trova i file del progetto: è stato avviato dalla cartella sbagliata, il file si trova in una sottocartella oppure è in .gitignore. Come concedere l’accesso con add-dir, cd e le impostazioni.

Source: https://ailoot.ai/blog/it/claude-code-cant-see-project-files/
Canonical: https://ailoot.ai/blog/it/claude-code-cant-see-project-files/
Language: it
Publisher: Ailoot (https://ailoot.ai/)
Translation: guide-199
Revision: sha256-a4d7ee1e75c4b4bb2dc8aff29fe6e4a20d84a9efa5e62ceefa73cbc84b951fc7


Una situazione familiare: chiedi a Claude Code di correggere un file e lui risponde che quel file non esiste. Oppure modifica silenziosamente qualcosa di completamente diverso da ciò che intendevi. Apri la cartella: il file è lì, esattamente dove dovrebbe essere. Ma Claude sembra non accorgersene.

Quasi sempre c’è un solo motivo e non c’è nulla di rotto. Claude non vede i file dell’intero computer. Può accedere solo alla cartella da cui lo hai avviato. Avviarlo in una cartella sorella o sotto la radice del progetto può lasciare fuori file necessari. Partire da un genitore come Home dà invece un ambito più ampio e non rende inaccessibile un progetto discendente. Ti spiegherò passo dopo passo perché funziona così e come dare a Claude accesso ai file di cui ha bisogno. Riporto comandi e impostazioni direttamente dalla documentazione ufficiale di Claude Code, che ho consultato all’inizio di settembre 2026.

Altri materiali sulla configurazione degli strumenti sono disponibili nella [documentazione di Ailoot](https://ailoot.ai/docs/).

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Guide di Ailoot">

[Guide di Ailoot](https://ailoot.ai/docs/)

</div>

## Perché Claude Code non riesce a vedere alcuni file del progetto?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Claude Code legge i file non dall’intero disco, ma solo dalla cartella da cui lo hai avviato. Questa cartella si chiama directory di lavoro. Claude può vedere e leggere tutto ciò che contiene e le sue sottocartelle senza chiedere. Tutto ciò che si trova al di fuori, in una cartella vicina, un livello più in alto o su un altro disco, è inaccessibile finché non concedi l’accesso tu. Perciò il motivo più comune per cui un file «non è visibile» è semplice: hai avviato Claude da un’altra cartella. Per prima cosa, controlla esattamente da dove lo hai aperto.

</div>

Per impostazione predefinita, Claude Code lavora con una sola cartella: quella in cui hai inserito il comando `claude` e avviato la sessione. La documentazione lo dice chiaramente.

<figure>
<blockquote>
<p>Per impostazione predefinita, Claude ha accesso ai file della cartella da cui lo hai avviato.</p>
</blockquote>
<figcaption>— Documentazione Claude Code, Configurare le autorizzazioni, documentazione ufficiale</figcaption>
</figure>

Questa è la sua directory di lavoro. Al suo interno, Claude legge qualsiasi file senza altre domande: modificare un prompt, cercare nel codice, leggere un file specifico: funziona tutto subito. Ma tutto ciò che si trova al di fuori di questa cartella è inaccessibile per impostazione predefinita. Una cartella vicina, una cartella un livello più in alto, un altro disco: Claude non ci guarderà finché non glielo consentirai.

Una cartella di lavoro diversa può spiegare il problema. Se il progetto è `/Users/you/my-shop` ma avvii Claude in `/Users/you/other-project`, una cartella sorella, `index.html` di `my-shop` è fuori dall’albero di lavoro. Partire da `/Users/you` è diverso: `my-shop` è discendente e non è inaccessibile solo perché sei partito da Home, anche se il contesto selezionato è più ampio. Accedere a una cartella non significa neppure averne già letto ogni file.

Ora vedremo come controllare e risolvere il problema: prima verificheremo da quale cartella è stato avviato Claude, poi gli daremo accesso ai file di cui ha bisogno in modi diversi, da un’istruzione una tantum a un’impostazione permanente.

## Come puoi controllare da quale cartella è stato avviato Claude Code?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Chiedi a Claude in quale cartella si trova oppure chiedigli di mostrare la directory corrente con il comando `pwd`: controlla soltanto e non modifica nulla. Confronta il risultato con la posizione effettiva del progetto. Se i percorsi non corrispondono, ecco il motivo: Claude è stato avviato dalla cartella sbagliata. Una soluzione ancora più affidabile è chiudere la sessione e riavviare Claude direttamente dalla cartella del progetto: raggiungila nel terminale e inserisci `claude` lì.

</div>

Prima di correggere qualsiasi cosa, assicurati che il problema sia davvero la cartella. È facile controllare. Chiedi a Claude nella chat di mostrare la directory in cui si trova: eseguirà `pwd`, che è sicuro: il comando mostra solo il percorso e non tocca nulla.

```bash
pwd
```

La risposta mostra la directory di lavoro effettiva. Confrontala con il percorso completo del progetto: `/Users/you/other-project` è una cartella sorella di `/Users/you/my-shop`, mentre `/Users/you` è il genitore. Nel primo caso `my-shop` è fuori dall’albero di lavoro; nel secondo è incluso, ma non è scelto come radice specifica del progetto.

Il modo più semplice per risolvere questa discrepanza è avviare Claude direttamente dalla cartella del progetto. Chiudi la sessione corrente, raggiungi la cartella corretta nel terminale e avvia Claude da lì:

```bash
# Sostituisci il percorso illustrativo con la radice effettiva del progetto.
cd /Users/you/my-shop
claude
```

Ora `my-shop` sarà la cartella di lavoro e tutti i file del progetto saranno visibili. La stessa regola si applica a un editor come VS Code: apri la cartella che contiene il progetto. Non la cartella un livello più in alto e non l’intero disco. La cartella che apri determina ciò che Claude considera la sua directory di lavoro.

Se riavviare è scomodo, per esempio perché hai già fornito contesto a Claude in questa sessione e non vuoi perderlo, puoi aggiungere o cambiare cartella al volo. Le due sezioni successive spiegano come.

## Come puoi mostrare a Claude Code un file in una cartella vicina?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Senza riavviare la sessione, aggiungi la cartella che ti serve con il comando `/add-dir` direttamente nella chat: inserisci `/add-dir` e il percorso della cartella, e i suoi file saranno disponibili allo stesso modo di quelli della cartella principale. Per aprire l’accesso proprio all’avvio di Claude, aggiungi il flag `--add-dir` con un percorso al comando `claude`. E se vuoi che una cartella si apra automaticamente ogni volta, aggiungila con la chiave `additionalDirectories` nelle impostazioni. In tutti e tre i casi, i file della cartella aggiunta possono essere letti senza conferme separate.

</div>

A volte un progetto non è conservato in una sola cartella. Il codice si trova in un posto, le immagini o i testi in una cartella vicina e i componenti condivisi da qualche altra parte nelle vicinanze. È scomodo riavviare Claude ogni volta in una cartella diversa. È meglio dargli accesso alla cartella che gli serve mantenendo la cartella principale come directory di lavoro.

Il modo più semplice è farlo direttamente nella sessione attiva con il comando:

```
/add-dir ../assets
```

Inserisci `/add-dir` e il percorso della cartella, e Claude avrà subito accesso ai suoi file allo stesso modo di quelli nella cartella principale. Non ti chiederà di nuovo l’autorizzazione: la cartella aggiunta segue le stesse regole della directory di lavoro.

<figure>
<blockquote>
<p>I file nelle directory aggiuntive seguono le stesse regole di accesso della directory di lavoro principale: vengono letti senza chiedere.</p>
</blockquote>
<figcaption>— Documentazione Claude Code, Configurare le autorizzazioni, documentazione ufficiale</figcaption>
</figure>

Se sai già che lavorerai con più cartelle, apri l’accesso non appena Claude si avvia, usando lo stesso percorso ma con un flag:

```bash
claude --add-dir ../assets
```

E se hai bisogno sempre della stessa cartella vicina in un progetto, non occorre aggiungerla manualmente ogni volta. Il file delle impostazioni `settings.json` ha una chiave `additionalDirectories`. Elenca lì i percorsi e si apriranno automaticamente ogni volta che Claude si avvia:

```json
{
  "permissions": {
    "additionalDirectories": ["../assets", "../shared"]
  }
}
```

Una precisazione per Windows: non puoi aggiungere una cartella di rete usando un percorso come `\\server\shared`: Claude non accetta percorsi di questo tipo. Montala come unità separata con una lettera di unità, poi passa quella lettera con `--add-dir`. Le normali cartelle locali non hanno questo problema.

E se aggiungere una cartella vicina non basta e devi passare a un’altra cartella del tutto? C’è un comando apposito, illustrato qui sotto.

## Come puoi passare a un’altra cartella in Claude Code durante una sessione?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Il comando `/cd` cambia la cartella di lavoro principale senza chiudere la sessione: inserisci `/cd` e un percorso, e Claude si sposterà lì mantenendo intatta la cronologia della conversazione. Durante il passaggio, caricherà il file di istruzioni `CLAUDE.md` dalla nuova cartella e, se non ci hai mai lavorato prima, ti chiederà di confermare che ti fidi di essa. La differenza rispetto a `/add-dir` è che `/add-dir` apre una cartella vicina accanto a quella principale, mentre `/cd` sposta l’intera directory di lavoro in una nuova posizione. Il comando è disponibile a partire dalla versione 2.1.169.

</div>

A volte aggiungere una cartella vicina non basta: devi cambiare la cartella principale e passare a un altro progetto senza perdere il contesto che hai costruito. Usa il comando `/cd`:

```
/cd ../another-project
```

Da quel momento Claude considererà la nuova cartella come directory di lavoro. Conserverai l’intera cronologia della conversazione, ma il punto di riferimento che Claude usa per i file cambierà e sarà la nuova posizione. Claude caricherà anche il file di istruzioni `CLAUDE.md` dalla nuova cartella, se presente: in altre parole, si adeguerà alle regole del nuovo progetto.

Una cosa da sapere sulla fiducia: se non hai mai lavorato in questa cartella, quando ti sposti lì Claude ti chiederà se ti fidi. È una misura di sicurezza: un file di istruzioni in una cartella sconosciuta potrebbe contenere qualsiasi cosa, quindi Claude verifica prima che si tratti del tuo progetto. Conferma e poi continua.

La differenza tra i due comandi è semplice. `/add-dir` mantiene la cartella principale come directory di lavoro e apre una cartella vicina in aggiunta ad essa: è utile quando le parti di un progetto sono sparse in luoghi diversi. `/cd` sposta l’intera directory di lavoro in una nuova posizione: è utile quando passi a un altro progetto. Il comando `/cd` è stato introdotto nella versione 2.1.169, quindi se non è disponibile, aggiorna Claude Code. Ho una guida separata su [come aggiornare Claude Code](https://ailoot.ai/blog/it/update-claude-code/).

La visibilità dei file in Claude Code è solo il punto di partenza. Risultati stabili non dipendono soltanto dall’accesso ai file. Dipendono dal contenuto di quei file e da come costruisci il contesto attorno al progetto.

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Guide di Ailoot">

[Guide di Ailoot](https://ailoot.ai/docs/)

</div>

## Perché Claude Code non riesce a vedere un file in una sottocartella?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Le sottocartelle funzionano diversamente dalle cartelle vicine: Claude può accedervi, ma il loro contenuto non entra subito nel suo contesto. Claude carica i file di istruzioni e i contenuti delle sottocartelle su richiesta, quando li consulta. Non li carica all’avvio. Perciò un file in una sottocartella annidata a molti livelli può risultare «invisibile» finché non indichi direttamente a Claude il suo percorso. La soluzione è semplice: forniscigli il percorso esatto del file oppure chiedigli prima di leggerlo, e il file diventerà visibile.

</div>

È importante non confondere due situazioni diverse. Una cartella vicina, esterna al progetto, è completamente inaccessibile finché non la aggiungi. Una sottocartella all’interno del progetto è diversa: Claude può accedervi, ma non tiene a mente i suoi contenuti fin dall’inizio.

Ecco come funziona. Quando Claude si avvia, carica ciò che si trova ai livelli più alti del progetto. Carica i file delle sottocartelle su richiesta, quando vi accede per leggere qualcosa. La documentazione descrive questo comportamento per i file di istruzioni e la stessa logica si applica al contesto in generale.

<figure>
<blockquote>
<p>Claude individua i file nelle sottocartelle della directory di lavoro. Invece di caricarli all’avvio, li acquisisce quando legge file in quelle sottocartelle.</p>
</blockquote>
<figcaption>— Documentazione Claude Code, Gestire la memoria di Claude, documentazione ufficiale</figcaption>
</figure>

In parole semplici: il file nella sottocartella annidata a molti livelli non è scomparso ed è pienamente accessibile. Claude semplicemente non lo ha ancora memorizzato perché non lo ha consultato: questo spiega perché può sembrare che Claude «non riesca a vedere» un file anche se è lì ed è accessibile.

Puoi risolvere il problema in una riga. Fornisci direttamente a Claude il percorso del file, per esempio `src/components/header.jsx`, oppure chiedigli semplicemente di leggere prima il file. Non appena lo consulta, il file entrerà nel contesto e potrai lavorarci normalmente. Non è necessario cambiare alcuna impostazione.

## Dove spariscono i file dal menu @ e cosa c’entra .gitignore?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Quando digiti il simbolo `@`, Claude Code mostra un elenco di file tra cui scegliere. Per impostazione predefinita, questo elenco nasconde tutto ciò che è incluso in `.gitignore`: cartelle di servizio, file di ambiente, output di compilazione. Quindi un file può trovarsi esattamente al suo posto ma non comparire nel menu `@`. L’impostazione `respectGitignore` controlla questo comportamento: è attiva per impostazione predefinita e nasconde quei file. Impostala su `false` e il menu mostrerà anche i file elencati in `.gitignore`. Puoi sempre inserire manualmente il percorso di un file di questo tipo.

</div>

Un altro motivo comune per cui si pensa che Claude abbia «perso» un file è il selettore di file. Quando digiti `@`, compare un elenco che rende comodo selezionare un file senza digitarne il percorso completo. Ma l’elenco non mostra tutto.

Per impostazione predefinita, il menu `@` nasconde i file elencati in `.gitignore`. Quel file specifica cosa non dovrebbe essere aggiunto al repository condiviso: cartelle di servizio, file contenenti password e impostazioni di ambiente, e output di compilazioni completate. La logica è chiara: di solito non hai bisogno di lavorare manualmente con questi file, quindi ingombrerebbero soltanto l’elenco. Ma a volte hai bisogno di uno di questi file e non lo trovi nel menu.

L’impostazione `respectGitignore` controlla questo comportamento. È attiva per impostazione predefinita, quindi i file di `.gitignore` non compaiono nel menu. Se vuoi visualizzarli, impostala su `false`:

```json
{
  "respectGitignore": false
}
```

Puoi fare la stessa cosa senza modificare il file, usando il comando `/config` all’interno di Claude Code. L’opzione si chiama «Rispetta .gitignore nel selettore di file». Deselezionala e i file nascosti torneranno nel menu.

Una precisazione importante: `respectGitignore` si applica solo al menu `@` e non ha nulla a che fare con l’accesso ai file. Anche quando un file è nascosto dall’elenco, puoi sempre inserirne manualmente il percorso e Claude lo leggerà. Il menu è una funzione di comodità; non definisce il perimetro di accesso.

## Cosa dovresti fare se Claude Code non riesce a leggere un file specifico?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

A volte la cartella è quella corretta, ma Claude si rifiuta comunque di leggere un file specifico. Di solito la causa è una restrizione nelle impostazioni. Il file `settings.json` può contenere regole `deny` che bloccano la lettura di determinati file, più comunemente i file `.env` con chiavi e password. C’è anche un’impostazione che blocca completamente la lettura di qualsiasi cosa al di fuori delle cartelle di lavoro. Controlla entrambi i punti in `settings.json`. E ricorda che la restrizione sui file `.env` è una protezione predefinita: non dovresti rimuoverla senza un buon motivo.

</div>

Se la cartella è sicuramente quella giusta e l’accesso è consentito, ma Claude continua a non voler leggere un file specifico, probabilmente è soggetto a una restrizione. Le restrizioni si trovano nel file delle impostazioni `settings.json` e sono di due tipi.

La prima è una restrizione mirata su file specifici. Nelle impostazioni si tratta di regole `deny`, che si applicano più spesso al file `.env`, dove sono conservate chiavi e password:

```json
{
  "permissions": {
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)"
    ]
  }
}
```

Una regola del genere impedisce a Claude di leggere i file specificati, ed è intenzionale. Chiavi e password non dovrebbero finire in una conversazione con il modello, quindi `.env` è protetto per impostazione predefinita. Se Claude si rifiuta di leggere `.env` o un file simile contenente segreti, è previsto: non dovresti rimuovere questa restrizione senza una ragione impellente.

Il secondo tipo è una restrizione generale su tutto ciò che si trova al di fuori delle cartelle di lavoro. L’impostazione `blockReadsOutsideWorkingDirectories` la controlla. Se è attiva, Claude si rifiuta di leggere qualsiasi file esterno alla directory di lavoro, anche se provi ad aprirlo direttamente. Se è impostata su `true` e ti serve un file esterno, aggiungi la sua cartella con `/add-dir` oppure disattiva la restrizione:

```json
{
  "permissions": {
    "blockReadsOutsideWorkingDirectories": false
  }
}
```

Questa impostazione è stata introdotta nella versione 2.1.257. Se hai provato tutto il resto ma il file è ancora inaccessibile, vale la pena controllare sia `deny` sia `blockReadsOutsideWorkingDirectories`.

## Da dove dovresti iniziare se Claude Code non riesce a vedere i file?

<div class="aside" data-semantic="key-takeaway" role="note" aria-label="Punto chiave">

Punto chiave

Inizia controllando la cartella: chiedi a Claude di mostrare la directory corrente usando `pwd` e confrontala con la posizione del progetto. Se non corrispondono, riavvia Claude dalla cartella del progetto oppure spostati lì con `/cd`. Ti servono file da una cartella vicina? Aprila con `/add-dir`. Non riesci a vedere un file in una sottocartella? Indica direttamente il suo percorso a Claude. Un file manca dal menu `@`? È una questione di `.gitignore`: cambia `respectGitignore`. Un file è bloccato? Cerca una restrizione `deny` in `settings.json`.

</div>

Ecco un breve piano che puoi seguire dall’inizio alla fine.

1.  Controlla la cartella di lavoro: chiedi a Claude di mostrare la directory corrente usando `pwd` e confrontala con la posizione del progetto.
2.  Se le cartelle non corrispondono, riavvia Claude da quella corretta (`cd project`, poi `claude`) oppure spostati lì con il comando `/cd`.
3.  Ti servono file da una cartella vicina? Aggiungila con `/add-dir` oppure con il flag `--add-dir` all’avvio di Claude.
4.  Un file di una sottocartella non è nel contesto? Indica direttamente il suo percorso a Claude oppure chiedigli di leggere il file.
5.  Un file manca dal menu `@`? È colpa di `.gitignore`. Imposta `respectGitignore` su `false` oppure deseleziona la casella in `/config`.
6.  Un file specifico è bloccato? Controlla le regole `deny` e `blockReadsOutsideWorkingDirectories` in `settings.json`.

Nove volte su dieci, il primo passaggio risolve tutto: Claude è stato avviato dalla cartella sbagliata. L’accesso ai file è il fondamento, ma non costruirà il tuo progetto al posto tuo. Ho spiegato in dettaglio come creare un contesto attorno a Claude in modo che tenga a mente l’intero progetto e non perda il filo nella mia guida al [Second Brain in Claude Code](https://ailoot.ai/blog/it/claude-code-second-brain/).

<div class="section" role="doc-bibliography" aria-label="Fonti">

### Fonti

- [Claude Code - Configurare le autorizzazioni, documentazione ufficiale](https://docs.claude.com/en/docs/claude-code/permissions) - directory di lavoro predefinita, --add-dir e /add-dir, /cd, additionalDirectories, accesso senza prompt, percorsi di rete
- [Claude Code - Gestire la memoria di Claude, documentazione ufficiale](https://docs.claude.com/en/docs/claude-code/memory) - caricamento su richiesta dei file nelle sottocartelle, CLAUDE.md, importazioni
- [Claude Code - Riferimento delle impostazioni, documentazione ufficiale](https://docs.claude.com/en/docs/claude-code/settings-reference) - respectGitignore e il menu @, blockReadsOutsideWorkingDirectories e versione 2.1.257
- [Claude Code - Impostazioni, documentazione ufficiale](https://docs.claude.com/en/docs/claude-code/settings) - regole deny e blocco della lettura di .env

</div>

Trova altri materiali per lavorare con gli strumenti nella [documentazione di Ailoot](https://ailoot.ai/docs/).



<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Guide di Ailoot">

[Guide di Ailoot](https://ailoot.ai/docs/)

</div>

<div class="aside" data-semantic="ailoot-cta" role="note" aria-label="Vai ad Ailoot">

[Vai ad Ailoot](https://ailoot.ai/)

</div>

## Domande frequenti

### Perché avviare da Home è diverso dall’avviare in un progetto fratello?

Un progetto sotto Home è un discendente: partire da Home non lo pone fuori dall’albero di lavoro, ma allarga il contesto oltre il necessario. Una cartella sorella di quella corrente ne resta fuori. Confronta i percorsi completi prima di diagnosticare un accesso mancante.

### L’accesso a una sottocartella significa che i file sono già nel contesto?

No. Fornisci il percorso e chiedi di leggere il file. Se la lettura viene negata, esamina i permessi applicabili: un file assente dal menu di selezione e una lettura negata sono problemi diversi.


## Ailoot · L’azienda e il suo portafoglio di progetti

Ailoot si basa su un’esperienza operativa consolidata, un’ampia base di clienti, un servizio stabile e un controllo costante dei KPI.

L’azienda e il suo portafoglio di progetti: milioni di clienti; vendite nell’ordine dei miliardi ogni mese.

Ailoot mette questa esperienza operativa al servizio dell’accesso API alle funzioni AI nei prodotti dei clienti, negli agenti, nelle applicazioni e nelle automazioni.
