Saltar al contenido principal
onext technology
IA 8 octubre 2026 - 8 min de lectura

Claude Code para equipos: CLAUDE.md es contexto, no control. Lo que tiene que cumplirse va en settings y hooks

Si una regla tiene riesgo, no puede depender de que el agente se acuerde. CLAUDE.md orienta; los permisos y los hooks imponen. Y el archivo que impone se versiona y se revisa como el código.

Bernat López
Fundador y CEO de onext
Diagrama de tres capas: una hoja de texto en gris claro que el agente lee, una lista de permisos con un candado y una barrera marina que detiene una acción antes de ejecutarse, en azul y marino sobre blanco

Cuando un equipo adopta Claude Code, el primer archivo que aparece en el repositorio suele ser un CLAUDE.md. Ahí van las convenciones de código, los comandos de test y, poco a poco, todo lo demás: «no toques las migraciones», «no hagas push a main», «no leas el .env». Al cabo de unas semanas, el archivo tiene trescientas líneas y el equipo cree que sus reglas están puestas.

La propia documentación de Claude Code dice otra cosa. El modelo trata CLAUDE.md como contexto, no como configuración que se impone. Las reglas que no admiten excepciones tienen otro sitio, y no es un detalle de implementación: es la diferencia entre pedirle algo al agente y que el cliente no le deje hacer lo contrario.

La tesis de esta pieza es sencilla de enunciar y menos sencilla de aplicar: si una regla tiene riesgo, no puede depender de que el agente se acuerde. Lo que orienta va en CLAUDE.md. Lo que tiene que cumplirse va en los permisos de .claude/settings.json y en hooks, que son deterministas. Y ese archivo se versiona en el repositorio y se revisa como el código.

Lo que dice la documentación, con sus palabras

No hace falta interpretar mucho. Cuatro páginas de la documentación oficial lo dicen de forma explícita.

  • En la página de memoria: Claude trata CLAUDE.md y la memoria automática «como contexto, no como configuración impuesta», y para bloquear una acción decida lo que decida el modelo remite a un hook PreToolUse. Más abajo: las reglas de settings «las aplica el cliente decida lo que decida Claude»; las instrucciones de CLAUDE.md dan forma a su comportamiento, «pero no son una capa de imposición».
  • En la guía de hooks: los hooks dan «control determinista», de modo que ciertas acciones ocurren siempre en lugar de depender de que el modelo decida hacerlas.
  • En las buenas prácticas: a diferencia de las instrucciones de CLAUDE.md, «que son orientativas», los hooks son deterministas. Y una advertencia que conviene leer dos veces: un CLAUDE.md inflado hace que Claude ignore las instrucciones que de verdad importan.
  • En la página de settings: hacer commit de .claude/settings.json para que todo el que clone el repositorio tenga los mismos permisos, hooks y plugins.
La diferencia CLAUDE.md es una petición que el modelo lee. Un permiso o un hook es una condición que el cliente comprueba antes de que la acción ocurra. La primera puede perderse entre trescientas líneas; la segunda no depende de que alguien la lea.

Cuatro sitios para una regla, con cuatro garantías distintas

Claude Code ofrece varios lugares donde escribir una regla. No son intercambiables: cambian quién la aplica y quién puede saltársela.

Dónde Qué es Quién la aplica Para qué sirve
CLAUDE.md (proyecto, usuario u organización) Texto que el modelo lee al empezar cada sesión El modelo, si la sigue Comandos, convenciones, decisiones de arquitectura, lo que el agente no puede deducir del código
Permisos en .claude/settings.json Reglas de qué herramientas y comandos se permiten, se preguntan o se deniegan El cliente de Claude Code Qué puede hacer el agente en este repositorio, igual para todo el equipo
Hooks (en el mismo archivo de settings) Comandos de shell que se ejecutan en momentos fijos, por ejemplo antes de usar una herramienta El cliente, siempre que ocurre el evento Bloquear una acción concreta, formatear tras cada edición, registrar lo que pasa
Configuración gestionada (managed settings) Settings que despliega la organización El cliente, por encima del resto de niveles Política de seguridad y cumplimiento que ningún repositorio debería poder relajar

Elaboración propia de onext, a partir de las páginas de memoria, settings y hooks de la documentación de Claude Code (consultadas el 8 de octubre de 2026)

El ejemplo que la propia guía de hooks usa para empezar es revelador: un script que se ejecuta antes de cada edición, comprueba la ruta del archivo contra una lista de patrones protegidos (.env, package-lock.json, .git/) y sale con código 2 si coincide. Con ese código, Claude Code bloquea la edición antes de que ocurra y le pasa al modelo el motivo, para que cambie de enfoque. No hay que confiar en que el agente recuerde la lista: no puede editar esos archivos aunque lo intente.

Qué va en cada sitio: la pregunta que lo decide

La forma práctica de repartir las reglas es hacerse una sola pregunta por cada una: si el agente no la sigue una vez, ¿qué pasa? Si la respuesta es «sale un código algo peor», es contexto. Si la respuesta es «se rompe algo, se filtra algo o alguien tiene que dar explicaciones», es una condición.

Regla Si el agente no la sigue Dónde va
«Usamos módulos ES, no CommonJS» Un cambio que se corrige en la revisión CLAUDE.md
«Ejecuta los tests con npm test antes de dar algo por terminado» Trabajo sin verificar que llega a la revisión CLAUDE.md, y un hook de parada si el equipo quiere que sea obligatorio
«No leas ni edites el .env» Credenciales expuestas en una sesión o en un cambio Permiso denegado y hook PreToolUse
«No hagas push a main» Un despliegue que nadie ha aprobado Permiso denegado, además de la protección de rama en el servidor
«No toques los archivos generados» Cambios que se pierden en la siguiente generación Hook PreToolUse sobre esas rutas
Una política de seguridad que vale para toda la empresa Un repositorio o una persona la relaja sin que nadie lo decida Configuración gestionada

Elaboración propia de onext. El reparto es una propuesta de criterio, no una norma de la documentación; los ejemplos de la primera fila y de la tercera proceden de las buenas prácticas y de la guía de hooks

La cuarta fila tiene una trampa: un permiso en el cliente no sustituye a la protección de rama en el servidor. El agente no es el único que puede hacer push. Las reglas que protegen la producción tienen que vivir donde vive la producción, y la configuración del agente es una capa más, no la única. Es la misma lógica que contamos para los agentes con herramientas en inyección de prompts y permisos: lo que limita el daño es lo que el agente puede hacer, no lo que se le ha pedido.

El archivo compartido también se puede pisar

Versionar .claude/settings.json tiene un matiz que conviene conocer. La documentación ordena los niveles de configuración, de mayor a menor precedencia, así: configuración gestionada, línea de comandos, .claude/settings.local.json del proyecto, .claude/settings.json compartido y la configuración del usuario. Un valor que se fija en un nivel superior prevalece sobre el mismo valor en uno inferior.

Es decir: cada persona puede ajustar para sí misma lo que el equipo ha versionado, con su archivo local, que Claude Code mantiene fuera de git. Para preferencias personales, es lo que se quiere. Para una regla de seguridad, no basta.

Riesgo Lo que tiene que cumplirse en toda la empresa, sin excepciones por persona ni por repositorio, va en la configuración gestionada. La documentación lo plantea así: settings para la imposición técnica y un CLAUDE.md gestionado para la orientación, como estándares de código o recordatorios de cumplimiento. Y añade que algunas reglas del archivo compartido, como las de permitir, no se aplican hasta que cada persona confía en la carpeta; las de denegar y preguntar se aplican de inmediato.

Un CLAUDE.md corto se sigue mejor

Sacar las reglas que imponen tiene un efecto secundario: el CLAUDE.md adelgaza, y eso también es una ganancia. La documentación propone menos de 200 líneas por archivo, porque los archivos largos consumen más contexto y reducen el grado en que se siguen. La guía de buenas prácticas da un test para cada línea: si quitarla no haría que Claude se equivocara, sobra. Si Claude sigue haciendo algo pese a una regla en contra, probablemente el archivo es demasiado largo y la regla se pierde.

Lo que solo aplica a una parte del código puede ir en reglas por ruta dentro de .claude/rules/, que se cargan cuando el agente trabaja con esos archivos. Y lo que se necesita solo a veces, en una skill, que se carga cuando hace falta. Cómo se cura ese texto compartido para que siga siendo útil lo desarrollamos en instrucciones compartidas y curadas, y cuándo conviene convertir un procedimiento en skill, en la guía práctica de skills.

La configuración del agente es código

Si los permisos y los hooks deciden qué puede hacer el agente en un repositorio, cambiarlos es cambiar el comportamiento del sistema. Merece el mismo trato que el código: un pull request, alguien que lo revisa y un motivo escrito. Un hook nuevo que bloquea algo, o un permiso que se relaja, es exactamente el tipo de cambio que nadie debería encontrarse por sorpresa.

Es la misma idea que defendemos para los prompts y las skills en evals en cada pull request: lo que cambia el comportamiento de un agente pasa por la misma puerta que el resto del código. Y es la misma pregunta de fondo que en la especificación es donde se firma: dónde decide una persona y qué queda escrito.

Fuera de Claude Code Este reparto no depende de la herramienta. En cualquier asistente de código, la pregunta útil es qué parte de las reglas solo se le sugiere al modelo y qué parte comprueba algo que el modelo no controla. Las reglas que importan viven fuera del modelo.

Si vuestro CLAUDE.md lleva meses creciendo, la lectura útil no es «hay que escribirlo mejor». Es otra: cuántas de esas líneas son, en realidad, condiciones que nadie comprueba. Los cambios de producto que también afectan a cómo se configura Claude Code en un equipo los repasamos en los seis cambios técnicos del 15 de junio.

Preguntas frecuentes

¿Claude Code obedece siempre lo que pone el CLAUDE.md?

No está garantizado. La documentación de Claude Code dice que el modelo trata CLAUDE.md como contexto, no como configuración que se impone, y que cuanto más concretas y breves son las instrucciones, con más constancia las sigue. Para bloquear una acción decida lo que decida el modelo, remite a un hook PreToolUse.

¿Qué diferencia hay entre CLAUDE.md y .claude/settings.json?

CLAUDE.md es texto que el modelo lee al empezar cada sesión y que orienta su comportamiento. .claude/settings.json es configuración que aplica el propio cliente de Claude Code: permisos, hooks, plugins y variables de entorno. La documentación lo resume así: las reglas de settings se aplican decida lo que decida Claude; las instrucciones de CLAUDE.md dan forma a su comportamiento, pero no son una capa de imposición.

¿Qué es un hook en Claude Code?

Es un comando de shell que Claude Code ejecuta en un momento fijo de su ciclo, por ejemplo antes de usar una herramienta (PreToolUse) o después de editar un archivo. La documentación lo describe como control determinista: ciertas acciones ocurren siempre, en lugar de depender de que el modelo decida hacerlas. Un hook PreToolUse que sale con código 2 bloquea la acción y devuelve el motivo a Claude.

¿Hay que subir .claude/settings.json al repositorio?

Sí, si es la configuración del equipo. La documentación recomienda hacer commit de .claude/settings.json para que todo el que clone el repositorio tenga los mismos permisos, hooks y plugins. Las excepciones personales van en .claude/settings.local.json, que se queda fuera de git.

¿Cuánto debería ocupar un CLAUDE.md?

La documentación propone menos de 200 líneas por archivo: los archivos largos consumen más contexto y reducen el grado en que se siguen. La guía de buenas prácticas añade un test para cada línea: si quitarla no haría que Claude se equivocara, sobra. Lo que solo aplica a una parte del código puede ir en reglas por ruta dentro de .claude/rules/.

¿Cómo se impone una regla a toda la empresa y no solo a un repositorio?

Con la configuración gestionada (managed settings), que despliega la organización y está por encima del resto en el orden de precedencia. La documentación distingue entre settings para la imposición técnica y un CLAUDE.md gestionado para la orientación de comportamiento, como estándares de código o recordatorios de cumplimiento.

Fuentes

Bernat López
Escrito por
Bernat López
Fundador y CEO de onext

Bernat López es fundador y CEO de onext, boutique de IA. Acompaña a equipos de desarrollo y de producto a trabajar con IA con método —especificación antes de programar, una persona que decide donde hay riesgo y Spec-Driven Development— y aplica a su propia empresa lo que propone: onext funciona con su propio sistema agéntico.

LinkedIn →

¿Qué reglas de tu equipo dependen hoy de que el agente se acuerde?

En el diagnóstico gratuito de AI-Accelerated Development miramos con tu equipo dónde se pierde hoy la velocidad o el control y qué cambiaría con un método de especificación, implementación con IA y verificación. Lo que construimos se queda en tu equipo.

Ver cómo trabajamos

No hace falta parar las entregas.