Cap 7: Settings

Por: Artiko
claude-codesettingspermissionsconfiguration

Jerarquía y scope

Claude Code usa un sistema de scopes para precedencia y sharing:

ScopeLocationAplica aShareable
ManagedServer-managed, MDM/registry, system managed-settings.jsonToda la orgSí (IT)
User~/.claude/Todos tus proyectosNo
Project.claude/ en repoColaboradores del repoSí (git)
Local.claude/settings.local.jsonVos en este repoNo (gitignored)

Prioridad

  1. Managed (no se puede overridear)
  2. CLI arguments (override por sesión)
  3. Local
  4. Project
  5. User

En Windows, ~/.claude resuelve a %USERPROFILE%\.claude.

Managed settings deployment

Drop-in directory: managed-settings.d/ con archivos merged en orden alfabético (10-telemetry.json, 20-security.json).

Claude Code crea backups timestamped automáticamente (retiene los 5 más recientes).

Ejemplo settings.json

{
  "$schema": "https://json.schemastore.org/claude-code-settings.json",
  "permissions": {
    "allow": ["Bash(npm run lint)", "Bash(npm run test *)", "Read(~/.zshrc)"],
    "deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)"]
  },
  "env": {
    "CLAUDE_CODE_ENABLE_TELEMETRY": "1"
  }
}

Settings disponibles

Modelo y comportamiento

KeyDescripción
agentCorre el main thread como un subagent (su system prompt, tools, modelo)
modelOverride del modelo default. --model y ANTHROPIC_MODEL lo overridean por sesión
modelOverridesMapear IDs Anthropic a provider IDs (ej Bedrock ARNs)
availableModelsRestringe qué modelos puede elegir el user via /model, --model, ANTHROPIC_MODEL
effortLevelPersistir effort: low/medium/high/xhigh
alwaysThinkingEnabledExtended thinking default para todas las sesiones
showThinkingSummariesMostrar summaries de extended thinking (default redactado)

UI

KeyDescripción
editorMode"normal" o "vim"
tui"fullscreen" flicker-free o "default"
viewModeDefault: "default", "verbose", o "focus"
languageIdioma preferido para respuestas
outputStyleOutput style (ej "Explanatory")
autoScrollEnabledSeguir output al fondo (fullscreen)
prefersReducedMotionReduce animaciones (a11y)
spinnerTipsEnabledTips en el spinner
spinnerTipsOverrideOverride de tips ({ "excludeDefault": true, "tips": ["..."] })
spinnerVerbsVerbos custom ({"mode": "append", "verbs": ["Pondering"]})
showTurnDurationMostrar duración de turnos (default true)
terminalProgressBarEnabledProgress bar en terminales soportadas
preferredNotifChannelauto/terminal_bell/iterm2/iterm2_with_bell/kitty/ghostty/notifications_disabled
awaySummaryEnabledRecap al volver tras estar away
syntaxHighlightingDisabledDesactivar highlighting en diffs

Skills

KeyDescripción
skillListingBudgetFractionFracción del context window para skill listing (default 0.01 = 1%). min-ver 2.1.105
maxSkillDescriptionCharsCap por skill de description + when_to_use (default 1536). min-ver 2.1.105
skillOverridesVisibility por skill: "on", "name-only", "user-invocable-only", "off". min-ver 2.1.129
disableSkillShellExecutionBloquea ejecución inline !\…“ en skills

Permissions

{
  "permissions": {
    "allow": ["Bash(npm run lint)", "Bash(npm run test *)"],
    "ask": ["Bash(git push *)"],
    "deny": ["Bash(curl *)", "Read(./.env)", "Read(./secrets/**)"],
    "additionalDirectories": ["../docs/"],
    "defaultMode": "acceptEdits",
    "disableBypassPermissionsMode": "disable",
    "skipDangerousModePermissionPrompt": true
  }
}
KeyDescripción
permissions.allowArray de reglas que permiten tool use
permissions.askArray de reglas que piden confirmación
permissions.denyArray de reglas que deniegan
permissions.additionalDirectoriesWorking dirs adicionales para file access
permissions.defaultModedefault, acceptEdits, plan, auto, dontAsk, bypassPermissions
permissions.disableBypassPermissionsMode"disable" para impedir bypass mode
permissions.skipDangerousModePermissionPromptSkip confirmación antes de bypass mode
disableAutoMode"disable" para impedir auto mode
autoModeCustomize qué bloquea el classifier (environment, allow, soft_deny, hard_deny)
useAutoModeDuringPlanPlan mode usa semántica auto (default true)

Reglas: format Tool o Tool(specifier). Evaluación en orden: deny → ask → allow. Primer match gana.

EjemploEfecto
BashTodos los Bash
Bash(npm run *)Comandos npm run ...
Read(./.env)Leer .env
WebFetch(domain:example.com)Fetch a example.com

Sandbox

{
  "sandbox": {
    "enabled": true,
    "autoAllowBashIfSandboxed": true,
    "excludedCommands": ["docker *"],
    "filesystem": {
      "allowWrite": ["/tmp/build", "~/.kube"],
      "denyRead": ["~/.aws/credentials"]
    },
    "network": {
      "allowedDomains": ["github.com", "*.npmjs.org"],
      "deniedDomains": ["uploads.github.com"]
    }
  }
}
KeyDescripción
sandbox.enabledmacOS/Linux/WSL2. Default false
sandbox.failIfUnavailableExit si el sandbox no puede iniciar
sandbox.autoAllowBashIfSandboxedAuto-approve bash bajo sandbox (default true)
sandbox.excludedCommandsComandos fuera del sandbox
sandbox.allowUnsandboxedCommandsPermitir comandos fuera del sandbox (default true)
sandbox.filesystem.allowWritePaths adicionales para escritura
sandbox.filesystem.denyWritePaths bloqueados para escritura
sandbox.filesystem.denyReadPaths bloqueados para lectura
sandbox.filesystem.allowReadRe-allow lectura en zonas denyRead
sandbox.network.allowedDomainsDominios outbound permitidos
sandbox.network.deniedDomainsDominios bloqueados
sandbox.network.allowUnixSockets(macOS) sockets Unix accesibles
sandbox.network.allowAllUnixSocketsPermitir todos los Unix sockets
sandbox.network.allowLocalBinding(macOS) bind a localhost ports
sandbox.network.allowMachLookup(macOS) XPC/Mach service names
sandbox.network.httpProxyPort / socksProxyPortProxies
sandbox.enableWeakerNestedSandboxSandbox débil para Docker unprivileged. Reduce security

Hooks y Statusline

KeyDescripción
hooksConfigurar hooks
disableAllHooksDeshabilita TODOS los hooks y statusline
allowedHttpHookUrlsAllowlist URL patterns para HTTP hooks (* wildcard)
httpHookAllowedEnvVarsEnv vars que pueden interpolar en HTTP hooks
statusLineConfigurar status line ({ "type": "command", "command": "..." })

MCP Servers

KeyDescripción
enableAllProjectMcpServersAuto-approve todos los MCP en .mcp.json del proyecto
enabledMcpjsonServersLista de MCP servers a approve
disabledMcpjsonServersLista a rechazar
allowedMcpServers(Managed) allowlist
deniedMcpServers(Managed) denylist
allowManagedMcpServersOnly(Managed) solo allowlist gestionado

Plugins

KeyDescripción
allowedChannelPlugins(Managed) allowlist de channel plugins
blockedMarketplaces(Managed) blocklist de marketplaces
strictKnownMarketplaces(Managed) allowlist de marketplaces
pluginTrustMessage(Managed) mensaje custom en plugin trust warning

Worktrees

KeyDescripción
worktree.baseRef"fresh" (default) o "head"
worktree.symlinkDirectoriesDirs a symlinkear desde repo principal
worktree.sparsePathsDirs via git sparse-checkout

Agents y teams

KeyDescripción
disableAgentViewApagar background agents y agent view
teammateModeauto/in-process/tmux
disableRemoteControlDesactivar Remote Control. min-ver 2.1.128

Updates

KeyDescripción
autoUpdatesChannel"stable" (~1 semana) o "latest" (default)
minimumVersionFloor que impide auto-updates por debajo

Auth

KeyDescripción
forceLoginMethodclaudeai o console
forceLoginOrgUUIDUUID(s) requeridos para login
apiKeyHelperScript custom que genera auth value (X-Api-Key, Authorization Bearer)
awsAuthRefreshScript que modifica .aws/
awsCredentialExportScript que outputea JSON con AWS credentials
gcpAuthRefreshScript que refresca GCP ADC
otelHeadersHelperScript para OTel headers dinámicos

File/Memory

KeyDescripción
fileSuggestionCustom script para @ autocomplete
respectGitignore@ file picker respeta .gitignore (default true)
plansDirectoryDónde se guardan los plans (default ~/.claude/plans)
autoMemoryDirectoryDir custom para auto-memory
autoMemoryEnabledAuto-memory on/off (default true)
claudeMdExcludesGlobs o paths absolutos de CLAUDE.md a saltear
claudeMd(Managed) instrucciones inyectadas como org-managed memory

Attribution

{
  "attribution": {
    "commit": "🤖 Generated with Claude Code\n\nCo-Authored-By: Claude Sonnet 4.6 <[email protected]>",
    "pr": "🤖 Generated with Claude Code"
  }
}
KeyDescripción
attribution.commit / attribution.prTemplates de commit/PR
includeGitInstructionsBuilt-in workflow de commit/PR en system prompt (default true)
prUrlTemplateSubstituye {host}, {owner}, {repo}, {number}, {url}

Channels y org

KeyDescripción
channelsEnabled(Managed) Channels para la org
companyAnnouncementsArray de announcements al startup

Avanzado

KeyDescripción
defaultShell"bash" (default) o "powershell" para ! commands del input box
fastModePerSessionOptInFast mode no persiste entre sesiones
disableDeepLinkRegistration"disable" para no registrar claude-cli://
sshConfigsConexiones SSH para el dropdown del Desktop
policyHelper(min-ver 2.1.136) ejecutable que computa managed settings dinámicamente
parentSettingsBehavior(Managed, min-ver 2.1.133) "first-wins" o "merge"
forceRemoteSettingsRefresh(Managed) blockea startup hasta fetch fresh
wslInheritsWindowsSettings(Windows managed) WSL lee del policy chain
feedbackSurveyRateProbabilidad (0-1) del survey de quality
cleanupPeriodDaysBorrar session files más viejos (default 30, min 1)

Global config (~/.claude.json)

Se guarda en ~/.claude.json (no en settings.json):

KeyDescripción
autoConnectIdeAuto-conectar a IDE al iniciar
autoInstallIdeExtensionAuto-instalar extension del IDE (default true)
externalEditorContextPrepend respuesta previa como comments en editor externo
teammateDefaultModelModelo default para teammates

Cuándo usar cada scope

Tips


Siguiente: Memory y CLAUDE.md