Zum Hauptinhalt springen
Wenn Claude eine Anweisung ignoriert oder eine konfigurierte Funktion nicht angezeigt wird, liegt die Ursache normalerweise darin, dass die Datei nicht geladen wurde, sie von einem anderen Ort als erwartet geladen wurde oder eine andere Datei sie überschrieben hat. Diese Anleitung zeigt, wie Sie überprüfen, was Claude Code tatsächlich geladen hat, damit Sie eingrenzen können, welcher Fall zutrifft. Für Installations-, Authentifizierungs- und Konnektivitätsprobleme siehe stattdessen Troubleshooting.

Sehen Sie, was in den Kontext geladen wurde

Der Befehl /context zeigt alles, was das Kontextfenster für die aktuelle Sitzung belegt, aufgeschlüsselt nach Kategorie: Systemaufforderung, Speicherdateien, Skills, MCP-Tools und Konversationsnachrichten. Führen Sie ihn zuerst aus, um zu bestätigen, ob Ihre CLAUDE.md, Regeln oder Skill-Beschreibungen überhaupt vorhanden sind. Für Details zu einer bestimmten Kategorie folgen Sie mit dem dedizierten Befehl:
BefehlZeigt
/memoryWelche CLAUDE.md- und Regeldateien geladen wurden, plus Auto-Memory-Einträge
/skillsVerfügbare Skills aus Projekt-, Benutzer- und Plugin-Quellen
/agentsKonfigurierte Subagenten und ihre Einstellungen
/hooksAktive Hook-Konfigurationen
/mcpVerbundene MCP-Server und ihr Status
/permissionsAufgelöste Allow- und Deny-Regeln, die derzeit wirksam sind
/doctorKonfigurationsdiagnose: ungültige Schlüssel, Schemafehler, Installationsintegrität
/statusAktive Einstellungsquellen, einschließlich ob verwaltete Einstellungen wirksam sind
Wenn eine Speicherdatei in /memory fehlt, überprüfen Sie ihren Speicherort anhand von wie CLAUDE.md-Dateien geladen werden. Unterverzeichnis-CLAUDE.md-Dateien werden bei Bedarf geladen, wenn Claude eine Datei in diesem Verzeichnis mit dem Read-Tool liest, nicht beim Sitzungsstart. Wenn /memory bestätigt, dass die Datei geladen wurde, Claude aber immer noch einer bestimmten Anweisung nicht folgt, liegt das Problem wahrscheinlich darin, wie die Anweisung geschrieben ist, nicht darin, ob sie geladen wurde. CLAUDE.md funktioniert gut für die Art von Anleitung, die Sie einem neuen Teamkollegen geben würden, wie z. B. Projektkonventionen, Build-Befehle und wo Dateien hingehören. Die Einhaltung sinkt, wenn eine Anweisung mehrdeutig genug ist, um mehrere Interpretationen zuzulassen, wenn zwei Dateien widersprüchliche Anweisungen geben, oder wenn die Datei so lang geworden ist, dass einzelne Regeln weniger Aufmerksamkeit erhalten. Schreiben Sie effektive Anweisungen behandelt die Spezifität, Größe und Strukturmuster, die die Einhaltung hoch halten.
CLAUDE.md und Berechtigungen lösen unterschiedliche Probleme. CLAUDE.md teilt Claude mit, wie Ihr Projekt funktioniert, damit es gute Entscheidungen trifft. Berechtigungen und Hooks erzwingen Grenzen unabhängig davon, was Claude entscheidet. Verwenden Sie CLAUDE.md für „wir machen es hier so”. Verwenden Sie Berechtigungen oder Hooks für Sicherheitsgrenzen und alles, das niemals passieren darf, wenn Sie eine Garantie statt einer Anleitung benötigen.

Überprüfen Sie aufgelöste Einstellungen

Einstellungen werden über verwaltete, Benutzer-, Projekt- und lokale Bereiche zusammengeführt. Verwaltete Einstellungen gewinnen immer, wenn sie vorhanden sind. Bei den übrigen überschreibt der nähere Bereich den breiteren in der Reihenfolge lokal, dann Projekt, dann Benutzer. Einige Einstellungen können auch durch Befehlszeilenflaggen oder Umgebungsvariablen festgelegt werden, die als eine weitere Überschreibungsebene fungieren. Wenn eine Einstellung nicht angewendet zu werden scheint, wird der von Ihnen festgelegte Wert normalerweise durch einen anderen Bereich oder eine Umgebungsvariable überschrieben. Führen Sie /doctor aus, um Ihre Konfigurationsdateien zu validieren und ungültige Schlüssel oder Schemafehler zu identifizieren. Führen Sie /status aus, um zu sehen, welche Einstellungsquellen aktiv sind, einschließlich ob verwaltete Einstellungen wirksam sind. Um zu verstehen, welcher Bereich für einen bestimmten Schlüssel gewinnt, siehe Wie Bereiche interagieren.

Überprüfen Sie MCP-Server

Führen Sie /mcp aus, um jeden konfigurierten Server, seinen Verbindungsstatus und ob Sie ihn für das aktuelle Projekt genehmigt haben, zu sehen. Ein Server kann korrekt definiert sein, aber aus einigen häufigen Gründen immer noch keine Tools bereitstellen:
  • Projektbezogene Server in .mcp.json erfordern eine einmalige Genehmigung. Wenn die Aufforderung verworfen wurde, bleibt der Server deaktiviert, bis Sie ihn von /mcp aus genehmigen.
  • Ein Server, der nicht startet, wird in /mcp als fehlgeschlagen angezeigt. Relative Dateipfade in command oder args sind eine häufige Ursache, da sie gegen das Verzeichnis aufgelöst werden, von dem aus Sie Claude Code gestartet haben, nicht gegen den Speicherort von .mcp.json.
  • Ein Server, der als verbunden angezeigt wird, aber null Tools auflistet, hat erfolgreich gestartet, gibt aber keine Toolliste zurück. Wählen Sie Reconnect von /mcp. Wenn die Anzahl bei null bleibt, führen Sie claude --debug mcp aus, um die Stderr-Ausgabe des Servers zu sehen.
Für Konfigurationsspeicherorte und Bereichsregeln siehe MCP.

Überprüfen Sie Hooks

Führen Sie /hooks aus, um jeden Hook aufzulisten, der für die aktuelle Sitzung registriert ist, gruppiert nach Ereignis. Wenn ein von Ihnen definierter Hook nicht angezeigt wird, wird er nicht gelesen: Hooks gehen unter den Schlüssel "hooks" in einer Einstellungsdatei, nicht in einer eigenständigen Datei. Wenn der Hook angezeigt wird, aber nicht ausgelöst wird, ist der Matcher die übliche Ursache. Das Feld matcher ist eine einzelne Zeichenkette, die | verwendet, um mehrere Tool-Namen zu entsprechen, z. B. "Edit|Write". Ein falsch geschriebener Tool-Name schlägt stillschweigend fehl, da der Matcher nie übereinstimmt. Ein Array-Wert ist ein Schemafehler: Claude Code zeigt einen Einstellungsfehler an, /doctor meldet den Validierungsfehler, und der Hook-Eintrag wird gelöscht, sodass er nicht in /hooks angezeigt wird. Änderungen an settings.json werden in der laufenden Sitzung nach einer kurzen Dateistabilitätsverzögerung wirksam. Sie müssen nicht neu starten. Wenn /hooks einige Sekunden nach dem Speichern immer noch die alte Definition anzeigt, führen Sie /hooks erneut aus, um die Ansicht zu aktualisieren. Wenn /hooks den Hook anzeigt, aber er wird immer noch nicht ausgelöst, besteht der nächste Schritt darin, die Hook-Auswertung live zu beobachten. Starten Sie eine Sitzung mit claude --debug hooks und lösen Sie den Tool-Aufruf aus. Das Debug-Protokoll zeichnet jedes Ereignis, welche Matcher überprüft wurden, und den Exit-Code und die Ausgabe des Hooks auf. Siehe Debug Hooks für das Protokollformat und Hooks Troubleshooting für häufige Fehlermuster.

Häufige Ursachen

Die meisten Konfigurationsüberraschungen lassen sich auf eine kleine Anzahl von Speicherort- und Syntaxregeln zurückführen. Überprüfen Sie diese, bevor Sie einen Fehler annehmen:
SymptomUrsacheBehebung
Hook wird nie ausgelöstmatcher ist ein JSON-Array statt einer ZeichenketteVerwenden Sie eine einzelne Zeichenkette mit |, um mehrere Tools zu entsprechen, z. B. "Edit|Write". Siehe Matcher-Muster.
Hook wird nie ausgelöstmatcher-Wert ist Kleinbuchstaben, z. B. "bash"Matching ist Groß-/Kleinschreibung-empfindlich. Tool-Namen werden großgeschrieben: Bash, Edit, Write, Read.
Hook wird nie ausgelöstHooks befinden sich in einer eigenständigen .claude/hooks.json-DateiEs gibt keine eigenständige Hooks-Datei. Definieren Sie Hooks unter dem Schlüssel "hooks" in settings.json. Siehe Hook-Konfiguration.
Berechtigungen, Hooks oder global gesetzte Umgebungsvariablen werden ignoriertKonfiguration wurde zu ~/.claude.json hinzugefügt~/.claude.json enthält App-Status und UI-Umschalter. permissions, hooks und env gehören zu ~/.claude/settings.json. Dies sind zwei verschiedene Dateien.
Ein settings.json-Wert scheint ignoriert zu werdenDerselbe Schlüssel ist in settings.local.json gesetztsettings.local.json überschreibt settings.json, und beide überschreiben ~/.claude/settings.json. Siehe Einstellungspriorität.
Skill erscheint nicht in /skillsSkill-Datei befindet sich unter .claude/skills/name.md statt in einem OrdnerVerwenden Sie einen Ordner mit SKILL.md darin: .claude/skills/name/SKILL.md.
Skill erscheint in /skills, aber Claude ruft ihn nie aufSkill hat disable-model-invocation: true in seinem Frontmatter, oder seine Beschreibung stimmt nicht damit überein, wie Sie die Anfrage formulierenÜberprüfen Sie das Badge in /skills: Ein Label „user-only” bedeutet, dass Claude es nicht von selbst auslöst. Siehe Skill-Aufruf.
Anweisungen im Unterverzeichnis CLAUDE.md scheinen ignoriert zu werdenUnterverzeichnisdateien werden bei Bedarf geladen, nicht beim SitzungsstartSie werden geladen, wenn Claude eine Datei in diesem Verzeichnis mit dem Read-Tool liest, nicht beim Start und nicht beim Schreiben oder Erstellen von Dateien dort. Siehe wie CLAUDE.md-Dateien geladen werden.
Subagent ignoriert CLAUDE.md-AnweisungenSubagenten erben nicht immer ProjektgedächtnisSetzen Sie kritische Regeln in den Agent-Dateitext, der zum Systemaufforderung des Subagenten wird. Siehe Subagent-Konfiguration.
Cleanup-Logik wird am Sitzungsende nie ausgeführtKein SessionEnd-Hook konfiguriertSessionStart und SessionEnd existieren beide. Siehe die Hook-Ereignisliste.
MCP-Server in .mcp.json werden nie geladenDatei befindet sich unter .claude/ oder verwendet das Konfigurationsformat von Claude DesktopProjekt-MCP-Konfiguration geht an die Repository-Root als .mcp.json, nicht in .claude/. Siehe MCP-Konfiguration.
Projekt-MCP-Server hinzugefügt, aber erscheint nichtDie einmalige Genehmigungsaufforderung wurde verworfenProjektbezogene Server erfordern Genehmigung. Führen Sie /mcp aus, um den Status zu sehen und zu genehmigen.
MCP-Server kann nicht von einigen Verzeichnissen aus gestartet werdencommand oder args verwendet einen relativen DateipfadVerwenden Sie absolute Pfade für lokale Skripte. Ausführbare Dateien auf Ihrem PATH wie npx oder uvx funktionieren wie gewohnt.
MCP-Server startet ohne erwartete UmgebungsvariablenVariablen befinden sich in settings.json env, die nicht an MCP-Kindprozesse weitergegeben werdenSetzen Sie stattdessen pro-Server env in .mcp.json.
Bash(rm *)-Deny-Regel blockiert nicht /bin/rm oder find -deletePräfix-Regeln entsprechen der wörtlichen Befehlszeichenkette, nicht der zugrunde liegenden ausführbaren DateiFügen Sie explizite Muster für jede Variante hinzu, oder verwenden Sie einen PreToolUse-Hook oder die Sandbox für eine harte Garantie.

Verwandte Ressourcen

Für vollständige Referenzen zu jeder Konfigurationsoberfläche siehe die dedizierte Seite:
  • .claude-Verzeichnisreferenz: jeder Konfigurationsdateispeicherort und wer ihn liest
  • Einstellungen: Prioritätsreihenfolge und die vollständige Schlüsselliste
  • Hooks-Referenz: Ereignisnamen, Payloads und --debug hooks-Ausgabeformat
  • MCP: Server-Konfiguration, Genehmigung und /mcp-Ausgabe
  • Troubleshooting: claude doctor, Plattformprobleme und Installationsprobleme