Arquivos de configuração de exemplo
Arquivos settings.json realistas para um desenvolvedor, uma equipe e uma organização: copie um, mantenha as chaves que deseja e altere os valores.
Esta página contém três arquivos settings.json de exemplo, um para cada lugar onde você salva uma configuração:
- Um
~/.claude/settings.jsonde desenvolvedor - Um
.claude/settings.jsonde equipe, confirmado no repositório - Um
managed-settings.jsonde organização
Cada um é um arquivo plausível para esse leitor, para que você possa ver a forma e copiar as partes que deseja. Nenhum deles é uma linha de base recomendada. Cada valor vem da entrada da chave na referência de configurações, que tem seu tipo, padrão e onde pode ser definido.
Cada exemplo tem duas abas. Copyable settings file é o arquivo como você o salvaria. What each key does é o mesmo arquivo com um comentário acima de cada chave; Claude Code não aceita comentários em um arquivo de configurações, então copie da primeira aba.
Suas próprias configurações
As configurações pessoais de um desenvolvedor. Ele escolhe um modelo e esforço, ajusta o terminal e pré-aprova um comando somente leitura e uma leitura de arquivo. Tudo não listado mantém seu padrão. Um arquivo como este vai em ~/.claude/settings.json, onde se aplica a cada projeto que você abre.
[tab] Copyable settings file
Salve isto como
~/.claude/settings.json. É JSON válido sem comentários, então você pode colar como está e deletar as chaves que não deseja.{ "model": "claude-sonnet-5", "modelSettings": { "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 }
[tab] What each key does
O mesmo arquivo com um comentário acima de cada chave. Leia aqui; copie da outra aba, porque Claude Code não aceita comentários em um arquivo de configurações.
{ // Inicie cada sessão no Sonnet 5 "model": "claude-sonnet-5", // Execute Sonnet 5 acima de seu nível alto padrão; /effort salva um nível por modelo, e --effort define um para uma única sessão "modelSettings": { "claude-sonnet-5": { "effortLevel": "xhigh" } }, // Atalhos de teclado Vim no prompt "editorMode": "vim", // O tema claro amigável para daltônicos "theme": "light-daltonized", // Uma linha de status abaixo do prompt: nome do modelo e contexto usado "statusLine": { "type": "command", "command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'", "padding": 2 }, // Oculte as dicas que giram sob o spinner "spinnerTipsEnabled": false, // Toque o sino do terminal para notificações, como uma tarefa concluída ou um prompt de permissão aguardando "preferredNotifChannel": "terminal_bell", // Deixe Claude Code executar git diff e ler seu .zshrc sem perguntar "permissions": { "allow": [ "Bash(git diff *)", "Read(~/.zshrc)" ] }, // Pegue atualizações do canal estável "autoUpdatesChannel": "stable", // Exclua transcrições de sessão e outros dados de sessão local com mais de 20 dias "cleanupPeriodDays": 20 }
As configurações compartilhadas de uma equipe
As configurações compartilhadas de uma equipe, com commit no repositório para que todos que o clonarem recebam as mesmas permissões, hooks e marketplace de plugins. Salve um arquivo como este em .claude/settings.json na raiz do repositório. O que saber antes de fazer commit de um:
- Sessões na nuvem fora das threads de um projeto também o leem. Uma sessão na nuvem com um repositório começa dentro do clone, então o arquivo com commit também se aplica lá.
- A telemetria vai nas configurações gerenciadas ou pessoais. O Claude Code ignora as variáveis do exportador OpenTelemetry nos arquivos de configurações de um repositório, exceto alguns valores que desativam a telemetria. Defina-as nas configurações gerenciadas da sua organização ou no
~/.claude/settings.jsonde cada pessoa. - As regras de allow aguardam a confiança. As regras de allow (permitir) e as entradas de
extraKnownMarketplacesentram em vigor depois que cada pessoa confia nesta própria pasta, e não apenas em uma pasta pai; as regras de deny e ask se aplicam em todas as sessões, confiáveis ou não. - O hook é um script no repositório. O hook deste arquivo executa
.claude/hooks/block-rm.sh; Como um hook é resolvido explica como escrevê-lo. - As regras correspondem ao comando e ao caminho conforme escritos.
Bash(git push *)não corresponde agit -C . push.Read(./.env)sozinho bloqueia as ferramentas de arquivo e os comandos que nomeiam o arquivo, comocat .env, mas nãogrep -rexecutado sobre o diretório; o blocosandboxneste arquivo fecha essa lacuna, porque o sandbox adiciona seus caminhos de deny deReadao que nenhum comando em sandbox pode ler.
[tab] Arquivo de configurações para copiar
Salve isto como
.claude/settings.jsonna raiz do repositório e faça o commit. É um JSON válido sem comentários, então você pode colá-lo como está e excluir as chaves que não quiser.{ "permissions": { "allow": [ "Bash(npm run *)" ], "ask": [ "Bash(git push *)" ], "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)" ] }, "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" }
[tab] O que cada chave faz
O mesmo arquivo com um comentário acima de cada chave. Leia-o aqui; copie da outra aba, porque o Claude Code não aceita comentários em um arquivo de configurações.
{ "permissions": { // Run npm scripts without asking "allow": [ "Bash(npm run *)" ], // Confirm before git push commands "ask": [ "Bash(git push *)" ], // Deny reads of env files and the secrets folder by the file tools and file-reading commands "deny": [ "Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)" ] }, // Before every Bash command, run a script in the repo that can block it "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [ { "type": "command", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh" } ] } ] }, // Register the team's plugin marketplace on every clone "extraKnownMarketplaces": { "acme-tools": { "source": { "source": "github", "repo": "acme-corp/claude-plugins" } } }, // Enable one plugin from that marketplace; a plugin from an external source such as a GitHub repository still needs each person to install it once "enabledPlugins": { "code-formatter@acme-tools": true }, // Sandbox commands: writable build dir; npm and example.com pre-allowed "sandbox": { "enabled": true, "filesystem": { "allowWrite": [ "/tmp/build" ] }, "network": { "allowedDomains": [ "registry.npmjs.org", "*.example.com" ] } }, // Keep plan files inside the repo "plansDirectory": "./plans" }
Configurações gerenciadas de uma organização
Um arquivo managed-settings.json que mostra a forma das chaves gerenciadas, com um valor plausível para cada uma. Não é uma política recomendada: escolha as chaves que correspondem aos seus próprios requisitos e defina seus próprios valores. O exemplo define estas chaves:
forceLoginMethodeforceLoginOrgUUIDfixam o método de login e a organizaçãoavailableModelseenforceAvailableModelsrestringem quais modelos as sessões podem usarpermissions.denybloqueia duas leituras de arquivo e comandoscurlconforme Claude os escreve, edisableBypassPermissionsModeremove o modo de permissão de bypassallowManagedPermissionRulesOnlyeallowManagedMcpServersOnlyfazem as listas de permissão gerenciadas e MCP as únicas que se aplicamallowedMcpServersfixa o servidor MCP pela URLstrictKnownMarketplacespermite um marketplace de pluginssandboxcoloca comandos em sandbox com uma allowlist de rede fixa e sem nova tentativa fora do sandbox. Sua chavefailIfUnavailableimpede que Claude Code seja iniciado onde o sandbox não pode ser executadorequiredMinimumVersiondefine uma versão mínima de Claude CodecleanupPeriodDaysencurta a retenção de transcrições de sessão e outros dados locais para sete diascompanyAnnouncementsmostra uma mensagem na inicialização
Os administradores implantam um arquivo como este como managed-settings.json, ou o mesmo JSON através de MDM ou configurações gerenciadas pelo servidor. Um arquivo implantado se aplica a cada máquina ou conta que alcança. Para dar a um grupo valores diferentes, implante um arquivo ou perfil diferente para esse grupo, já que as configurações gerenciadas pelo servidor não suportam política por grupo ainda.
[tab] Arquivo de configurações copiável
Implante isto como
managed-settings.json, ou o mesmo JSON através de MDM ou do console claude.ai. É JSON válido sem comentários; substitua o UUID da organização de exemplo, URL do servidor e marketplace pelos seus próprios e delete as chaves que não deseja.{ "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" ] }
[tab] O que cada chave faz
O mesmo arquivo com um comentário acima de cada chave. Leia aqui; copie da outra aba, porque Claude Code não aceita comentários em um arquivo de configurações.
{ // Apenas logins claude.ai, e apenas nesta organização "forceLoginMethod": "claudeai", "forceLoginOrgUUID": [ "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" ], // Apenas modelos Opus e Sonnet; com enforceAvailableModels, a opção Padrão obedece à lista também "availableModels": [ "opus", "sonnet" ], "enforceAvailableModels": true, "permissions": { // Bloqueie curl, o arquivo .env do projeto e sua pasta de segredos em cada máquina "deny": [ "Bash(curl *)", "Read(./.env)", "Read(./secrets/**)" ], // Remova o modo de bypass de permissões de cada sessão "disableBypassPermissionsMode": "disable" }, // Ignore regras de permissão de configurações de usuário, projeto e local "allowManagedPermissionRulesOnly": true, // Apenas o servidor MCP do GitHub, correspondido pela URL em vez de por nome, já que um usuário pode // nomear qualquer servidor "github". Servidores adicionados pelo usuário que não correspondem não carregam, incluindo // cada servidor stdio quando a lista tem apenas entradas de URL. A chave allowManagedMcpServersOnly // abaixo faz desta lista gerenciada a única lista de permissão que se aplica "allowedMcpServers": [ { "serverUrl": "https://api.githubcopilot.com/*" } ], "allowManagedMcpServersOnly": true, // Plugins podem vir apenas deste marketplace "strictKnownMarketplaces": [ { "source": "github", "repo": "acme-corp/approved-plugins" } ], // Coloque cada comando que Claude executa em sandbox, recuse iniciar se o sandbox não puder ser // configurado, e nunca deixe um comando bloqueado tentar novamente fora do sandbox; rede // limitada a npm e GitHub, e usuários não podem adicionar domínios "sandbox": { "enabled": true, "failIfUnavailable": true, "allowUnsandboxedCommands": false, "network": { "allowedDomains": [ "registry.npmjs.org", "github.com" ], "allowManagedDomainsOnly": true } }, // Recuse iniciar em versões mais antigas que 2.1.150 "requiredMinimumVersion": "2.1.150", // Exclua transcrições de sessão e outros dados de sessão local após 7 dias "cleanupPeriodDays": 7, // Uma mensagem que cada usuário vê na inicialização "companyAnnouncements": [ "Welcome to Acme Corp! Review our code guidelines at docs.example.com" ] }