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.
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
}
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.
Arquivo de configurações para copiar
Salve isto como .claude/settings.json na 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"
}
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.
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"
]
}
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"
]
}