Archivos de configuración de ejemplo
Archivos settings.json realistas para un desarrollador, un equipo y una organización: copie uno, mantenga las claves que desee y cambie los valores.
Esta página contiene tres archivos settings.json de ejemplo, uno para cada lugar donde guarda una configuración:
- Un
~/.claude/settings.jsonde desarrollador - Un
.claude/settings.jsonde equipo, confirmado en el repositorio - Un
managed-settings.jsonde organización
Cada uno es un archivo plausible para ese lector, para que pueda ver la forma y copiar las partes que desee. Ninguno de ellos es una línea base recomendada. Cada valor proviene de la entrada de la clave en la referencia de configuración, que tiene su tipo, valor predeterminado y dónde se puede establecer.
Cada ejemplo tiene dos pestañas. Archivo de configuración copiable es el archivo tal como lo guardaría. Lo que hace cada clave es el mismo archivo con un comentario encima de cada clave; Claude Code no acepta comentarios en un archivo de configuración, así que copie de la primera pestaña.
Su propia configuración
La configuración personal de un desarrollador. Elige un modelo y esfuerzo, ajusta la terminal y aprueba previamente un comando de solo lectura y una lectura de archivo. Todo lo que no aparece en la lista mantiene su valor predeterminado. Un archivo como este va en ~/.claude/settings.json, donde se aplica a cada proyecto que abre.
Guarde esto como ~/.claude/settings.json. Es JSON válido sin comentarios, así que puede pegarlo tal cual y eliminar las claves que no desee.
{
"model": "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
}
El mismo archivo con un comentario encima de cada clave. Léalo aquí; copie de la otra pestaña, porque Claude Code no acepta comentarios en un archivo de configuración.
{
// Inicie cada sesión en Sonnet 5
"model": "claude-sonnet-5",
// Razone más profundamente que el nivel alto predeterminado en modelos sin un nivel guardado; /effort guarda un nivel por modelo, y --effort establece uno para una sola sesión
"effortLevel": "xhigh",
// Atajos de teclado Vim en el símbolo del sistema
"editorMode": "vim",
// El tema claro amigable para daltónicos
"theme": "light-daltonized",
// Una línea de estado debajo del símbolo del sistema: nombre del modelo y contexto utilizado
"statusLine": {
"type": "command",
"command": "jq -r '\"[\\(.model.display_name)] \\(.context_window.used_percentage // 0)% context\"'",
"padding": 2
},
// Oculte los consejos que rotan bajo el spinner
"spinnerTipsEnabled": false,
// Suene la campana de la terminal para notificaciones, como una tarea finalizada o un aviso de permiso en espera
"preferredNotifChannel": "terminal_bell",
// Permita que Claude Code ejecute git diff y lea su .zshrc sin preguntar
"permissions": {
"allow": [
"Bash(git diff *)",
"Read(~/.zshrc)"
]
},
// Tome actualizaciones del canal estable
"autoUpdatesChannel": "stable",
// Elimine transcripciones de sesión y otros datos de sesión local más antiguos que 20 días
"cleanupPeriodDays": 20
}
Configuración compartida de un equipo
La configuración compartida de un equipo, confirmada en el repositorio para que todos los que lo clonan obtengan los mismos permisos, hooks, telemetría y marketplace de plugins. Guarde un archivo como este en .claude/settings.json en la parte superior del repositorio. Lo que debe saber antes de confirmar uno:
- Las sesiones en la nube también lo leen. Una sesión en la nube comienza desde un clon del repositorio, por lo que el archivo confirmado también se aplica allí.
- Las reglas de permiso esperan confianza. Las reglas de permiso y las entradas de
extraKnownMarketplacesentran en vigor después de que cada persona confía en esta carpeta misma, no solo en una carpeta principal; las reglas de denegación y pregunta se aplican en cada sesión, confiable o no. - El hook es un script en el repositorio. El hook de este archivo ejecuta
.claude/hooks/block-rm.sh; Cómo se resuelve un hook explica cómo escribirlo. - Las reglas coinciden con el comando y la ruta tal como se escriben.
Bash(git push *)no coincide congit -C . push.Read(./.env)por sí solo detiene las herramientas de archivo y los comandos que nombran el archivo, comocat .env, pero nogrep -rejecutado sobre el directorio; el bloquesandboxen este archivo cierra esa brecha, porque el sandbox añade sus rutas de denegación deReada lo que ningún comando en sandbox puede leer.
Guarde esto como .claude/settings.json en la parte superior del repositorio y confírmelo. Es JSON válido sin comentarios, así que puede pegarlo tal cual y eliminar las claves que no desee.
{
"permissions": {
"allow": [
"Bash(npm run *)"
],
"ask": [
"Bash(git push *)"
],
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
},
"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"
}
El mismo archivo con un comentario encima de cada clave. Léalo aquí; copie de la otra pestaña, porque Claude Code no acepta comentarios en un archivo de configuración.
{
"permissions": {
// Ejecute scripts npm sin preguntar
"allow": [
"Bash(npm run *)"
],
// Confirme antes de comandos git push
"ask": [
"Bash(git push *)"
],
// Deniegue lecturas de archivos env y la carpeta de secretos por las herramientas de archivo y comandos que leen archivos
"deny": [
"Read(./.env)",
"Read(./.env.*)",
"Read(./secrets/**)"
]
},
// Envíe métricas de OpenTelemetry al recopilador del equipo sobre gRPC; reemplace el endpoint con la URL de su recopilador
"env": {
"CLAUDE_CODE_ENABLE_TELEMETRY": "1",
"OTEL_METRICS_EXPORTER": "otlp",
"OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",
"OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"
},
// Antes de cada comando Bash, ejecute un script en el repositorio que pueda bloquearlo
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/block-rm.sh"
}
]
}
]
},
// Registre el marketplace de plugins del equipo en cada clon
"extraKnownMarketplaces": {
"acme-tools": {
"source": {
"source": "github",
"repo": "acme-corp/claude-plugins"
}
}
},
// Habilite un plugin de ese marketplace; un plugin de una fuente externa como un repositorio de GitHub aún necesita que cada persona lo instale una vez
"enabledPlugins": {
"code-formatter@acme-tools": true
},
// Comandos de sandbox: directorio de compilación escribible; npm y example.com preaprobados, otros hosts aún solicitan
"sandbox": {
"enabled": true,
"filesystem": {
"allowWrite": [
"/tmp/build"
]
},
"network": {
"allowedDomains": [
"registry.npmjs.org",
"*.example.com"
]
}
},
// Mantenga los archivos de plan dentro del repositorio
"plansDirectory": "./plans"
}
Configuración administrada de una organización
Un archivo managed-settings.json que muestra la forma de las claves administradas, con un valor plausible para cada una. No es una política recomendada: elija las claves que coincidan con sus propios requisitos y establezca sus propios valores. El ejemplo establece estas claves:
forceLoginMethodyforceLoginOrgUUIDfijan el método de inicio de sesión y la organizaciónavailableModelsyenforceAvailableModelsrestringen qué modelos pueden usar las sesionespermissions.denybloquea dos lecturas de archivo y comandoscurlcomo Claude los escribe, ydisableBypassPermissionsModeelimina el modo de permiso de omisiónallowManagedPermissionRulesOnlyyallowManagedMcpServersOnlyhacen que las listas de permisos administrados y MCP sean las únicas que se apliquenallowedMcpServersfija el servidor MCP por URLstrictKnownMarketplacespermite un marketplace de pluginssandboxcoloca los comandos en sandbox con una lista de permisos de red fija y sin reintento sin sandboxrequiredMinimumVersionestablece una versión mínima de Claude CodecleanupPeriodDaysacorta la retención de transcripciones de sesión y otros datos locales a siete díascompanyAnnouncementsmuestra un mensaje al inicio
Los administradores implementan un archivo como este como managed-settings.json, o el mismo JSON a través de MDM o configuración administrada por servidor. Un archivo implementado se aplica a cada máquina o cuenta que alcanza. Para dar a un grupo valores diferentes, implemente un archivo o perfil diferente en ese grupo, ya que la configuración administrada por servidor aún no admite política por grupo.
Implemente esto como managed-settings.json, o el mismo JSON a través de MDM o la consola de claude.ai. Es JSON válido sin comentarios; reemplace el UUID de organización de ejemplo, la URL del servidor y el marketplace con los suyos propios y elimine las claves que no desee.
{
"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"
]
}
El mismo archivo con un comentario encima de cada clave. Léalo aquí; copie de la otra pestaña, porque Claude Code no acepta comentarios en un archivo de configuración.
{
// Solo inicios de sesión de claude.ai, y solo en esta organización
"forceLoginMethod": "claudeai",
"forceLoginOrgUUID": [
"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
],
// Solo modelos Opus y Sonnet; con enforceAvailableModels, la opción Predeterminado también obedece la lista
"availableModels": [
"opus",
"sonnet"
],
"enforceAvailableModels": true,
"permissions": {
// Bloquee curl, el archivo .env del proyecto y su carpeta de secretos en cada máquina
"deny": [
"Bash(curl *)",
"Read(./.env)",
"Read(./secrets/**)"
],
// Elimine el modo de omisión de permisos de cada sesión
"disableBypassPermissionsMode": "disable"
},
// Ignore las reglas de permiso de la configuración de usuario, proyecto y local
"allowManagedPermissionRulesOnly": true,
// Solo el servidor MCP de GitHub, coincidido por URL en lugar de por nombre, ya que un usuario puede
// nombrar cualquier servidor "github". Los servidores que no coinciden no se cargan, lo que incluye cada
// servidor stdio cuando la lista tiene solo entradas de URL; el bloqueo a continuación hace que esta lista administrada
// sea la única lista de permisos que cuenta
"allowedMcpServers": [
{
"serverUrl": "https://api.githubcopilot.com/*"
}
],
"allowManagedMcpServersOnly": true,
// Los plugins pueden provenir solo de este marketplace
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "acme-corp/approved-plugins"
}
],
// Coloque cada comando que ejecuta Claude en sandbox, rechace iniciar si el sandbox no puede
// configurarse, y nunca permita que un comando bloqueado se reintente fuera del sandbox; red
// limitada a npm y GitHub, y los usuarios no pueden agregar dominios
"sandbox": {
"enabled": true,
"failIfUnavailable": true,
"allowUnsandboxedCommands": false,
"network": {
"allowedDomains": [
"registry.npmjs.org",
"github.com"
],
"allowManagedDomainsOnly": true
}
},
// Rechace iniciar en versiones anteriores a 2.1.150
"requiredMinimumVersion": "2.1.150",
// Elimine transcripciones de sesión y otros datos de sesión local después de 7 días
"cleanupPeriodDays": 7,
// Un mensaje que cada usuario ve al inicio
"companyAnnouncements": [
"Welcome to Acme Corp! Review our code guidelines at docs.example.com"
]
}