Saltar al contenido principal
Cuando Claude ignora una instrucción o una característica que configuró no aparece, la causa suele ser que el archivo no se cargó, se cargó desde una ubicación diferente a la que esperaba, u otro archivo la anuló. Esta guía muestra cómo inspeccionar qué cargó realmente Claude Code para que pueda reducir cuál se aplica. Para problemas de instalación, autenticación y conectividad, consulte Troubleshooting installation and login en su lugar.

Ver qué se cargó en el contexto

El comando /context muestra todo lo que ocupa la ventana de contexto para la sesión actual, desglosado por categoría: indicación del sistema, archivos de memoria, skills, herramientas MCP y mensajes de conversación. Ejecútelo primero para confirmar si su CLAUDE.md, reglas o descripciones de skills están presentes en absoluto. Para obtener detalles sobre una categoría específica, continúe con el comando dedicado:
ComandoMuestra
/memoryQué archivos CLAUDE.md y rules se cargaron, más entradas de memoria automática
/skillsSkills disponibles de fuentes de proyecto, usuario y plugin
/agentsSubagentes configurados y sus configuraciones
/hooksConfiguraciones de hook activas
/mcpServidores MCP conectados y su estado
/permissionsReglas de permitir y denegar resueltas actualmente en vigor
/doctorDiagnósticos de configuración: claves inválidas, errores de esquema, salud de instalación
/debug [issue]Habilita el registro de depuración para la sesión e indica a Claude que diagnostique usando la salida del registro y las rutas de configuración
/statusFuentes de configuración activas, incluido si la configuración administrada está en vigor
Si falta un archivo de memoria en /memory, verifique su ubicación contra cómo se cargan los archivos CLAUDE.md. Los archivos CLAUDE.md del subdirectorio se cargan bajo demanda cuando Claude lee un archivo en ese directorio con la herramienta Read, no al inicio de la sesión. Si /memory confirma que el archivo se cargó pero Claude aún no sigue una instrucción particular, el problema probablemente sea cómo se escribe la instrucción en lugar de si se cargó. CLAUDE.md funciona bien para el tipo de orientación que daría a un nuevo compañero de equipo, como convenciones de proyecto, comandos de compilación y dónde pertenecen los archivos. La adherencia disminuye cuando una instrucción es lo suficientemente vaga como para interpretarse de múltiples formas, cuando dos archivos dan direcciones conflictivas, o cuando el archivo ha crecido lo suficiente como para que las reglas individuales reciban menos atención. Escribir instrucciones efectivas cubre los patrones de especificidad, tamaño y estructura que mantienen la adherencia alta.
CLAUDE.md y los permisos resuelven problemas diferentes. CLAUDE.md le dice a Claude cómo funciona su proyecto para que tome buenas decisiones. Permisos y hooks aplican límites independientemente de lo que Claude decida. Use CLAUDE.md para “lo hacemos de esta manera aquí”. Use permisos o hooks para límites de seguridad y cualquier cosa que nunca deba suceder, donde necesita una garantía en lugar de orientación.

Verificar configuración resuelta

La configuración se fusiona en ámbitos administrados, de usuario, de proyecto y locales. La configuración administrada siempre gana cuando está presente. Entre el resto, el ámbito más cercano anula el más amplio en el orden local, luego proyecto, luego usuario. Algunos ajustes también se pueden establecer mediante banderas de línea de comandos o variables de entorno, que actúan como otra capa de anulación. Cuando una configuración no parece aplicarse, el valor que estableció generalmente se anula por otro ámbito o una variable de entorno. Ejecute /doctor para validar sus archivos de configuración y mostrar claves inválidas o errores de esquema. Cuando /doctor informa de problemas, presione f para enviar el informe de diagnóstico a Claude y dejar que lo guíe a través de las correcciones. Ejecute /status para ver qué fuentes de configuración están activas, incluido si la configuración administrada está en vigor. Para entender qué ámbito gana para una clave determinada, consulte Cómo interactúan los ámbitos.

Verificar servidores MCP

Ejecute /mcp para ver cada servidor configurado, su estado de conexión y si lo ha aprobado para el proyecto actual. Un servidor puede estar definido correctamente pero aún no proporcionar herramientas por algunas razones comunes:
  • Los servidores con ámbito de proyecto en .mcp.json requieren una aprobación única. Si se descartó el mensaje, el servidor permanece deshabilitado hasta que lo apruebe desde /mcp.
  • Un servidor que no se inicia se muestra como fallido en /mcp. Las rutas de archivo relativas en command o args son una causa frecuente, ya que se resuelven contra el directorio desde el que lanzó Claude Code en lugar de la ubicación de .mcp.json.
  • Un servidor que se muestra como conectado pero enumera cero herramientas se ha iniciado correctamente pero no devuelve una lista de herramientas. Seleccione Reconnect desde /mcp. Si el recuento permanece en cero, ejecute claude --debug mcp para ver la salida stderr del servidor.
Para ubicaciones de configuración y reglas de ámbito, consulte MCP.

Verificar hooks

Ejecute /hooks para enumerar cada hook registrado para la sesión actual, agrupado por evento. Si un hook que definió no aparece, no se está leyendo: los hooks van bajo la clave "hooks" en un archivo de configuración, no en un archivo independiente. Si el hook aparece pero no se dispara, el matcher es la causa habitual. El campo matcher es una cadena única que usa | para coincidir con múltiples nombres de herramientas, por ejemplo "Edit|Write". Un nombre de herramienta mal escrito falla silenciosamente porque el matcher nunca coincide. Un valor de matriz es un error de esquema: Claude Code muestra un aviso de error de configuración, /doctor informa del error de validación y la entrada del hook se descarta para que no aparezca en /hooks. Las ediciones en settings.json surten efecto en la sesión en ejecución después de un breve retraso de estabilidad de archivo. No necesita reiniciar. Si /hooks aún muestra la definición anterior unos segundos después de guardar, ejecute /hooks nuevamente para actualizar la vista. Si /hooks muestra el hook pero aún no se dispara, el siguiente paso es ver la evaluación del hook en vivo. Inicie una sesión con claude --debug hooks y active la llamada de herramienta. El registro de depuración registra cada evento, qué matchers se verificaron y el código de salida y la salida del hook. Consulte Depurar hooks para el formato del registro y solución de problemas de hooks para patrones de fallo comunes.

Probar contra una configuración limpia

Si las comprobaciones dirigidas no aíslan la causa, o su configuración está en un estado desconocido, compare contra una sesión que no carga nada de su configuración habitual. Apunte CLAUDE_CONFIG_DIR a un directorio vacío para omitir todo bajo ~/.claude, e inicie desde un directorio que no tenga carpeta .claude, .mcp.json o CLAUDE.md para que la configuración del proyecto también se omita.
cd /tmp && CLAUDE_CONFIG_DIR=/tmp/claude-clean claude
La sesión limpia no tiene configuración de usuario o proyecto, hooks, servidores MCP, plugins o memoria.
  • La configuración administrada aún se aplica si su organización la implementa, ya que vive en una ruta del sistema fuera de ~/.claude
  • En Linux y Windows, se le pedirá que inicie sesión nuevamente porque las credenciales se almacenan en el directorio de configuración
  • En macOS, las credenciales están en el Keychain y se transfieren a la sesión limpia
Si el problema desaparece aquí, la causa está en algún lugar de sus archivos reales ~/.claude o .claude del proyecto. Reintrodúzcalos uno a la vez, copiando archivos en el directorio temporal o iniciando desde su proyecto, para encontrar cuál es. Si persiste en la sesión limpia, la causa está fuera de su configuración de usuario y proyecto. Ejecute /status para verificar si la configuración administrada está en vigor, busque variables de entorno que afecten a Claude Code, luego consulte Solución de problemas.

Verificar causas comunes

La mayoría de las sorpresas de configuración se remontan a un pequeño conjunto de reglas de ubicación y sintaxis. Verifique estos antes de asumir un error:
SíntomaCausaSolución
Hook nunca se disparamatcher es una matriz JSON en lugar de una cadenaUse una cadena única con | para coincidir con múltiples herramientas, por ejemplo "Edit|Write". Consulte patrones de matcher.
Hook nunca se disparaEl valor matcher está en minúsculas, por ejemplo "bash"La coincidencia distingue mayúsculas de minúsculas. Los nombres de herramientas están capitalizados: Bash, Edit, Write, Read.
Hook nunca se disparaLos hooks están definidos en un archivo independiente en lugar de en settings.jsonNo hay archivo de hooks independiente para la configuración del proyecto o del usuario. Defina hooks bajo la clave "hooks" en settings.json. Solo los plugins cargan un archivo hooks/hooks.json separado. Consulte configuración de hook.
Los permisos, hooks o env establecidos globalmente se ignoranLa configuración se agregó a ~/.claude.json~/.claude.json contiene el estado de la aplicación y los cambios de interfaz de usuario. permissions, hooks y env pertenecen a ~/.claude/settings.json. Estos son dos archivos diferentes.
Un valor settings.json parece ignoradoLa misma clave se establece en settings.local.jsonsettings.local.json anula settings.json, y ambos anulan ~/.claude/settings.json. Consulte precedencia de configuración.
Skill no aparece en /skillsEl archivo de skill está en .claude/skills/name.md en lugar de en una carpetaUse una carpeta con SKILL.md dentro: .claude/skills/name/SKILL.md.
Skill aparece en /skills pero Claude nunca lo invocaSkill tiene disable-model-invocation: true en su frontmatter, o su descripción no coincide con cómo formula la solicitudVerifique la insignia en /skills: una etiqueta “user-only” significa que Claude no lo activará por su cuenta. Consulte invocación de skill.
Las instrucciones de CLAUDE.md del subdirectorio parecen ignoradasLos archivos del subdirectorio se cargan bajo demanda, no al inicio de la sesiónSe cargan cuando Claude lee un archivo en ese directorio con la herramienta Read, no al lanzar y no al escribir o crear archivos allí. Consulte cómo se cargan los archivos CLAUDE.md.
El subagente ignora las instrucciones de CLAUDE.mdLos agentes Explore y Plan integrados omiten CLAUDE.md. Los subagentes personalizados lo cargan de la misma manera que la conversación principalPara Explore o Plan, restate la instrucción en su indicador delegado. Para un subagente personalizado, coloque las instrucciones críticas en el cuerpo del archivo del agente, que se convierte en el indicador del sistema del subagente. Consulte qué se carga al inicio.
La lógica de limpieza nunca se ejecuta al final de la sesiónNo hay hook SessionEnd configuradoAgregue un hook SessionEnd en settings.json. Consulte la lista de eventos de hook.
Los servidores MCP en .mcp.json nunca se carganEl archivo está bajo .claude/ o usa el formato de configuración de Claude DesktopLa configuración de MCP del proyecto va en la raíz del repositorio como .mcp.json, no dentro de .claude/. Consulte configuración de MCP.
Los servidores MCP agregados bajo mcpServers en settings.json nunca aparecensettings.json no lee una clave mcpServersDefina servidores de proyecto en .mcp.json en la raíz del repositorio, o ejecute claude mcp add --scope user para servidores con ámbito de usuario. Consulte configuración de MCP.
El servidor MCP del proyecto agregado pero no apareceSe descartó el mensaje de aprobación únicaLos servidores con ámbito de proyecto requieren aprobación. Ejecute /mcp para ver el estado y aprobar.
El servidor MCP no se inicia desde algunos directorioscommand o args usa una ruta de archivo relativaUse rutas absolutas para scripts locales. Los ejecutables en su PATH como npx o uvx funcionan tal cual.
El servidor MCP se inicia sin las variables de entorno esperadasLas variables están en settings.json env, que no se propaga a procesos secundarios de MCPEstablezca env por servidor dentro de .mcp.json en su lugar.
La regla de denegación Bash(rm *) no bloquea /bin/rm o find -deleteLas reglas de prefijo coinciden con la cadena de comando literal, no con el ejecutable subyacenteAgregue patrones explícitos para cada variante, o use un hook PreToolUse o el sandbox para una garantía dura.

Recursos relacionados

Para una referencia completa en cada superficie de configuración, consulte la página dedicada: