SpyBara
Go Premium

settings-example.md 2026-10-26 22:57 UTC to 2026-10-27 22:59 UTC

No changes for this document in this history range.

2026
Fri 2 22:59 Tue 20 23:00 Wed 21 23:02 Thu 22 22:58 Fri 23 22:59 Fri 30 23:01

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.json de desenvolvedor
  • Um .claude/settings.json de equipe, confirmado no repositório
  • Um managed-settings.json de 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.json de cada pessoa.
  • As regras de allow aguardam a confiança. As regras de allow (permitir) e as entradas de extraKnownMarketplaces entram 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 a git -C . push. Read(./.env) sozinho bloqueia as ferramentas de arquivo e os comandos que nomeiam o arquivo, como cat .env, mas não grep -r executado sobre o diretório; o bloco sandbox neste arquivo fecha essa lacuna, porque o sandbox adiciona seus caminhos de deny de Read ao 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:

  • forceLoginMethod e forceLoginOrgUUID fixam o método de login e a organização
  • availableModels e enforceAvailableModels restringem quais modelos as sessões podem usar
  • permissions.deny bloqueia duas leituras de arquivo e comandos curl conforme Claude os escreve, e disableBypassPermissionsMode remove o modo de permissão de bypass
  • allowManagedPermissionRulesOnly e allowManagedMcpServersOnly fazem as listas de permissão gerenciadas e MCP as únicas que se aplicam
  • allowedMcpServers fixa o servidor MCP pela URL
  • strictKnownMarketplaces permite um marketplace de plugins
  • sandbox coloca comandos em sandbox com uma allowlist de rede fixa e sem nova tentativa fora do sandbox. Sua chave failIfUnavailable impede que Claude Code seja iniciado onde o sandbox não pode ser executado
  • requiredMinimumVersion define uma versão mínima de Claude Code
  • cleanupPeriodDays encurta a retenção de transcrições de sessão e outros dados locais para sete dias
  • companyAnnouncements mostra 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"
  ]
}