O que o agente lê antes de pensar.
Como você cuida do contexto da sessão.
Como você opera dentro de uma task.
Como você fala com ele.
Tudo que você empilha em volta dele.
Quais ferramentas rodam sem perguntar.
Cada tool (Bash, Edit, Write, ) pode ser allowed, denied ou asked. Define por padrão de comando. Ex: Bash(git status:*) libera só status, não push.
Move pra user settings o que é universalmente seguro (ls, git diff, npm test). Move pra project settings o que é específico do repo (npm run convex:deploy só nesse projeto).
Nunca libera Bash(*) inteiro. Perde o cinto de segurança e ainda fica achando que tá confortável.
// .claude/settings.local.json
{
"permissions": {
"allow": [
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(npm test:*)",
"Read(*)"
],
"deny": [
"Bash(rm -rf:*)",
"Bash(git push --force:*)"
]
}
}