Settings & Permissões
~20 min Intermediário Parte 2

Settings & Permissões

Configure o comportamento do Claude Code globalmente e por projeto. Controle permissões, modelos, temas e variáveis de ambiente.

O settings.json é o painel de controle do Claude Code. Você pode ter configurações globais que se aplicam a todos os projetos, e configurações por projeto que sobrescrevem as globais.

Onde ficam os arquivos de configuração

Caminho Escopo Descrição
~/.claude/settings.json Global Aplica-se a todos os projetos. Suas preferências pessoais.
<projeto>/.claude/settings.json Projeto Aplica-se apenas a este projeto. Pode ser commitado no repositório.

Estrutura completa do settings.json

Todas as opções disponíveis em um único arquivo de referência:

{
  "model": "claude-sonnet-4-6",
  "theme": "dark",
  "autoApprove": false,
  "permissions": {
    "allow": [
      "Read(*)",
      "Write(src/**)",
      "Bash(npm run *)",
      "Bash(git *)"
    ],
    "deny": [
      "Bash(rm -rf *)",
      "Bash(sudo *)",
      "WebFetch(*)"
    ]
  },
  "env": {
    "NODE_ENV": "development"
  },
  "hooks": {
    "PreToolUse": [],
    "PostToolUse": [],
    "SessionStart": [],
    "UserPromptSubmit": []
  }
}

Modos de permissão

Plan mode

O Claude só planeja e descreve o que faria — não executa nada. Útil para revisar antes de agir.

Auto-accept

Cuidado

Aceita e executa tudo sem confirmação. Ativar com --dangerously-skip-permissions.

Use apenas em ambientes controlados e descartáveis.

Padrões de permissão com wildcards

O sistema de permissões usa padrões glob para controle granular. Quanto mais específico o padrão, mais seguro:

"Bash(*)"          — qualquer comando bash
"Bash(git *)"      — qualquer comando git
"Read(*)"          — ler qualquer arquivo
"Write(src/**)"    — escrever apenas em src/
"Bash(npm run *)"  — qualquer npm run script
Atenção: Cuidado com permissões muito amplas em projetos de produção. Use allow/deny granular para evitar que o Claude execute operações destrutivas acidentalmente.

Exercício: configurar permissões do projeto

Objetivo

Criar .claude/settings.json com permissões que:

  • Permitam git, npm run scripts e leitura total
  • Bloqueiem rm, curl e sudo

Solução

{
  "permissions": {
    "allow": [
      "Read(*)",
      "Bash(git *)",
      "Bash(npm run *)"
    ],
    "deny": [
      "Bash(rm *)",
      "Bash(curl *)",
      "Bash(sudo *)"
    ]
  }
}

Recursos

0%