> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Ordine di precedenza della configurazione

> Come interagiscono le impostazioni globali, di progetto e locali

Devin CLI carica la configurazione da più fonti e le combina tra loro. Comprendere l'ordine di precedenza ti aiuta a impostare la configurazione più adatta al tuo team e alle tue preferenze personali.

***

<div id="configuration-layers">
  ## Livelli di configurazione
</div>

Dalla priorità più alta a quella più bassa:

| Priorità      | Fonte                                                                            | Note                        |
| ------------- | -------------------------------------------------------------------------------- | --------------------------- |
| 1 (più alta)  | organizzazione / Team Settings                                                   | Non può essere sovrascritta |
| 2             | Sessione (approvazioni interattive)                                              | Solo in memoria             |
| 3             | Progetto locale (`.devin/config.local.json`)                                     | Personale, ignorato da Git  |
| 4             | Progetto (`.devin/config.json`)                                                  | Condiviso con il team       |
| 5 (più bassa) | Utente (`~/.config/devin/config.json`; `%APPDATA%\devin\config.json` su Windows) | I tuoi valori predefiniti   |

Quando la stessa impostazione è definita a più livelli, ha la precedenza la fonte con priorità più alta.

***

<div id="when-to-use-each-level">
  ## Quando usare ciascun livello
</div>

<AccordionGroup>
  <Accordion title="Configurazione utente" icon="user" defaultOpen>
    **Percorso:** `~/.config/devin/config.json` (`%APPDATA%\devin\config.json` su Windows)

    Usala per le preferenze personali che si applicano ovunque:

    * Preferenza del modello predefinito
    * Preferenza del tema
    * Server MCP personali (ad es. le tue API key)
    * Autorizzazioni concesse a livello globale

    ```json theme={null}
    {
      "agent": { "model": "opus" },
      "permissions": {
        "allow": ["Read(**)", "Exec(git)"]
      }
    }
    ```
  </Accordion>

  <Accordion title="Configurazione del progetto" icon="folder">
    **Percorso:** `.devin/config.json`

    Usala per gli standard del team salvati nel repository. Solo `permissions`, `mcpServers`, `read_config_from` e `hooks` sono disponibili a questo livello:

    * Server MCP condivisi (con configurazione non sensibile)
    * Criteri di autorizzazione del team
    * Impostazioni di importazione
    * Hook del ciclo di vita

    ```json theme={null}
    {
      "permissions": {
        "allow": ["Exec(npm run)", "Read(src/**)"],
        "deny": ["Exec(sudo)"]
      },
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"]
        }
      }
    }
    ```
  </Accordion>

  <Accordion title="Configurazione locale del progetto" icon="lock">
    **Percorso:** `.devin/config.local.json`

    Usala per gli override personali che non devono essere committati:

    * API key e segreti
    * Preferenze personali degli strumenti per questo progetto
    * Override delle autorizzazioni

    ```json theme={null}
    {
      "mcpServers": {
        "github": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-github"],
          "env": {
            "GITHUB_TOKEN": "ghp_my_personal_token"
          }
        }
      }
    }
    ```

    <Tip>
      I file di configurazione locali vengono esclusi automaticamente da git tramite `.git/info/exclude`.
    </Tip>
  </Accordion>

  <Accordion title="Settings dell'organizzazione" icon="building">
    Gestite dall'amministratore della tua Enterprise tramite la dashboard delle impostazioni del team. Queste impostazioni non possono essere sovrascritte dai singoli utenti e applicano criteri validi per tutta l'organizzazione, come limitazioni del modello e allowlist dei server MCP.
  </Accordion>
</AccordionGroup>

***

<div id="whats-available-at-each-level">
  ## Cosa è disponibile a ciascun livello
</div>

Le configurazioni del progetto (`.devin/config.json` e `.devin/config.local.json`) supportano solo un sottoinsieme delle impostazioni. La tabella seguente mostra quali impostazioni sono disponibili a ciascun livello:

| Impostazione               | Configurazione utente | Configurazione del progetto |
| -------------------------- | :-------------------: | :-------------------------: |
| `permissions`              |           ✓           |              ✓              |
| `mcpServers`               |           ✓           |              ✓              |
| `read_config_from`         |           ✓           |              ✓              |
| `hooks`                    |           ✓           |              ✓              |
| `agent` (modello)          |           ✓           |              ✗              |
| `theme_mode`               |           ✓           |              ✗              |
| `unicode_mode`             |           ✓           |              ✗              |
| `show_path`                |           ✓           |              ✗              |
| `show_hints`               |           ✓           |              ✗              |
| `include_gitignored_files` |           ✓           |              ✗              |
| `sandbox`                  |           ✓           |              ✗              |

Le impostazioni contrassegnate come disponibili solo nella configurazione utente possono essere definite solo nella configurazione utente (`~/.config/devin/config.json`; `%APPDATA%\devin\config.json` su Windows) e non rientrano nella gerarchia di precedenza sopra descritta.

***

<div id="how-merging-works">
  ## Come funziona l'unione
</div>

La tabella di precedenza sopra si applica solo alle Settings che supportano più livelli (`permissions`, `mcpServers`, `read_config_from`, `hooks`).

<div id="permissions">
  ### Autorizzazioni
</div>

Gli elenchi di autorizzazioni vengono **combinati** tra i vari livelli. Un divieto a un livello superiore non può essere annullato da un'autorizzazione concessa a un livello inferiore.

Per esempio, se la tua organizzazione nega `Exec(sudo)`, aggiungere `Exec(sudo)` al tuo elenco di autorizzazioni utente non ha alcun effetto: il divieto dell'organizzazione prevale sempre. Tuttavia, altre autorizzazioni come `Read(**)` a livello di progetto vengono applicate normalmente.

<div id="mcp-servers">
  ### Server MCP
</div>

Le configurazioni dei server MCP vengono **combinate in base al nome**. Un server definito a un livello superiore sovrascrive il server con lo stesso nome definito a un livello inferiore.

Ad esempio, se sia la configurazione utente sia la configurazione del progetto definiscono un server "github", prevale la versione della configurazione del progetto perché ha una priorità superiore rispetto alla configurazione utente.

<div id="hooks">
  ### Hooks
</div>

Gli hook vengono **raccolti** da tutte le fonti e vengono tutti eseguiti. Un hook definito nella configurazione dell'utente viene eseguito insieme agli hook definiti nella configurazione del progetto: non si sovrascrivono a vicenda.

***

<div id="project-root-detection">
  ## Rilevamento della directory radice del progetto
</div>

Devin CLI individua la directory radice del progetto cercando una directory `.git` o `.jj` e risalendo dalla directory di lavoro corrente. La configurazione del progetto (`.devin/`) viene caricata dalla directory radice del progetto.

<Note>
  Se hai directory `.devin/` annidate (ad es. in un monorepo), le configurazioni delle sottodirectory hanno la precedenza su quelle delle directory padre.
</Note>

***

<div id="file-discovery-summary">
  ## Riepilogo del rilevamento dei file
</div>

| File                                | Trovato tramite     | Condiviso?           |
| ----------------------------------- | ------------------- | -------------------- |
| `~/.config/devin/config.json`       | Percorso XDG        | No                   |
| `.devin/config.json`                | Risalendo dalla cwd | Sì (nel commit)      |
| `.devin/config.local.json`          | Risalendo dalla cwd | No (ignorato da git) |
| `.devin/skills/*/SKILL.md`          | Radice del progetto | Sì (nel commit)      |
| `~/.config/devin/skills/*/SKILL.md` | Percorso XDG        | No                   |
| `AGENTS.md`                         | Radice del progetto | Sì (nel commit)      |
| `~/.config/devin/AGENTS.md`         | Percorso XDG        | No                   |

<Note>
  **Windows:** I percorsi mostrati come `~/.config/devin/` usano la convenzione XDG per Linux/macOS. In Windows, corrispondono a `%APPDATA%\devin\` (in genere `C:\Users\<YourUser>\AppData\Roaming\devin\`).
</Note>
