File di impostazioni di esempio
File settings.json realistici per uno sviluppatore, un team e un'organizzazione: copia uno, mantieni le chiavi che desideri e modifica i valori.
Questa pagina contiene tre file settings.json di esempio, uno per ogni luogo in cui salvi un'impostazione:
- Un file
~/.claude/settings.jsondi uno sviluppatore - Un file
.claude/settings.jsondi un team, sottoposto a commit nel repository - Un file
managed-settings.jsondi un'organizzazione
Ognuno è un file plausibile per quel lettore, quindi puoi vedere la struttura e copiare le parti che desideri. Nessuno di essi è una baseline consigliata. Ogni valore proviene dalla voce della chiave nel riferimento delle impostazioni, che contiene il suo tipo, il valore predefinito e dove può essere impostato.
Ogni esempio ha due schede. Copyable settings file è il file come lo salveresti. What each key does è lo stesso file con un commento sopra ogni chiave; Claude Code non accetta commenti in un file di impostazioni, quindi copia dalla prima scheda.
Le tue impostazioni personali
Le impostazioni personali di uno sviluppatore. Sceglie un modello e uno sforzo, regola il terminale e pre-approva un comando di sola lettura e una lettura di file. Tutto ciò che non è elencato mantiene il suo valore predefinito. Un file come questo va in ~/.claude/settings.json, dove si applica a ogni progetto che apri.
Salva questo come ~/.claude/settings.json. È JSON valido senza commenti, quindi puoi incollarlo così com'è ed eliminare le chiavi che non desideri.
{
"model": "claude-sonnet-5",
"effortLevel": "xhigh",
"editorMode": "vim",
"theme": "light-daltonized",
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
"spinnerTipsEnabled": false,
"preferredNotifChannel": "terminal_bell",
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
"autoUpdatesChannel": "stable",
"cleanupPeriodDays": 20
}
Lo stesso file con un commento sopra ogni chiave. Leggilo qui; copia dall'altra scheda, perché Claude Code non accetta commenti in un file di impostazioni.
{
// Inizia ogni sessione su Sonnet 5
"model": "claude-sonnet-5",
// Ragiona più profondamente del livello alto predefinito su modelli senza un livello salvato; /effort salva un livello per modello, e --effort ne imposta uno per una singola sessione
"effortLevel": "xhigh",
// Scorciatoie da tastiera Vim nel prompt
"editorMode": "vim",
// Il tema chiaro adatto ai daltonici
"theme": "light-daltonized",
// Una riga di stato sotto il prompt: nome del modello e contesto utilizzato
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
// Nascondi i suggerimenti che ruotano sotto lo spinner
"spinnerTipsEnabled": false,
// Suona il campanello del terminale per le notifiche, come un'attività completata o un prompt di autorizzazione in attesa
"preferredNotifChannel": "terminal_bell",
// Consenti a Claude Code di eseguire git diff e leggere il tuo .zshrc senza chiedere
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
// Accetta gli aggiornamenti dal canale stabile
"autoUpdatesChannel": "stable",
// Elimina i trascritti delle sessioni e altri dati locali delle sessioni più vecchi di 20 giorni
"cleanupPeriodDays": 20
}
Le impostazioni condivise di un team
Le impostazioni condivise di un team, sottoposte a commit nel repository in modo che tutti coloro che lo clonano ottengano le stesse autorizzazioni, hook, telemetria e marketplace di plugin. Salva un file come questo in .claude/settings.json nella parte superiore del repository. Cose da sapere prima di sottoporre a commit uno:
- Le sessioni cloud lo leggono anche. Una sessione cloud su Claude Code sul web inizia da un clone del repository, quindi il file sottoposto a commit si applica anche lì.
- Le regole di autorizzazione attendono la fiducia. Le regole di autorizzazione e le voci
extraKnownMarketplaceshanno effetto dopo che ogni persona si fida di questa cartella stessa, non solo di una cartella padre; le regole di negazione e richiesta si applicano in ogni sessione, fidata o meno. - L'hook è uno script nel repo. L'hook di questo file esegue
.claude/hooks/block-rm.sh; How a hook resolves illustra come scriverlo. - Le regole corrispondono al comando e al percorso come scritti.
Bash(git push *)non corrisponde agit -C . push.Read(./.env)da solo interrompe i file tool e i comandi che nominano il file, comecat .env, ma nongrep -reseguito sulla directory; il bloccosandboxin questo file colma questa lacuna, perché la sandbox aggiunge i tuoi percorsi di negazioneReada ciò che ogni comando in sandbox non può leggere.
Salva questo come .claude/settings.json nella parte superiore del repository e sottoponi a commit. È JSON valido senza commenti, quindi puoi incollarlo così com'è ed eliminare le chiavi che non desideri.
{
"permissions": {
"allow": [
"Bash(npm run *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
},
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
},
"enabledPlugins": {
"code-formatter@acme-tools": true
},
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"/tmp/build"
]
},
"network": {
"allowedDomains": [
"registry.npmjs.org",
"*.example.com"
]
}
},
"plansDirectory": "./plans"
}
Lo stesso file con un commento sopra ogni chiave. Leggilo qui; copia dall'altra scheda, perché Claude Code non accetta commenti in un file di impostazioni.
{
"permissions": {
// Esegui gli script npm senza chiedere
"allow": [
"Bash(npm run *)"
],
// Conferma prima dei comandi git push
"ask": [
"Bash(git push *)"
],
// Nega le letture dei file env e della cartella dei segreti dai file tool e dai comandi che leggono i file
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
// Invia metriche OpenTelemetry al collector del team su gRPC; sostituisci l'endpoint con l'URL del tuo collector
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
},
// Prima di ogni comando Bash, esegui uno script nel repo che può bloccarlo
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
// Registra il marketplace di plugin del team su ogni clone
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
},
// Abilita un plugin da quel marketplace; un plugin da una fonte esterna come un repository GitHub richiede comunque che ogni persona lo installi una volta
"enabledPlugins": {
"code-formatter@acme-tools": true
},
// Comandi sandbox: directory di build scrivibile; npm e example.com pre-autorizzati, altri host ancora richiedono conferma
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"/tmp/build"
]
},
"network": {
"allowedDomains": [
"registry.npmjs.org",
"*.example.com"
]
}
},
// Mantieni i file di piano all'interno del repo
"plansDirectory": "./plans"
}
Le impostazioni gestite di un'organizzazione
Un file managed-settings.json che mostra la forma delle chiavi gestite, con un valore plausibile per ognuna. Non è una politica consigliata: scegli le chiavi che corrispondono ai tuoi requisiti e imposta i tuoi valori. L'esempio imposta queste chiavi:
forceLoginMethodeforceLoginOrgUUIDfissano il metodo di accesso e l'organizzazioneavailableModelseenforceAvailableModelslimitano quali modelli possono utilizzare le sessionipermissions.denyblocca due letture di file e comandicurlcome Claude li scrive, edisableBypassPermissionsModerimuove la modalità di autorizzazione di bypassallowManagedPermissionRulesOnlyeallowManagedMcpServersOnlyrendono le liste di autorizzazione di autorizzazione e MCP gestite le uniche che si applicanoallowedMcpServersfissa il server MCP per URLstrictKnownMarketplacesconsente un marketplace di pluginsandboxesegue il sandboxing dei comandi con una lista di autorizzazione di rete fissa e nessun retry non sandboxatorequiredMinimumVersionimposta una versione minima di Claude CodecleanupPeriodDaysaccorcia la conservazione dei trascritti delle sessioni e altri dati locali a sette giornicompanyAnnouncementsmostra un messaggio all'avvio
Gli amministratori distribuiscono un file come questo come managed-settings.json, o lo stesso JSON tramite MDM o impostazioni gestite dal server. Un file distribuito si applica a ogni macchina o account che raggiunge. Per dare a un gruppo valori diversi, distribuisci un file o profilo diverso a quel gruppo, poiché le impostazioni gestite dal server non supportano ancora la politica per gruppo.
Distribuisci questo come managed-settings.json, o lo stesso JSON tramite MDM o la console claude.ai. È JSON valido senza commenti; sostituisci l'UUID dell'organizzazione di esempio, l'URL del server e il marketplace con i tuoi e elimina le chiavi che non desideri.
{
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
"availableModels": [
"opus",
"sonnet"
],
"enforceAvailableModels": true,
"permissions": {
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./secrets/**)"
],
"disableBypassPermissionsMode": "disable"
},
"allowManagedPermissionRulesOnly": true,
"allowedMcpServers": [
{
"serverUrl": "https://api.githubcopilot.com/*"
}
],
"allowManagedMcpServersOnly": true,
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "acme-corp/approved-plugins"
}
],
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": [
"registry.npmjs.org",
"github.com"
],
"allowManagedDomainsOnly": true
}
},
"requiredMinimumVersion": "2.1.150",
"cleanupPeriodDays": 7,
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}
Lo stesso file con un commento sopra ogni chiave. Leggilo qui; copia dall'altra scheda, perché Claude Code non accetta commenti in un file di impostazioni.
{
// Solo accessi claude.ai, e solo in questa organizzazione
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
// Solo modelli Opus e Sonnet; con enforceAvailableModels, l'opzione Predefinito obbedisce anche alla lista
"availableModels": [
"opus",
"sonnet"
],
"enforceAvailableModels": true,
"permissions": {
// Blocca curl, il file .env del progetto e la sua cartella dei segreti su ogni macchina
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./secrets/**)"
],
// Rimuovi la modalità di bypass delle autorizzazioni da ogni sessione
"disableBypassPermissionsMode": "disable"
},
// Ignora le regole di autorizzazione dalle impostazioni utente, progetto e locali
"allowManagedPermissionRulesOnly": true,
// Solo il server MCP GitHub, abbinato per URL piuttosto che per nome, poiché un utente può
// nominare qualsiasi server "github". I server aggiunti dall'utente che non corrispondono non si caricano, incluso
// ogni server stdio quando la lista ha solo voci URL. La chiave allowManagedMcpServersOnly
// sotto rende questa lista gestita l'unica lista di autorizzazione che si applica
"allowedMcpServers": [
{
"serverUrl": "https://api.githubcopilot.com/*"
}
],
"allowManagedMcpServersOnly": true,
// I plugin possono provenire solo da questo marketplace
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "acme-corp/approved-plugins"
}
],
// Esegui il sandboxing di ogni comando che Claude esegue, rifiuta di avviare se il sandbox non può essere
// configurato, e non consentire mai a un comando bloccato di riprovare al di fuori del sandbox; la rete
// limitata a npm e GitHub, e gli utenti non possono aggiungere domini
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": [
"registry.npmjs.org",
"github.com"
],
"allowManagedDomainsOnly": true
}
},
// Rifiuta di avviare su versioni più vecchie di 2.1.150
"requiredMinimumVersion": "2.1.150",
// Elimina i trascritti delle sessioni e altri dati locali delle sessioni dopo 7 giorni
"cleanupPeriodDays": 7,
// Un messaggio che ogni utente vede all'avvio
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}