Skill-Tool ausgeführt wird, anstatt einen neuen Tool-Eintrag hinzuzufügen.
Im Auto-Modus entscheidet ein Klassifizierer die meisten Berechtigungsaufforderungen anstelle von Ihnen. Die Spalte
Berechtigung erforderlich zeigt, ob das Tool im Manuellen Modus für Pfade im Arbeitsverzeichnis auffordert. Datei-Zugriffs-Tools, die mit Nein gekennzeichnet sind, einschließlich Read, Grep und Glob, fordern weiterhin für Pfade außerhalb des Arbeitsverzeichnisses und zusätzlicher Verzeichnisse auf. Bash ist mit Ja gekennzeichnet, führt aber einen integrierten Satz von schreibgeschützten Befehlen ohne Aufforderung aus.Tools mit Berechtigungsregeln und Hooks konfigurieren
In den meisten Fällen entscheidet Claude selbst, wann diese Tools verwendet werden sollen, und Sie müssen sie nicht selbst benennen, wenn Sie mit Claude interagieren. Sie verweisen auf Tool-Namen direkt, wenn Sie Berechtigungen und andere Konfigurationen definieren:- in
permissions.allowundpermissions.denyin den Einstellungen und in der/permissions-Schnittstelle - in den CLI-Flags
--allowedToolsund--disallowedTools - in den Optionen
allowedToolsunddisallowedToolsdes Agent SDK - in der Frontmatter
allowed-toolseines Skills - in der
if-Bedingung eines Hooks
ToolName(specifier). Der Specifier hängt vom Tool ab, und mehrere Tools verwenden ein gemeinsames Format:
Tools, die hier nicht aufgeführt sind, wie
ExitPlanMode oder ShareOnboardingGuide, akzeptieren nur den bloßen Tool-Namen ohne Specifier.
Eine Edit(...)-Erlaubnisregel gewährt auch Lesezugriff auf denselben Pfad, sodass Sie keine entsprechende Read(...)-Regel benötigen. Eine Read(...)-Verweigerungsregel blockiert auch die Tools Edit und Write auf demselben Pfad, einschließlich der Erstellung einer neuen Datei dort, da beide Tools Inhalte ändern, die Claude zurücklesen können muss. Die Read-Verweigerungsprüfung erfordert Claude Code v2.1.208 oder später bei Bearbeitungen, und v2.1.228 oder später bei Schreibvorgängen.
Hook-matcher-Felder verwenden bloße Tool-Namen, nicht das geklammerte Regelformat. Siehe Matcher-Muster für die Matching-Regeln. Für die Feldnamen, die jedes Tool an tool_input in Hooks übergibt, siehe die PreToolUse-Eingabereferenz.
Verhalten des Agent-Tools
Das Agent-Tool startet einen Subagenten in einem separaten Kontextfenster. Der Subagent arbeitet seine Aufgabe autonom ab und gibt dann sein Ergebnis an das übergeordnete Gespräch zurück. Das übergeordnete Gespräch sieht nicht die Zwischentool-Aufrufe oder Ausgaben des Subagenten, sondern nur dieses Endergebnis. Mit aktivierten Agent-Teams kann ein Aufruf mit einemname einen Teamkollegen starten, der stattdessen über Team-Nachrichten berichtet, anstatt ein Ergebnis zurückzugeben.
Um die Anzahl der Durchläufe eines Subagenten zu begrenzen, setzen Sie maxTurns in der Subagenten-Definition. Wenn der Subagent das Limit erreicht, markiert Claude Code das zurückgegebene Ergebnis als Teilausgabe, und Claude kann den Subagenten fortsetzen, um fortzufahren.
Das gleiche Agent-Tool startet auch abgespaltene Subagenten überall dort, wo Fork-Modus aktiviert ist. Ein Fork erbt das vollständige übergeordnete Gespräch, anstatt neu zu beginnen, läuft im Hintergrund außer in den Fällen, die im Vordergrund bleiben, und zeigt dennoch Berechtigungsaufforderungen in Ihrem Terminal an. Der Rest dieses Abschnitts beschreibt Nicht-Fork-Subagenten.
Welche Tools ein Nicht-Fork-Subagent verwenden kann, hängt von den Feldern tools und disallowedTools in der Subagenten-Definition ab:
- Kein Feld gesetzt: Der Subagent erbt jedes für Subagenten verfügbare Tool.
- Nur
tools: Der Subagent erhält nur die aufgelisteten Tools. - Nur
disallowedTools: Der Subagent erhält jedes übergeordnete Tool außer den aufgelisteten. - Beide gesetzt:
disallowedToolshat Vorrang. Ein Tool, das in beiden aufgelistet ist, wird entfernt.
tools aufgelistet ist. Wenn die Bedingungen im SubagentHandback-Tools-Tabelleneintrag erfüllt sind, gibt Claude Code dem Subagenten auch dieses Tool, auch wenn Sie es aus tools auslassen oder in disallowedTools aufgelistet haben.
Wenn jeder Eintrag in der tools-Liste eines Subagenten nicht mit einem verwendbaren Tool übereinstimmt, gibt das Agent-Tool normalerweise einen Fehler zurück, der die Einträge benennt, anstatt den Subagenten zu starten; siehe Agent würde mit null Tools gestartet für die Nachricht und wie man jeden Eintrag behebt.
Das Starten des Subagenten selbst fordert nicht zur Berechtigung auf. Claude Code überprüft die eigenen Tool-Aufrufe des Subagenten gegen Ihre Berechtigungsregeln, während er läuft.
Wo Sie die Berechtigungsaufforderungen eines Subagenten sehen, hängt davon ab, ob er im Vordergrund oder im Hintergrund läuft. Claude Code führt Subagenten standardmäßig im Hintergrund aus, außer in den Fällen, die im Vordergrund laufen.
- Vordergrund-Subagenten zeigen die gleichen Berechtigungsaufforderungen, die Sie im Hauptgespräch sehen würden, in dem Moment, in dem jeder Tool-Aufruf stattfindet.
- Hintergrund-Subagenten zeigen Berechtigungsabfragen in Ihrer Hauptsitzung an. Die Abfrage benennt, welcher Subagent fragt, und das Drücken von Esc verweigert diesen einen Tool-Aufruf, ohne den Subagenten zu stoppen.
tools-Feld, beispielsweise indem Sie Bash von der Liste ausschließen, oder setzen Sie Ablehnungsregeln in Ihren Einstellungen.
Verhalten des AskUserQuestion-Tools
Claude verwendetAskUserQuestion, um Ihnen Multiple-Choice-Fragen zu stellen, wenn eine Entscheidung oder Klärung erforderlich ist. Antworten Sie, indem Sie eine Option auswählen, oder geben Sie Ihren eigenen Text über die Zeile Other oder das Notizfeld ein.
Wenn Sie durch Eingabe Ihres eigenen Textes antworten, leitet Claude Code die Antwort mit neutraler Formulierung weiter, damit Claude das befolgt, was Sie geschrieben haben, einschließlich einer Anfrage, zu warten oder zunächst zu erklären.
Timeout für automatische Fortsetzung von Fragen
Fragen bleiben offen, bis Sie sie beantworten. Wenn Sie möchten, dass eine unbeantwortete Frage irgendwann von selbst geschlossen wird und Claude ohne Sie fortfahren kann, stellen Sie die EinstellungaskUserQuestionTimeout auf 60s, 5m oder 10m ein, entweder in Ihrer Benutzerdatei settings.json oder in der Zeile Question auto-continue timeout in /config.
Nachdem eine Frage so lange ohne Eingabe offen war, schließt sich der Dialog von selbst: Er sendet alle Optionen, die Sie bereits ausgewählt haben, und teilt Claude mit, dass Sie möglicherweise weg von Ihrer Tastatur sind, sodass Claude nach eigenem Ermessen fortfahren kann und später erneut fragen kann. Sie sehen einen Countdown für die letzten 20 Sekunden. Drücken Sie eine beliebige Taste, um den Timer neu zu starten. Solange Ihr Terminal meldet, dass sein Fenster den Fokus hat, läuft der Timer nicht ab.
Der Timer startet nie bei einer Frage, die Claude in einer Hintergrundsitzung, im Screenreader-Modus oder während einer Verbindung der Sitzung mit Remote Control stellt. Diese Fragen warten, bis Sie sie beantworten. Der Timeout gilt nur für die Multiple-Choice-Fragen von AskUserQuestion; Berechtigungsabfragen, einschließlich der Plangenehmigung, werden bei Untätigkeit nie automatisch aufgelöst.
Bash-Tool-Verhalten
Das Bash-Tool führt jeden Befehl in einem separaten Prozess aus.Was zwischen Befehlen erhalten bleibt
- Wenn Claude
cdin der Hauptsitzung ausführt, wird das neue Arbeitsverzeichnis zu späteren Bash-Befehlen übernommen, solange es sich im Projektverzeichnis oder einem zusätzlichen Arbeitsverzeichnis befindet, das Sie mit--add-dir,/add-diroderadditionalDirectoriesin den Einstellungen hinzugefügt haben. Dies umfasst Befehle, die Claude in Reaktion auf Ihre späteren Nachrichten ausführt.- Subagent-Sitzungen übernehmen niemals Änderungen des Arbeitsverzeichnisses.
- Wenn
cdaußerhalb dieser Verzeichnisse landet, setzt Claude Code auf das Projektverzeichnis zurück und fügtShell cwd was reset to <dir>zum Tool-Ergebnis hinzu. - Um diese Übernahme zu deaktivieren, damit jeder Bash-Befehl im Projektverzeichnis startet, setzen Sie
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1.
- Umgebungsvariablen bleiben nicht erhalten. Ein
exportin einem Befehl ist im nächsten nicht verfügbar. - Aliase und Shell-Funktionen, die in Ihrer Shell-Startdatei definiert sind, sind verfügbar. Beim Sitzungsstart sourced Claude Code
~/.zshrc,~/.bashrcoder~/.profileje nach Ihrer Shell, erfasst die resultierenden Aliase, Funktionen und Shell-Optionen und wendet sie auf jeden Bash-Befehl an.
CLAUDE_ENV_FILE auf ein Shell-Skript, bevor Sie Claude Code starten, oder verwenden Sie einen SessionStart-Hook, um es dynamisch zu füllen.
Timeout- und Ausgabegrenzen
Jeder Befehl läuft unter einem Timeout, und Claude verwaltet ihn: Wenn er länger als die Standardzeit für einen Befehl benötigt, übergibt er dentimeout-Parameter mit diesem Aufruf. Sie setzen niemals ein Pro-Befehl-Timeout.
Zwei Umgebungsvariablen steuern, was Claude für einen Befehl erhält, der im Vordergrund läuft:
BASH_DEFAULT_TIMEOUT_MS— die Standardeinstellung, wenn Claude kein Timeout übergibt; standardmäßig zwei MinutenBASH_MAX_TIMEOUT_MS— mit der Standardeinstellung wird die Obergrenze gesetzt, die das begrenzt, was Claude anfordert: die effektive Obergrenze ist die größere der beiden, standardmäßig zehn Minuten
timeout bei einem Befehl, den Claude im Hintergrund startet, stattdessen, wie lange der Befehl dort laufen darf, mit dem separaten Standard und Maximum dieses Limits. Das PowerShell-Tool folgt den gleichen Timeout-Regeln und liest die gleichen zwei Variablen.
Ausgabegrenzen
Claude Code streamt die Ausgabe eines Befehls während der Ausführung in eine Arbeitsdatei; ein Befehl, dessen Ausgabe 5 GB überschreitet, wird beendet. Wenn der Befehl beendet ist, liest Claude Code die Ausgabe aus dieser Datei zurück, bis zum unten beschriebenen Lesefenster. Wie viel der Ausgabe Claude inline erreicht, hängt davon ab, ob Claude Code das Ergebnis als Fehler behandelt:
Ein Befehl, der mit 1 beendet wird, zählt als gültiges Ergebnis für das Bash-Tool nur, wenn Claude Code den Exit-Code 1 als gutartiges Ergebnis für diesen Befehl erkennt:
grep, rg, egrep, fgrep, find, diff, test und [, plus git diff und git grep. Jeder andere Befehl, der mit 1 beendet wird, zählt als Fehler, auch wenn 1 ein gutartiges Informationsergebnis ist: keine Übereinstimmungen für pgrep und jq -e, Dateien, die sich für cmp unterscheiden.
BASH_MAX_OUTPUT_LENGTH setzt, wie viele Zeichen der Ausgabe Claude Code aus der Arbeitsdatei in das Ergebnis eines Befehls zurückliest: standardmäßig 30.000, bis zu einer harten Obergrenze von 150.000. Erhöhen Sie dies, wenn Ihre Befehle routinemäßig dieses Fenster überlasten, z. B. bei einem ausführlichen Build oder einem vollständigen Test-Suite-Log. Das Erhöhen vergrößert das Lesefenster, das auch das Fenster ist, aus dem der Auszug eines fehlgeschlagenen Befehls geschnitten wird. Es erhöht nicht die Inline-Obergrenzen: ein gültiges Ergebnis über der Inline-Obergrenze kommt als Dateipfad plus Vorschau an, unabhängig von dieser Variablen.
Um zu ändern, wie viel eines gültigen Ergebnisses Claude inline erhält, setzen Sie stattdessen die Einstellung bashOutputMaxChars, bis zu 128.000 Zeichen. Sie dimensioniert die Inline-Obergrenze und das Lesefenster zusammen, und Claude Code ignoriert dann BASH_MAX_OUTPUT_LENGTH. Erfordert Claude Code v2.1.261 oder später.
Hintergrund-Befehle
Für lang laufende Prozesse wie Dev-Server oder Watch-Builds kann Clauderun_in_background: true setzen, um den Befehl als Hintergrund-Task zu starten und weiter zu arbeiten, während er läuft. Listen Sie Hintergrund-Tasks auf und stoppen Sie sie mit /tasks. Nachdem Sie einen dort stoppen oder von einem verbundenen Client wie der Desktop-App, geht Claude weiter, anstatt zu warten. Wenn ein Subagent den Befehl gestartet hat, ist es dieser Subagent, der weitergeht.
Wenn ein Hintergrund-Befehl stoppt
Ein Befehl, den ein Vordergrund-Subagent gestartet hat, stoppt, wenn dieser Subagent seine Ausführung beendet, ob sie erfolgreich war, fehlgeschlagen ist oder unterbrochen wurde. Ein Befehl, den die Hauptkonversation oder ein Hintergrund-Subagent gestartet hat, läuft nach einer endgültigen Antwort weiter, bis er beendet wird, gestoppt wird oder sein Zeitlimit erreicht. Solange ein Befehl, den die Hauptkonversation gestartet hat, noch läuft, bleibt ein Lauf im nicht interaktiven Modus mit dem-p-Flag nach seinem Ergebnis geöffnet, bis dieser Befehl beendet wird oder sein Zeitlimit erreicht. Ein Befehl, den ein Hintergrund-Subagent gestartet hat, wird gestoppt, wenn der Lauf endet.
Zeitlimit für Hintergrund-Befehle
In einer Sitzung, die unbeaufsichtigt läuft, etwa ein Lauf mit dem-p-Flag, eine Agent SDK-Anwendung, ein CI-Job oder eine Cloud-Sitzung, haben Bash- und PowerShell-Befehle im Hintergrund ein Zeitlimit. Eine lokale Sitzung, in der Sie über ein Terminal, die Desktop-App oder die VS Code-Erweiterung arbeiten, hat kein Zeitlimit für Hintergrund-Befehle.
Das Zeitlimit erfordert Claude Code v2.1.285 oder später. Vor v2.1.288 galt es in jeder Sitzung.
Das Zeitlimit wird ab dem Moment gezählt, in dem der Befehl in den Hintergrund eintritt:
- Ein Befehl, den Claude im Hintergrund startet, erhält 30 Minuten oder das
timeout, das Claude mitrun_in_backgroundübergibt, bis zu einem Maximum von 2 Stunden - Ein Befehl, der im Vordergrund startet und dann in den Hintergrund wechselt, z. B. bei seinem Timeout, erhält 30 Minuten ab dem Wechsel
-p-Flag, dessen Prompt Sie als Text statt mit --input-format stream-json übergeben, betragen beide Standardwerte 10 statt 30 Minuten, da der Lauf nach seinem Ergebnis auf Hintergrund-Befehle wartet.
Wenn ein Hintergrund-Befehl sein Zeitlimit erreicht, stoppt Claude Code ihn und teilt Claude mit, warum, und Claude kann den Befehl erneut mit einem längeren timeout starten, wenn die Arbeit noch erforderlich ist. Die Stop-Mitteilung lautet Background command "<description>" was stopped after reaching its background time limit.
Erhöhen Sie das Zeitlimit für Hintergrund-Befehle
Zwei Umgebungsvariablen erhöhen diese Limits für Bash- und PowerShell-Befehle gleichermaßen. Beide nehmen Millisekunden an, und keine kann ein Limit verkürzen: ein niedrigerer Wert lässt die Standardwerte und das 2-Stunden-Maximum bestehen.- Setzen Sie
BASH_DEFAULT_TIMEOUT_MSüber1800000, um den 30-Minuten-Standard durch diesen Wert zu ersetzen, sowohl für Befehle, die Claude ohnetimeoutstartet, als auch für verschobene Befehle. In einem-p-Lauf, dessen Prompt Sie als Text übergeben, ersetzt jeder Wert über600000dessen 10-Minuten-Standard - Setzen Sie
BASH_MAX_TIMEOUT_MSüber7200000, um das 2-Stunden-Maximum auf diesen Wert zu erhöhen. Das Setzen vonBASH_DEFAULT_TIMEOUT_MSüber7200000erhöht das Maximum auf die gleiche Weise
Vordergrund-Befehle, die in den Hintergrund wechseln
Wenn ein Vordergrund-Befehl sein Timeout erreicht, ohne zu beenden, verschiebt Claude Code ihn in den Hintergrund, anstatt ihn zu stoppen, es sei denn, der Befehl beginnt mitsleep. Ein verschobener Befehl hat sein Zeitlimit ab dem Wechsel, und ein Vordergrund-Subagent-Befehl stoppt immer noch, wenn dieser Subagent seine Ausführung beendet.
Das Setzen von CLAUDE_CODE_DISABLE_BACKGROUND_TASKS=1 oder die Ausführung im Bare-Modus deaktiviert Auto-Backgrounding zusammen mit dem Rest der Hintergrundaufgaben-Funktionalität, sodass ein Befehl, der sein Timeout erreicht, stattdessen gestoppt wird.
Das Ergebnis eines Befehls, der in den Hintergrund verschoben wird, gibt an, was passiert ist:
- Wenn das Timeout die Verschiebung auslöst, meldet das Ergebnis dies explizit:
Command did not complete within its 120s timeout and was moved to the background, wobei die Sekunden dem angewendeten Timeout entsprechen, gefolgt von der Task-ID und dem Pfad der Datei, in die die Ausgabe geschrieben wird. - Ein
cd,pushd,popdoderchdirin einem Befehl, der in den Hintergrund verschoben wird, wird niemals übernommen: das Ergebnis besagtSession cwd remains <dir>; directory changes made by the backgrounded command do not apply to subsequent commands., daher handelt Claude nicht auf eine Verzeichnisänderung, die nicht stattgefunden hat.
Speicherlimit unter Linux und WSL
Unter Linux und WSL setzen SieCLAUDE_CODE_TOOL_MEMORY_LIMIT auf eine Größe wie 4G, um den Speicher zu begrenzen, den Bash-, PowerShell- und Monitor-Tool-Befehle verwenden können, damit ein außer Kontrolle geratener Build nicht den Speicher beansprucht, den der Rest der Sitzung benötigt. Erfordert Claude Code v2.1.233 oder später. Vor v2.1.246 liefen Monitor-Tool-Befehle außerhalb der Obergrenze.
- Schreiben Sie die Größe als Anzahl von Bytes oder mit einem
K-,M-,G- oderT-Suffix. Setzen Sie0,off,false,noodernone, um die Obergrenze auszuschalten. Claude Code ignoriert jeden anderen Wert, den es nicht als Größe lesen kann, z. B.4e9. - Claude Code zählt alle Bash-, PowerShell- und Monitor-Befehle einer Sitzung gegen die eine Obergrenze, nicht jeden Befehl für sich.
- Claude Code wendet die Obergrenze mit einer Memory-Cgroup an. Wenn es die Cgroup nicht einrichten kann, laufen Befehle ohne Obergrenze, und das Debug-Log von
claude --debugsagt warum. - Nachdem der erste Prozess, den Claude Code startet, die Obergrenze eingeschaltet hat, oder sie aufgrund eines Off-Werts oder eines fehlgeschlagenen Cgroup-Setups ausgeschaltet hat, hält Claude Code dieses Ergebnis, bis Sie neu starten. Um einen geänderten oder entfernten Wert oder ein korrigiertes Setup anzuwenden, starten Sie
claudeerneut. - Wenn Befehle nicht unter der Obergrenze bleiben können, beendet der Kernel einen Befehl, und nichts in seinem Ergebnis nennt die Obergrenze.
CLAUDE_CODE_TOOL_MEMORY_CGROUP_EXCLUDE auf eine kommagetrennte Liste der Arten, die von der Obergrenze ausgenommen werden sollen; Claude Code wendet die Obergrenze auf jede Art an, die nicht auf Ihrer Liste steht. Setzen Sie es auf none, um jede Art zu begrenzen, oder auf all-new, um nur Bash-, PowerShell- und Monitor-Tool-Befehle zu begrenzen. Erfordert Claude Code v2.1.246 oder später. Die Arten, die Sie benennen können:
mcp: lokale MCP-Serverlsp: Sprachserverhooks: Hook-Befehleplugin: Befehle, die Plugins ausführenhelper: Claude Codes eigene Helper-Befehle, wiegitagent: untergeordnete Claude-Code-Prozesse, wie Agent-Teamkollegen
- Unbekannte Namen: Claude Code ignoriert Namen, die es nicht erkennt
- Variable nicht gesetzt: Claude Code nimmt die Menge der anderen begrenzten Arten aus der Konfiguration, die Anthropic vom Server liefert, und diese Menge kann sich im Laufe der Zeit ändern, daher setzen Sie die Variable, wenn Sie eine Menge benötigen, die sich nicht ändert
- Permission-Gating-Hooks: Auch wenn jede Art begrenzt ist, schließt Claude Code von der Obergrenze einen Hook aus, der das Ergebnis einer Aktion blockieren oder ändern kann, und jeden MCP-Server, den ein solcher Hook aufruft, daher kann das Beenden eines Permission-Gating-Hooks durch den Kernel die Aktion, die er blockiert, nicht zulassen
Verhalten des Edit-Tools
Das Edit-Tool führt exakte Zeichenkettenersetzung durch. Es nimmt einenold_string und einen new_string und ersetzt den ersten durch den zweiten. Es verwendet weder Regex noch Fuzzy Matching.
Diese Überprüfungen müssen bestanden werden, damit eine Bearbeitung angewendet wird. Bevor eine davon durchgeführt wird, wird ein Pfad, der einer Read-Ablehnungsregel entspricht, abgelehnt, einschließlich der Erstellung einer neuen Datei dort. Die Ablehnung erfordert Claude Code v2.1.208 oder später.
- Read-before-edit: Claude liest die Datei in der aktuellen Konversation, bevor er sie bearbeitet, und ein Lesezugriff, der mit einer
PARTIAL view-Benachrichtigung unterbrochen wird, zählt nicht. Claude Opus 4.6, Claude Haiku 4.5 und ältere Modelle erfordern immer das Lesen. Neuere Modelle können eine ungelesene Datei bearbeiten, wenn das Lesen keine Berechtigungsabfrage erfordern würde und das Read-Tool verfügbar ist. - Match:
old_stringmuss genau wie geschrieben in der Datei vorkommen. Ein einzelnes Zeichen Unterschied in Leerzeichen oder Einrückung reicht aus, um nicht zu treffen. - Eindeutigkeit:
old_stringmuss genau einmal vorkommen. Wenn es mehr als einmal vorkommt, stellt Claude entweder eine längere Zeichenkette mit ausreichend umgebendem Kontext bereit, um ein Vorkommen festzulegen, oder setztreplace_all: true, um alle zu ersetzen.
old_string genau und eindeutig dem aktuellen Inhalt entspricht und Claude Code die Datei ohne Aufforderung lesen kann. Das Abgleichen mit dem aktuellen Inhalt der Datei hält dies sicher, und das Ergebnis vermerkt, dass die Datei weitere Änderungen enthält, damit Claude sie vor Bearbeitungen, die auf umgebendem Inhalt basieren, erneut liest. In jedem anderen Fall, z. B. bei einem veralteten old_string oder einem, der mehr als einmal ohne replace_all übereinstimmt, liest Claude die Datei vor der Bearbeitung erneut. Die gelockerte Behandlung von ungelesenen und geänderten Dateien erfordert Claude Code v2.1.208 oder später; davor lehnte Claude Code jede Bearbeitung einer Datei ab, die es in der Konversation nicht gelesen hatte oder die sich auf der Festplatte nach dem Lesen geändert hatte.
Claude kann eine Datei auch ohne separates Read bearbeiten, nachdem es die Datei mit einem Bash-Befehl wie cat oder grep angezeigt hat. Diese Befehle sind cat, nl, bat, batcat, head, tail, sed -n 'X,Yp', grep, egrep, fgrep und rg, jeweils auf einer einzelnen Datei ohne Pipes oder Umleitungen ausgeführt. Eine Suche, die keine Treffer ausgibt, zählt nicht als Lesen, ebenso wenig wie ein Befehl außerhalb dieser Liste.
Wenn Claude eine Datei auf diese Weise anzeigt, lädt Claude Code außerdem alle CLAUDE.md-Dateien in Unterverzeichnissen und pfadbezogenen Regeln, die für diese Datei gelten. Siehe Read- und Edit-Berechtigungsregeln für die Bash-Befehle, die Ihre Read- und Edit-Ablehnungsregeln abdecken.
Nicht-UTF-8-Dateien
Claude kann NotebookEdit nicht auf eine Datei anwenden, die kein gültiges UTF-8 ist. Dasselbe gilt für Edit, es sei denn, die Datei beginnt mit einer Little-Endian-UTF-16-Byte-Order-Mark. Wenn Claude es versucht, verweigert das Tool die Änderung und lässt die Datei unverändert. Zu den verweigerten Dateien gehören Nicht-ASCII-Text, der in einer älteren Kodierung wie Windows-1252 oder Shift-JIS gespeichert ist, Binärdateien und UTF-8 mit einer ungültigen Bytefolge. Die Tools verweigern die Änderung, weil sie die gesamte Datei als UTF-8 zurückspeichern, wodurch jedes Byte, das sie nicht dekodieren können, durch das ErsatzzeichenU+FFFD ersetzt würde. Stattdessen weist der Fehler, den Claude erhält, Claude an, die Änderung mit einem Shell-Befehl vorzunehmen, der die Kodierung der Datei beibehält, oder Sie zu fragen, ob die Datei zuerst in UTF-8 konvertiert werden soll.
Claude kann eine solche Datei weiterhin mit Write ersetzen, es sei denn, der neue Inhalt enthält U+FFFD, das Zeichen, das Read Claude anstelle von Bytes anzeigt, die es nicht dekodieren kann. Diese Schutzmaßnahme verhindert, dass Claude den verstümmelten Text, den es gelesen hat, zurückschreibt. Wenn Write die Datei ersetzt, speichert es den neuen Inhalt als UTF-8, sodass die ursprüngliche Kodierung der Datei verloren geht.
Verhalten des EndConversation-Tools
Das EndConversation-Tool beendet die aktuelle Sitzung. Claude verwendet es nur in zwei Situationen:- als letztes Mittel gegen anhaltende missbräuchliche Eingaben, nachdem Versuche, das Gespräch umzuleiten, fehlgeschlagen sind und nachdem eine klare Warnung in einer früheren Nachricht erfolgt ist
- wenn Sie explizit darum bitten, das Tool demonstriert zu sehen, und bestätigen, dass Sie die Sitzung beenden möchten
Claude ended this conversation. Start a new session (or /clear) to continue. zurück, und nur /clear, /resume, /help, /exit und /feedback werden weiterhin ausgeführt. Claude Code verzeichnet das Ende in der Sitzungstranskription, sodass das Fortsetzen einer beendeten Sitzung die Sperre wiederherstellt; die Sitzungshistorie wird nicht gelöscht.
Das Fortsetzen einer beendeten Sitzung im nicht-interaktiven Modus mit dem Flag -p führt zu einem Fehler und beendet mit Code 1, sodass ein Skript den beendeten Lauf nicht als Erfolg interpretiert.
Das Tool fordert niemals eine Berechtigung an, und PreToolUse-Hooks werden nicht dafür ausgeführt. Solange ein anderes Tool vorhanden ist, können Sie es auch nicht blockieren: Deny- und Ask-Regeln, die EndConversation benennen, haben keine Auswirkung, und weder --disallowedTools noch eine --tools-Liste können es entfernen. Die Ausnahme ist absichtlich: Das Tool tut nichts außer das Gespräch zu beenden, liest oder ändert niemals Dateien oder Daten, und eine Schutzmaßnahme dieser Art funktioniert nur, wenn die Sitzung, auf die sie sich bezieht, sie nicht deaktivieren kann. Wenn Ihre Deny-Regeln alle anderen Tools entfernen und auch EndConversation abgleichen, wie es "*" tut, entfernt Claude Code es ebenfalls, anstatt es als einziges Tool zu belassen, es sei denn, eine Allow-Regel benennt EndConversation explizit. Eine Deny-Liste, die alle anderen Tools entfernt, ohne EndConversation abzugleichen, behält es bei.
Subagents erhalten das Tool niemals. Hintergrundaufgaben, die die Werkzeugliste der Hauptkonversation teilen, sehen es, aber das Aufrufen dort beendet nichts.
Das Tool wird nur angezeigt, wenn alle folgenden Bedingungen erfüllt sind:
- Version: Claude Code v2.1.213 oder später.
- Modell: Das Modell der Sitzung ist Claude Opus 4.8, Claude Sonnet 5, Claude Fable 5 oder eine neuere Version einer dieser Familien.
- Oberfläche: eine interaktive Terminalsitzung, einschließlich einer
claude-Sitzung im integrierten Terminal einer IDE, wie der JetBrains-Plugin sie ausführt. Andere Oberflächen enthalten das Tool nicht, wie zum Beispiel:- nicht-interaktive
-p-Läufe - Sitzungen über die Agent SDK TypeScript- und Python-Pakete
- das VS Code-Erweiterungs-Panel, das seine eigene CLI bündelt
- GitHub Actions
- Cloud-Sitzungen
- nicht-interaktive
- Startmodus: keine
--bare-Sitzung. Der Bare-Modus lädt nur Shell- und Datei-Tools, sodass das Tool dort nie registriert wird. - Anbieter: nicht verfügbar auf Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform oder Microsoft Foundry, oder auf Sitzungen, die sich über ein Cloud-Gateway anmelden.
Glob-Werkzeugverhalten
Das Glob-Werkzeug findet Dateien nach Namensmuster. Unter Windows ist es Teil des Standard-Werkzeugsatzes. Auf macOS, Linux und WSL lässt Claude Code Glob und Grep aus dem Standard-Werkzeugsatz aus, und Claude sucht mitfind und grep über das Bash-Werkzeug. In Claudes Shell führen diese beiden Befehle eingebettete Versionen von bfs und ugrep aus, und die Suchen erreichen Ihre Hooks und Berechtigungsregeln als Bash-Aufrufe.
Auf macOS, Linux und WSL erhalten Sie die Glob- und Grep-Werkzeuge in diesen Fällen zurück:
- Sie benennen
GloboderGrepin--toolsoder--allowedTools, wenn Sie die Sitzung starten, oder in den entsprechenden Agent SDK-Optionen. Mit--toolserhalten Sie die, die Sie auflisten, und das Benennen eines der beiden Werkzeuge in--allowedToolsstellt beide wieder her. Eine Allow-Regel in einer Einstellungsdatei hat diese Auswirkung nicht. - Eine Berechtigungen-Deny-Regel, das Flag
--disallowedToolsoder--restrictedentferntBashaus der Sitzung. - Ein Subagent listet
GloboderGrepin seinemtools-Feld auf und lässtBashaus. Die aufgelisteten Werkzeuge kommen für diesen Subagenten nur zurück, oder für die gesamte Sitzung, wenn er als Hauptsitzungs-Agent über--agentoder dieagent-Einstellung ausgeführt wird.
** für rekursives Verzeichnis-Matching:
**/*.jspasst alle.js-Dateien in beliebiger Tiefesrc/**/*.tspasst alle.ts-Dateien untersrc/*.{json,yaml}passt.json- und.yaml-Dateien im aktuellen Verzeichnis
.gitignore standardmäßig nicht, daher findet es gitignorierte Dateien neben verfolgten. Dies unterscheidet sich von Grep, das gitignorierte Dateien überspringt. Um Glob .gitignore respektieren zu lassen, setzen Sie CLAUDE_CODE_GLOB_NO_IGNORE=false, bevor Sie Claude Code starten.
Claude Code entscheidet über die Berechtigung für einen Glob-Aufruf, bevor es überprüft, ob das Suchverzeichnis existiert. Es führt immer noch die Leseberechtigung-Überprüfung für einen fehlenden path außerhalb der Arbeitsverzeichnisse durch, daher bedeutet eine Berechtigungsaufforderung für einen Pfad nicht, dass der Pfad existiert.
Ein pattern- oder path-Wert, der ein Null-Byte enthält, gibt einen Fehler zurück, der Claude auffordert, ihn zu entfernen.
Grep-Werkzeugverhalten
Das Grep-Werkzeug durchsucht Dateiinhalte nach Mustern. Während Glob Dateien nach Namen findet, findet Grep Zeilen in ihnen. Auf macOS, Linux und WSL ist Grep standardmäßig unter denselben Bedingungen nicht vorhanden wie Glob. Siehe Glob-Werkzeugverhalten für den Fall, dass beide Werkzeuge verfügbar sind. Grep basiert auf ripgrep und verwendet ripgreps Regex-Syntax, nicht POSIX-Grep. Muster, die Regex-Metazeichen enthalten, müssen maskiert werden. Zum Beispiel erfordert das Finden voninterface{} in Go-Code das Muster interface\{\}.
Ein Muster, Glob oder Dateityp, den ripgrep ablehnt, gibt einen Fehler zurück, der ripgreps Diagnose enthält, damit Claude die Eingabe korrigieren und erneut suchen kann. Vor v2.1.208 meldete Claude Code eine abgelehnte Eingabe als No files found statt als Fehler, selbst wenn der gesuchte Text in den Zieldateien vorhanden war.
Drei Ausgabemodi steuern, was zurückkommt:
files_with_matches: nur Dateipfade, kein Zeileninhalt. Dies ist die Standardeinstellung.content: übereinstimmende Zeilen mit Datei und Zeilennummer. Wenn deroffset-Parameter des Werkzeugs über den letzten Treffer für ein Muster hinausweist, das Treffer hat, gibt GrepNo entries at this offsetzurück, sodass Claude den Offset vergrößert oder zurückgesetzt wird, anstatt zu dem Ergebnis zu kommen, dass das Muster nicht passt.count: Übereinstimmungsanzahl pro Datei, gefolgt von einer Gesamtsumme über alle übereinstimmenden Dateien. Die Gesamtsumme umfasst jeden Treffer, auch wenn die Parameterhead_limitoderoffsetdes Werkzeugs die aufgelisteten Pro-Datei-Einträge kürzen. Vor v2.1.208 summierte die Gesamtsumme nur die aufgelisteten Einträge.
glob-Parameter wie **/*.tsx oder nach Sprache mit dem type-Parameter wie py oder rust eingrenzen. Standardmäßig passen Muster innerhalb einer einzelnen Zeile. Claude kann multiline: true setzen, um über Zeilengrenzen hinweg zu passen.
Grep respektiert .gitignore, daher werden gitignorierte Dateien übersprungen. Um eine gitignorierte Datei zu durchsuchen, übergibt Claude ihren Pfad direkt.
Claude Code entscheidet über die Berechtigung für einen Grep-Aufruf, bevor es überprüft, ob der Such-path existiert. Es führt immer noch die Leseberechtigung-Überprüfung für einen fehlenden path außerhalb der Arbeitsverzeichnisse durch, sodass eine Berechtigungsaufforderung für einen Pfad nicht bedeutet, dass der Pfad existiert.
LSP-Werkzeugverhalten
Das LSP-Werkzeug gibt Claude Code-Intelligenz von einem laufenden Sprachserver. Nach jeder Dateiänderung meldet es automatisch Typfehler und Warnungen, damit Claude Probleme ohne einen separaten Build-Schritt beheben kann. Claude kann es auch direkt aufrufen, um Code zu navigieren:- Sprung zu einer Symbol-Definition
- Suche nach allen Referenzen zu einem Symbol
- Typinformationen an einer Position abrufen
- Symbole in einer Datei auflisten
- Suche nach einem Symbol nach Name im gesamten Workspace
- Implementierungen einer Schnittstelle finden
- Aufrufen-Hierarchien verfolgen
Monitor-Tool
Das Monitor-Tool ermöglicht es Claude, etwas im Hintergrund zu beobachten und zu reagieren, wenn es sich ändert, ohne die Konversation zu unterbrechen. Bitten Sie Claude:- Eine Logdatei zu verfolgen und Fehler zu kennzeichnen, wenn sie erscheinen
- Eine PR oder CI-Job abzufragen und zu melden, wenn sich ihr Status ändert
- Ein Verzeichnis auf Dateiänderungen zu überwachen
- Ausgabe von einem beliebigen langfristigen Skript zu verfolgen, auf das Sie es hinweisen
- Eine Verbindung zu einem WebSocket-Feed herzustellen und jede Nachricht zu melden, wenn sie ankommt
-p.
Bei der Frist endet die Überwachung. Claude erhält eine Benachrichtigung, damit es die Überwachung erneut starten kann, falls sie noch benötigt wird.
Beenden Sie eine Überwachung, indem Sie Claude auffordern, sie zu stornieren, oder indem Sie die Sitzung beenden. Wenn Sie einen Subagenten beenden, der Monitore gestartet hat, beispielsweise von /tasks, werden diese Monitore mit ihm beendet.
Wenn Monitor einen Befehl ausführt, verwendet es die gleichen Berechtigungsregeln wie Bash, daher gelten allow- und deny-Muster, die Sie für Bash festgelegt haben, auch hier. Während der Auto-Modus aktiv ist, setzt Claude Code allow-Regeln beiseite, die Monitor selbst benennen, zusammen mit den anderen breiten allow-Regeln, die es verwirft, sodass der Klassifikator Monitor-Befehle auf die gleiche Weise überprüft wie Bash-Befehle.
Die WebSocket-Quelle hat ihre eigene Genehmigungsabfrage, die der Klassifikator auch im Auto-Modus entscheidet.
Das Tool ist nicht auf Amazon Bedrock, Google Cloud’s Agent Platform oder Microsoft Foundry verfügbar. Es ist auch nicht verfügbar, wenn DISABLE_TELEMETRY oder CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC gesetzt ist. Unter Windows ist das Tool nur verfügbar, wenn Git Bash installiert ist.
Plugins können Monitore deklarieren, die automatisch starten, wenn das Plugin aktiv ist, anstatt Claude zu bitten, sie zu starten. Siehe Plugin-Monitore.
WebSocket-Quelle
Wenn ein Server bereits Ereignisse über eine WebSocket pusht, kann Claude sich direkt damit verbinden, anstatt ein Abfrageskript zu schreiben. Jede Art von Socket-Aktivität wird entweder zu einem Ereignis oder beendet die Überwachung:- Textnachrichten: jede wird zu einem Ereignis, auch wenn die Nachricht mehrere Zeilen umfasst.
- Binärnachrichten: werden nicht weitergeleitet. Claude empfängt stattdessen eine Platzhalterzeile wie
[binary frame, 512 bytes]. - Nachrichten größer als 1 MiB: die Überwachung endet, daher abonnieren Sie einen gefilterten Feed, falls vorhanden.
- Socket-Schließung: die Überwachung endet und Claude empfängt den Schließungscode.
ws-Eingabe anstelle von command und ein einzelner Monitor-Aufruf kann die beiden nicht kombinieren. Die ws-Eingabe hat zwei Felder:
Die
timeout_ms-Frist gilt auch für eine WebSocket-Überwachung: die Überwachung endet bei der Frist, und TaskStop bricht sie früh ab.
Das Öffnen einer WebSocket fragt nach einer Genehmigung; im Auto-Modus entscheidet der Klassifikator stattdessen. Die Abfrage bietet keine Option, zukünftige Abfragen für denselben Host zu überspringen.
Claude Code lehnt URLs ab, die auf eine private, Link-Local- oder Cloud-Metadaten-Adresse verweisen, einschließlich Hostnamen, die zu einer aufgelöst werden. Es lehnt auch Hosts in sandbox.network.deniedDomains ab, und wenn allowManagedDomainsOnly in verwalteten Einstellungen gesetzt ist, jeden Host außerhalb der verwalteten Allowlist.
NotebookEdit-Werkzeugverhalten
NotebookEdit ändert ein Jupyter-Notebook eine Zelle nach der anderen, indem es Zellen nach ihrercell_id anvisiert. Es führt keine Zeichenkettenersetzung über das Notebook durch wie Edit auf einfachen Dateien.
Drei Bearbeitungsmodi steuern, was mit der Zielzelle geschieht:
replace: Überschreiben Sie die Quelle der Zelle. Dies ist die Standardeinstellung.insert: Fügen Sie eine neue Zelle nach der Zielzelle hinzu. Ohnecell_idgeht die neue Zelle an den Anfang des Notebooks. Erfordertcell_typeaufcodeodermarkdowngesetzt.delete: Entfernen Sie die Zielzelle.
Edit(...)-Pfadformat. Eine Regel wie Edit(notebooks/**) deckt NotebookEdit-Aufrufe auf Dateien in diesem Verzeichnis ab.
PowerShell-Tool
Das PowerShell-Tool ermöglicht es Claude, PowerShell-Befehle nativ auszuführen. Unter Windows bedeutet dies, dass Befehle in PowerShell ausgeführt werden, anstatt sie über Git Bash weiterzuleiten. Die Verfügbarkeit des Tools hängt von Ihrer Plattform ab:- Windows ohne Git Bash: Das Tool ist automatisch aktiviert.
- Windows mit installiertem Git Bash: Das Tool ist standardmäßig für claude.ai und Console-Konten aktiviert; setzen Sie
CLAUDE_CODE_USE_POWERSHELL_TOOL=1, um es in Amazon Bedrock, Google Cloud’s Agent Platform und Microsoft Foundry-Sitzungen zu aktivieren, oder0, um es auszuschalten. - Linux, macOS und WSL: Das Tool ist optional.
tool_input.command, mit denselben Feldern wie das Bash-Tool.
Verwenden Sie Bash|PowerShell in Hooks, die Shell-Befehle überprüfen; der PowerShell-Hook-Eingabeabschnitt erklärt, warum das Abgleichen von nur Bash nicht ausreichend ist.
PowerShell-Tool aktivieren
Setzen SieCLAUDE_CODE_USE_POWERSHELL_TOOL=1 in Ihrer Umgebung oder in settings.json:
0, um das Tool auszuschalten. Unter Linux, macOS und WSL erfordert das Tool PowerShell 7 oder später: Installieren Sie pwsh und stellen Sie sicher, dass es sich in Ihrem PATH befindet.
Unter Windows erkennt Claude Code automatisch pwsh.exe für PowerShell 7+ mit einem Fallback auf powershell.exe für PowerShell 5.1. Wenn das Tool aktiviert ist, behandelt Claude PowerShell als die primäre Shell. Das Bash-Tool bleibt für POSIX-Skripte verfügbar, wenn Git Bash installiert ist.
Claude Code startet PowerShell mit -ExecutionPolicy Bypass nur im Prozessbereich, sodass .ps1-Skripte und Modulimporte auf Standard-Windows-Installationen funktionieren, ohne die Richtlinie des Computers zu ändern. Der Prozessbereich-Bypass überschreibt nicht die Gruppenrichtlinie MachinePolicy oder UserPolicy, daher gelten Unternehmensrichtlinien weiterhin. Um stattdessen die effektive Ausführungsrichtlinie des Computers zu respektieren, setzen Sie CLAUDE_CODE_POWERSHELL_RESPECT_EXECUTION_POLICY=1.
Bash-deny-Regeln schalten auch das PowerShell-Tool aus
Unter Windows mit installiertem Git Bash schaltet das Verweigern von Bash auch das PowerShell-Tool für die Sitzung aus. Dies gilt für eingeschränkte Regeln wieBash(git push *) ebenso wie für ein einfaches Bash sowie für Regeln aus einer Ihrer Einstellungsdateien oder aus --disallowedTools. Claude Code tut dies, weil eine Bash-Regel das PowerShell-Tool nicht einschränkt, das eigene Berechtigungsregeln hat. Bliebe PowerShell eingeschaltet, könnte Claude dort ausführen, was Ihre Regel in Bash verweigert.
Um das PowerShell-Tool neben einer Bash-deny-Regel eingeschaltet zu lassen, wählen Sie eine der folgenden Möglichkeiten:
- Setzen Sie
CLAUDE_CODE_USE_POWERSHELL_TOOL=1in Ihrer Umgebung oder imenv-Block einer Einstellungsdatei, wie unter PowerShell-Tool aktivieren gezeigt. - Fügen Sie einer Einstellungsdatei eine eingeschränkte
PowerShell-Berechtigungsregel hinzu, etwa eine deny-RegelPowerShell(git push *).
Shell-Auswahl in Einstellungen, Hooks und Skills
Drei zusätzliche Einstellungen steuern, wo PowerShell verwendet wird:"defaultShell": "powershell"insettings.json: leitet interaktive!-Befehle durch PowerShell weiter. Erfordert, dass das PowerShell-Tool aktiviert ist."shell": "powershell"auf einzelnen Command-Hooks: führt diesen Hook in PowerShell aus. Hooks starten PowerShell direkt, daher funktioniert dies unabhängig vonCLAUDE_CODE_USE_POWERSHELL_TOOL.shell: powershellin Skill-Frontmatter: führt!`command`-Blöcke in PowerShell aus. Erfordert, dass das PowerShell-Tool aktiviert ist.
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR.
PowerShell-Befehle erhalten außerdem die Variablen, die Hooks über CLAUDE_ENV_FILE persistieren, unter den in Persistierte Variablen in PowerShell-Befehlen beschriebenen Bedingungen. Erfordert Claude Code v2.1.296 oder später.
Exit-Code 1 von grep, rg, egrep, fgrep, findstr und git grep bedeutet keine Übereinstimmungen. Exit-Code 1 von git diff bedeutet, dass Unterschiede vorhanden sind. Keines dieser Ergebnisse wird Claude als Befehlsfehler gemeldet. Für robocopy sind Exit-Codes 0 bis 7 Informationsergebnisse, wie kopierte Dateien oder erkannte zusätzliche Dateien. Exit-Codes von 8 oder höher zählen als Fehler.
Windows-Codierung und Exitcodes
Unter Windows erfordern die folgenden PowerShell-Codierungs- und Exitcode-Verhaltensweisen Claude Code v2.1.214 oder später:- Umleitung mit
>und>>schreibt UTF-8-Dateien auf PowerShell 5.1 - Claude Code codiert Text, der an die Standardeingabe eines nativen Befehls weitergeleitet wird, als UTF-8
- Claude Code erfasst Fehlerausgabe ohne ANSI-Escape-Sequenzen
- Ein Befehl, dessen untergeordneter Prozess auf die Standardeingabe wartet, erhält das Dateiende statt zu hängen
- Exitcode 1 von
where.exebedeutet keine Übereinstimmung, und vonfc.exeunddiff.exebedeutet es, dass sich die Dateien unterscheiden. Wenn der Befehl eine Ausgabe erzeugt, behandelt Claude Code diesen Exitcode als eine gültige negative Antwort statt als Befehlsfehler. Claude Code meldet weiterhin eine stille Form, wiewhere.exe /Qoder eine Umleitung zu$null, als Fehler bei Exitcode 1
> auf PowerShell 5.1 UTF-16LE-Dateien, nicht-ASCII-weitergeleitete Eingaben kamen als ? an, und Python-Skripte konnten mit einem UnicodeEncodeError abstürzen, wenn nicht-ASCII-Zeichen gedruckt wurden.
Vorschaubeschränkungen
Das PowerShell-Tool hat die folgenden bekannten Einschränkungen während der Vorschau:- PowerShell-Profile werden nicht geladen
- Unter Windows wird Sandboxing nicht unterstützt
Verhalten des Read-Tools
Das Read-Tool nimmt einen Dateipfad und gibt den Inhalt mit Zeilennummern zurück. Claude ist angewiesen, immer absolute Pfade zu übergeben. Das Lesen einer leeren Datei gibt eine Benachrichtigung zurück, dass die Datei existiert, aber ihr Inhalt leer ist, und einoffset nach der letzten Zeile gibt eine Benachrichtigung zurück, die die Zeilenanzahl der Datei angibt. Vor v2.1.208 gab das Lesen einer leeren Datei stattdessen die Past-the-End-Benachrichtigung zurück.
Read verarbeitet mehrere Dateitypen über reinen Text hinaus:
- Bilder: PNG, JPG und andere Bildformate werden als visueller Inhalt zurückgegeben, den Claude sehen kann, nicht als Rohdaten. Claude Code ändert die Größe großer Bilder und komprimiert sie neu, um die Bildgrößenlimits des Modells einzuhalten, bevor sie gesendet werden, sodass Claude möglicherweise eine herunterskalierte Version eines großen Screenshots sieht. Ein Bild, das nach dieser Größenänderung immer noch größer als 500 KB ist, wird als JPEG mit reduzierter Qualität mit seinen unveränderten Pixeldimensionen neu codiert. Wenn Claude feine Pixel-Details in einem großen Bild übersieht, bitten Sie es, zuerst die Region von Interesse zuzuschneiden, beispielsweise mit ImageMagick über Bash.
- PDFs: Claude liest kurze
.pdf-Dateien vollständig. Für PDFs länger als 10 Seiten liest es in Bereichen mit einempages-Parameter, wie"1-5", bis zu 20 Seiten auf einmal. Seitenbereich-Lesevorgänge rendern Seiten mitpdftoppmaus poppler-utils, daher installieren Sie es mitbrew install popplerauf macOS oderapt-get install poppler-utilsauf Debian und Ubuntu. Auf Windows und anderen Plattformen installieren Sie einen poppler-Build, derpdftoppmauf IhremPATHplatziert. Ohne ihn schlägt ein Seitenbereich-Lesevorgang mitpdftoppm is not installedfehl. - Jupyter-Notizbücher:
.ipynb-Dateien geben alle Zellen mit ihren Ausgaben zurück, einschließlich Code, Markdown und Visualisierungen. Ein Notizbuch, dessen Zellen zusammen mehr als 256 KB oder mehr als das Token-Limit umfassen, gibt stattdessen einen Fehler zurück. Claude Code weigert sich, eine Notizbuchdatei über 100 MB zu lesen; der Fehler teilt Claude mit, wie er stattdessen einen Teil des Notizbuchs liest, wie z. B. einen Ausschnitt von Zellen, mit einem Shell-Befehl.
ls auf.
Große Dateien
Claude kann eine Textdatei lesen, die größer ist als das, was ein einzelner Read-Aufruf zurückgibt. Standardmäßig gibt ein Aufruf höchstens 25.000 Token zurück, oder den Wert, den Sie inCLAUDE_CODE_FILE_READ_MAX_OUTPUT_TOKENS festlegen, und lehnt eine vollständige Datei über 256 KB ab, sodass Claude eine größere Datei seitenweise mit offset und limit liest. Ab Claude Code v2.1.296 kann es stattdessen die gesamte Datei oder einen langen Zeilenbereich in einem Aufruf lesen, indem es bei Bedarf allow_large: true setzt, beispielsweise weil Sie die gesamte Datei angefordert haben. Dieser Lesevorgang wird am verbleibenden Platz im Kontextfenster der Sitzung statt an den Standardlimits bemessen. Für Bilder, PDFs und Notizbücher gelten weiterhin ihre Limits.
Was Claude erhält, wenn ein Lesevorgang die Standardlimits überschreitet:
- Vollständige Datei über dem Token-Limit: die erste Seite der Datei mit einer
PARTIAL view-Benachrichtigung, die angibt, wie viel der Datei es erhalten hat und wie es mitoffsetundlimitmehr lesen kann - Vollständige Datei über 256 KB oder ein Lesevorgang mit
offsetoderlimitüber dem Token-Limit: ein Fehler, der es anweist, einen Teil mitoffsetundlimitzu lesen oder stattdessen mit Grep nach spezifischem Inhalt zu suchen
Verhalten des SendFeedback-Tools
Von Claude verfasstes Feedback ist ein Feedbackbericht über Claude Code, den Claude für Sie schreibt. Es erfordert Claude Code v2.1.238 oder später. Claude Code speichert jeden Entwurf auf Ihrem Computer unter~/.claude/feedback/drafts/, und nichts erreicht Anthropic, bis Sie ihn senden. Claude erstellt einen mit dem SendFeedback-Tool, wenn:
- Ein Tool oder Befehl immer wieder fehlschlägt
- Es kann Ihnen bei etwas nicht helfen, das Sie gefragt haben
- Sie weisen auf einen Fehler hin, den es gemacht hat, oder es bemerkt einen
- Sie bitten es, Feedback einzureichen
Was Sie sehen, wenn Claude einen Entwurf erstellt
Nachdem Claude einen Entwurf in die Warteschlange eingereiht hat, sehen Sie eine Karte über Ihrer Eingabeaufforderung mit dem Titel des Entwurfs. Drücken Sie1, um den Entwurf zu überprüfen, drücken Sie 2 zweimal, um ihn wie geschrieben zu senden, oder drücken Sie 0, um ihn zu verwerfen. Ein verworfener Entwurf bleibt in Ihrer Warteschlange. Nachdem Sie eine Karte verworfen haben, fragt Claude Code, ob von Claude verfasstes Feedback deaktiviert werden soll. Es stellt die Frage nicht mehr, nachdem Sie zweimal abgelehnt haben.
Standardmäßig sehen Sie in einer Sitzung höchstens drei Karten; Anthropic kann dieses Limit vom Server aus ohne Veröffentlichung anpassen. Nach dem Limit und immer wenn Sie feedbackDrafts auf quiet setzen, sehen Sie nur eine Anzahl der in der Warteschlange befindlichen Entwürfe in der Eingabeaufforderungsfußzeile.
Überprüfen und bearbeiten Sie einen Entwurf
Führen Sie/feedback ohne Argument aus, um Ihre Warteschlange zu öffnen. Es listet jeden in der Warteschlange befindlichen Entwurf aus allen Ihren Sitzungen auf, einschließlich Entwürfe, deren Karten Sie verworfen oder nie gesehen haben. Wählen Sie einen Entwurf aus, um ihn zur Überprüfung zu öffnen, wo Sie:
- Den Titel, Bereich und Details bearbeiten können
- Transkript senden auf
yesodernosetzen. Wenn das Transkript aus der Sitzung, in der Claude den Entwurf in die Warteschlange eingereiht hat, noch verfügbar ist, beginnt es mityes, das diese Konversation an Anthropic sendet;nosendet nur den Bericht - Den Entwurf senden, verwerfen oder in der Warteschlange für später belassen
w für den Standard-Feedbackdialog. /feedback mit Text danach und /bug öffnen diesen Dialog direkt.
Senden Sie einen Entwurf
Wenn Sie einen Entwurf senden, reicht Claude Code ihn auf die gleiche Weise wie einen/feedback-Bericht ein, mit der gleichen Aufbewahrung, und löscht den Entwurf von Ihrem Computer. Wenn Sie von der Karte aus senden, wird ✓ Sent angezeigt; wenn Sie aus der Warteschlange senden, wird sie mit einer Quittungs-ID geschlossen.
Der Bericht enthält:
- Ihren Titel, Bereich und Details
- Umgebungsinformationen, wie Ihre Claude Code-Version, Betriebssystem und Modell
- Die IDs der letzten API-Anfragen
- Das Gesprächstranskript, wenn Sie Transkript senden auf dem Überprüfungsbildschirm auf
yesbelassen haben. Das Senden von der Karte aus enthält niemals das Transkript
/feedback der Fall ist. Wenn eine Sitzung in einer Organisation mit Null-Datenspeicherung das Tool immer noch anbietet, bleiben Entwürfe auf Ihrem Computer, und das Senden schlägt mit Feedback collection is not available for organizations with custom data retention policies. fehl.
Verwerfen oder behalten Sie einen Entwurf
Wenn Sie einen Entwurf verwerfen, löscht Claude Code ihn von Ihrem Computer. Ein Entwurf, den Sie in der Warteschlange belassen, läuft nach 30 Tagen ab oder nachcleanupPeriodDays, wenn dieser Wert kürzer ist. Die Warteschlange enthält 10 Entwürfe aus allen Ihren Sitzungen, und wenn Claude einen elften in die Warteschlange einreiht, löscht Claude Code den ältesten. Wenn Sie /exit mit Entwürfen aus der Sitzung ausführen, die sich noch in der Warteschlange befinden, fragt Claude Code, ob Sie diese überprüfen oder verwerfen möchten, bevor Sie beenden.
Deaktivieren Sie von Claude verfasstes Feedback
Setzen Sie Claude-drafted feedback in/config auf off, das die feedbackDrafts-Einstellung schreibt, oder setzen Sie CLAUDE_CODE_SEND_FEEDBACK=0 für eine Sitzung. Mit beiden kann Claude keine Entwürfe in die Warteschlange einreihen. Um das Verfassen ohne Karten fortzusetzen, setzen Sie stattdessen feedbackDrafts auf quiet. Administratoren können feedbackDrafts in verwalteten Einstellungen setzen, was Vorrang vor Ihrer eigenen Einstellung hat.
Sitzungen ohne von Claude verfasstes Feedback
Claude Code enthält das Tool in interaktiven Terminalsitzungen auf Ihrem eigenen Computer, die die Claude API anstelle eines Cloud-Anbieters verwenden. Es lässt das Tool weg aus:- Nicht-interaktiven
-p-Läufen und Agent SDK-Sitzungen, die keinen Bildschirm zum Überprüfen der Warteschlange haben - Cloud-Sitzungen, die nicht in die Warteschlange auf Ihrem Computer schreiben können
- Sitzungen auf Amazon Bedrock, Claude Platform on AWS, Google Cloud’s Agent Platform oder Microsoft Foundry
- Sitzungen, in denen Sie
CLAUDE_CODE_SEND_FEEDBACK=0oderDISABLE_FEEDBACK_COMMAND=1setzen,CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICauf einen beliebigen nicht-leeren Wert setzen oder Feature-Flag-Abruf deaktiviert haben - Organisationen, die Produktfeedback deaktiviert haben, Organisationen mit Null-Datenspeicherung und Organisationen, in denen die HIPAA-Konfiguration angewendet wurde
Verfügbarkeit des Task-Tools
Die Task-Tracking-Tools,TaskCreate, TaskGet, TaskUpdate, TaskList und TodoWrite, sind standardmäßig nur auf Opus 4.7, Sonnet 4.6, Haiku 4.5 und früheren Modellen verfügbar. Überall dort, wo die Tools verfügbar sind, erhalten Sie die vier Task-Tools oder TodoWrite, wenn Sie CLAUDE_CODE_ENABLE_TASKS=0 setzen.
Bei jedem anderen Modell lässt Claude Code die Tools weg, es sei denn, Sie aktivieren sie. Das Gleiche gilt für eine Modell-ID, die Claude Code nicht erkennt, z. B. einen benutzerdefinierten Modellnamen, der über ein LLM-Gateway bereitgestellt wird. Bei neueren Modellen verfolgt Claude mehrstufige Arbeiten ohne eine schriftliche Checkliste, und die Definitionen und Erinnerungen der Tools beanspruchen Kontext. Ohne die Tools fügt Claude nichts zur Aufgabenliste hinzu, während es arbeitet.
Wenn Sie diese Tools auf einem Modell verwenden möchten, das sie standardmäßig nicht hat, führen Sie eines der folgenden Verfahren durch:
- Exportieren Sie
CLAUDE_CODE_ENABLE_TODO_TOOLS=1, bevor Sie Claude Code starten, zum BeispielCLAUDE_CODE_ENABLE_TODO_TOOLS=1 claude. Claude Code stellt dann die gleichen Tools auf jedem Modell und jedem Anbieter bereit - Nennen Sie eines der Tools in
--allowedTools, zum Beispielclaude --allowedTools TaskCreate - Listen Sie die Tools in
--toolsauf, was die integrierten Tools der Sitzung auf die genannten beschränkt. Fügen Sie die gewünschten Tools zusammen mit den anderen integrierten Tools ein, die Sie verwenden - Im Agent SDK funktionieren die
allowedToolsundtoolsOptionen genauso wie die beiden Flags
WebFetch-Tool-Verhalten
WebFetch nimmt eine URL und einen Prompt entgegen, der beschreibt, was extrahiert werden soll. Es ruft die Seite ab und konvertiert die Antwort in Markdown, wenn der Server HTML zurückgibt. Bei den meisten Abrufen führt es den Prompt anschließend in einem separaten Modellaufruf gegen den Inhalt aus, und Claude erhält das Ergebnis dieses Aufrufs statt der rohen Seite. Der Konvertierungsschritt ist nicht konfigurierbar. Dies macht WebFetch absichtlich verlustbehaftet. Die Extraktions-Eingabeaufforderung bestimmt, was Claude erreicht, daher kann ein Ergebnis, das besagt, dass eine Seite etwas nicht erwähnt, nur bedeuten, dass die Eingabeaufforderung nicht danach gefragt hat. Bitten Sie Claude, die Seite erneut mit einer spezifischeren Eingabeaufforderung abzurufen, oder verwenden Siecurl über Bash für die unverarbeitete Seite.
Einige Verhaltensweisen prägen die Antwort, die Claude erhält:
- WebFetch lehnt
localhostund jeden anderen Hostnamen ohne einen Punkt ab, z. B. einen bloßen Intranet-Namen, bevor eine Anfrage gestellt wird. Der Fehler, den es zurückgibt, teilt Claude mit, dass lokale Server mitcurlüber Bash erreicht werden sollen. - HTTP-URLs werden automatisch auf HTTPS aktualisiert.
- WebFetch liest pro Aufruf bis zu 100.000 Zeichen des Inhalts einer Seite. Auf Claude Code v2.1.290 oder später teilt das Ergebnis für eine längere Seite Claude mit, wie viel ungelesen blieb, sodass Claude den nächsten Teil abrufen kann.
- WebFetch speichert jede Antwort standardmäßig 15 Minuten lang zwischen, sodass wiederholte Abrufe derselben URL schnell zurückgegeben werden. Auf Claude Code v2.1.233 oder später können Sie
CLAUDE_CODE_WEBFETCH_CACHE_TTL_MSsetzen, um zu ändern, wie lange WebFetch jede Antwort speichert. - Eine Seite, die nicht innerhalb von fünf Minuten heruntergeladen wird, einschließlich aller Umleitungen, denen WebFetch folgt, schlägt mit einem Deadline-Fehler fehl. Auf Claude Code v2.1.268 oder später können Sie
CLAUDE_CODE_WEBFETCH_DEADLINE_MSsetzen, um das Limit zu ändern, oder auf0, um es zu entfernen. - Wenn eine URL zu einem anderen Host umleitet, gibt WebFetch ein Textergebnis zurück, das die ursprüngliche URL und das Umleitungsziel benennt, anstatt ihr zu folgen. Claude ruft dann die neue URL mit einem zweiten WebFetch-Aufruf ab.
- Wenn der Extraktionsschritt eine überladene API trifft, versucht Claude Code es mit Backoff erneut; ein Abruf, der immer noch fehlschlägt, gibt ein Fehlerergebnis zurück. Vor v2.1.212 konnte der API-Fehlertext Claude erreichen, als wäre er der extrahierte Seiteninhalt.
acceptEdits Berechtigungsmodi fordert WebFetch vor dem Abruf auf, außer für Domänen, die Ihre Berechtigungsregeln bereits zulassen oder ablehnen, und eine integrierte Reihe von genehmigten Dokumentationsdomänen, die ohne Eingabeaufforderung abgerufen werden. Unabhängig davon, was Ihre Regeln zulassen, muss ein Abruf auch zuerst die WebFetch-Domänensicherheitsprüfung bestehen; dieser Abschnitt behandelt, was die Prüfung sendet und die Einstellung, die sie überspringt. Die Eingabeaufforderung bietet drei Optionen:
- Ja: genehmigt diesen Abruf nur. Der nächste WebFetch-Aufruf fordert erneut auf, auch für dieselbe Domäne.
- Ja, und frag mich nicht mehr für
<domain>: genehmigt den Abruf und speichert eineWebFetch(domain:...)-Zulassungsregel für diese Domäne in.claude/settings.local.jsonfür dieses Repository. Siehe wie gespeicherte Genehmigungen bestehen bleiben. Wenn Ihre OrganisationallowManagedPermissionRulesOnlysetzt, blendet Claude Code diese Option aus. - Nein, und sag Claude, was er stattdessen tun soll: lehnt den Abruf ab.
WebFetch(domain:example.com) hinzu; WebFetch(domain:*) lässt jede Domäne zu. Die auto und bypassPermissions Berechtigungsmodi überspringen die Eingabeaufforderung, außer für eine Domäne, die eine explizite ask-Regel erfüllt.
Eine explizite WebFetch(domain:...)-Regel in deny, ask oder allow hat Vorrang vor der genehmigten Reihe, sodass Sie eine genehmigte Domäne blockieren oder eine Eingabeaufforderung dafür verlangen können.
Wenn die URL ein claude.ai-Artefakt-Link ist, kann Claude Code zusätzlich um Genehmigung bitten, das Artefakt selbst zu lesen. Für die Fälle, in denen es nachfragt, siehe Ein mit Ihnen geteiltes Artefakt lesen.
WebFetch setzt einen User-Agent-Header, der mit Claude-User beginnt, und einen Accept-Header, der Markdown gegenüber HTML bevorzugt, sodass Server, die Inhaltsaushandlung unterstützen, Markdown direkt zurückgeben können.
Sandbox-Befehle erben nicht die integrierte Reihe von genehmigten Dokumentationsdomänen von WebFetch. Um einem Sandbox-Befehl den Zugriff auf eine Domäne ohne Eingabeaufforderung zu ermöglichen, fügen Sie die Domäne zu allowedDomains hinzu oder lassen Sie sie mit einer WebFetch(domain:...)-Regel zu, die die Sandbox auch berücksichtigt. WebFetch liest die Sandbox-Zulassungsliste im Gegenzug nie, daher verhindert das Hinzufügen einer Domäne zu einer Sandbox- oder Organisations-Netzwerk-Zulassungsliste nicht, dass WebFetch danach fragt.
WebFetch-Verfügbarkeit
Auf Claude Code v2.1.285 oder später können SieCLAUDE_CODE_DISABLE_WEB_FETCH auf 1 setzen, um WebFetch auszuschalten.
Wenn Sie sich mit einem Team- oder Enterprise-claude.ai-Konto anmelden und nicht über ein LLM-Gateway verbunden sind, hängt WebFetch auch von der Richtlinie Ihrer Organisation ab, die Claude Code anfordert, wenn eine Sitzung startet. Dasselbe gilt für eine Sitzung, deren Plan Claude Code nicht bestimmen kann, z. B. eine, die unter einem claude.ai-Token ausgeführt wird, das eine andere App bereitgestellt hat.
Wenn WebFetch in einer Sitzung fehlt, führen Sie /status in der Sitzung aus. Wenn die Zeile Organization policy meldet, dass die Richtlinie nicht geladen wurde und Web Fetch unter den Funktionen aufgeführt ist, die darauf warten, hält Claude Code WebFetch zurück, bis es bestätigen kann, dass Ihre Organisation es zulässt. Außerhalb einer Sitzung macht claude doctor eine eigene Anfrage und gibt dieselbe Zeile aus. Sobald eine Richtlinie, die WebFetch zulässt, geladen wird, gibt das Tool ohne Neustart zurück.
WebSearch-Tool-Verhalten
WebSearch führt eine Abfrage gegen Anthropics Web-Suche-Backend durch und gibt Ergebnistitel und URLs zurück. Es ruft die Ergebnisseiten nicht ab. Um eine Seite zu lesen, die Claude in Suchergebnissen findet, folgt es mit WebFetch nach. Das Tool kann bis zu acht Backend-Suchen pro Aufruf durchführen und die Suche intern verfeinern, bevor es Ergebnisse zurückgibt. Claude kann Ergebnisse mitallowed_domains auf bestimmte Hosts beschränken oder mit blocked_domains ausschließen. Die beiden Listen können nicht in einem einzigen Aufruf kombiniert werden.
Wenn die Suchanfrage ein überladenes API trifft, versucht Claude Code es mit Backoff erneut; ein Aufruf, der immer noch fehlschlägt, gibt ein Fehlerergebnis zurück. Vor v2.1.212 konnte der API-Fehlertext Claude erreichen, als wäre er ein Suchergebnis.
WebSearch-Berechtigungsregeln benötigen keinen Spezifizierer. Ein einfacher WebSearch-Eintrag in allow oder deny ist die einzige Form.
Das Such-Backend ist nicht konfigurierbar. Um mit einem anderen Anbieter zu suchen, fügen Sie einen MCP-Server hinzu, der ein Such-Tool bereitstellt.
WebSearch ist auf der Claude API, Claude Platform on AWS und Microsoft Foundry verfügbar. Auf der Agent Platform von Google Cloud funktioniert es mit Opus 4, Sonnet 4, Haiku 4.5 und späteren Modellen. Amazon Bedrock stellt das serverseitige Web-Such-Tool nicht bereit.
Suchgrenze für Sitzungen
Eine interaktive Terminal-Sitzung hat ein Limit von 200 WebSearch-Aufrufen. Suchen aus der Hauptkonversation und aus Subagenten, etwa bei parallelen Forschungs-Fan-Outs, zählen gegen dasselbe Limit. Das Limit erfordert Claude Code v2.1.212 oder später. Solange eine Sitzung das Limit erreicht hat, erscheinen Suchen in der Konversation als Aufrufe, die nichts getan haben. Claude erhält einen Hinweis, der ihm mitteilt, mit den bereits gesammelten Informationen fortzufahren und Sie, falls weitere Suchen nötig sind, zu bitten, das Limit zu erhöhen. Um weitere Suchen zu erhalten, erhöhen Sie die Obergrenze, warten Sie, bis das Limit wieder aufgefüllt ist, oder starten Sie eine neue Konversation:- Obergrenze erhöhen: Setzen Sie die Umgebungsvariable
CLAUDE_CODE_MAX_WEB_SEARCHES_PER_SESSIONauf eine positive ganze Zahl, etwa500. Die Obergrenze kann erhöht, aber nicht deaktiviert werden. - Auf das Auffüllen warten: Ab Claude Code v2.1.290 wird das Limit einer interaktiven Terminal-Sitzung mit etwa 100 Aufrufen pro Stunde wieder aufgefüllt. Um die Rate zu ändern, setzen Sie
CLAUDE_CODE_WEB_SEARCH_REFILLS_PER_HOURauf eine Anzahl von Aufrufen pro Stunde, etwa50. - Neue Konversation starten: Das Ausführen von
/clearim Prompt von Claude Code setzt den Zähler ebenfalls zurück. Wenn Arbeiten, die noch Subagenten erzeugen können, das Löschen überstehen, wie z. B. ein laufender Workflow, wird der Zähler stattdessen übertragen.
Verhalten des Write-Tools
Das Write-Tool erstellt eine neue Datei oder überschreibt eine vorhandene Datei mit dem vollständigen bereitgestellten Inhalt. Es fügt nicht an und führt nicht zusammen. Write überschreibt außerdem eine vorhandene Datei, deren Bytes sich nicht dekodieren lassen, und speichert den neuen Inhalt als UTF-8, wie unter Nicht-UTF-8-Dateien beschrieben. Ob Claude eine vorhandene Datei in der aktuellen Konversation lesen muss, bevor er sie überschreibt, hängt vom Modell und der Datei ab:- Claude Opus 4.6, Claude Haiku 4.5 und ältere Modelle erfordern immer das Lesen, daher schlägt ein Write zu einer ungelesenen vorhandenen Datei mit einem Fehler fehl.
- Neuere Modelle können eine Datei überschreiben, die sie in dieser Sitzung nie gelesen haben, unter den gleichen Bedingungen wie read-before-edit: Das Lesen würde keine Berechtigungsaufforderung erfordern und das Read-Tool ist verfügbar.
- Jupyter-Notebooks und Dateien, die Claude nur teilweise mit einer
PARTIAL view-Benachrichtigung gelesen hat, erfordern das Lesen auf jedem Modell.
Überprüfen Sie, welche Werkzeuge verfügbar sind
Ihr genaues Werkzeugsatz hängt von Ihrem Anbieter, Ihrer Plattform und Ihren Einstellungen ab. Um zu überprüfen, was in einer laufenden Sitzung geladen ist, fragen Sie Claude direkt:/mcp aus.
Das Advisor-Tool ist ein Server-Tool, das die API ausführt, anstatt ein Tool, das Claude Code implementiert. Es hat keinen Namen, auf den Sie in Berechtigungsregeln oder Hook-Matchern verweisen können.
Siehe auch
- MCP-Server: Fügen Sie benutzerdefinierte Werkzeuge durch Verbindung externer Server hinzu
- Berechtigungen: Berechtigungssystem, Regelsyntax und werkzeugspezifische Muster
- Subagents: Konfigurieren Sie Werkzeugzugriff für Subagents
- Hooks: Führen Sie benutzerdefinierte Befehle vor oder nach der Werkzeugausführung aus