SpyBara
Go Premium

Documentation 2026-10-16 22:59 UTC to 2026-10-17 23:57 UTC

23 files changed +189 −77. View all changes and history on the product overview
2026
Fri 30 23:01 Thu 29 23:57 Wed 28 23:57 Tue 27 22:59 Mon 26 22:57 Sun 25 23:58 Sat 24 22:59 Fri 23 22:59 Thu 22 22:58 Wed 21 23:02 Tue 20 23:00 Mon 19 23:58 Sat 17 23:57 Fri 16 22:59 Thu 15 23:58 Wed 14 22:58 Tue 13 23:57 Sun 11 23:57 Sat 10 23:01 Fri 9 23:02 Thu 8 22:58 Wed 7 23:59 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59
Details

165 Ein benutzerdefiniertes Tool aufrufen165 Ein benutzerdefiniertes Tool aufrufen

166</h3>166</h3>

167 167 

168Übergeben Sie den MCP Server, den Sie erstellt haben, an `query` über die `mcpServers` Option. Der Schlüssel in `mcpServers` wird zum `{server_name}` Segment im vollständig qualifizierten Namen jedes Tools: `mcp__{server_name}__{tool_name}`. Listen Sie diesen Namen in `allowedTools` auf, damit das Tool ohne Genehmigungsaufforderung ausgeführt wird.168Übergeben Sie den MCP-Server, den Sie erstellt haben, über die Option `mcpServers` an `query`. Der [vollständig qualifizierte Name](/docs/de/agent-sdk/mcp#tool-naming-convention) jedes Tools lautet `mcp__{server_name}__{tool_name}`, wobei `{server_name}` der Schlüssel ist, den Sie dem Server in `mcpServers` geben. Wenn der Schlüssel Zeichen wie `.` oder Leerzeichen enthält, ersetzen Sie diese durch `_`, wenn Sie `{server_name}` schreiben. Listen Sie den vollständig qualifizierten Namen in `allowedTools` auf, damit das Tool ohne Berechtigungsabfrage ausgeführt wird.

169 169 

170Diese Snippets verwenden den `weatherServer` aus dem [Wetter-Tool-Beispiel](#weather-tool-example) erneut, um Claude zu fragen, wie das Wetter an einem bestimmten Ort ist.170Diese Snippets verwenden den `weatherServer` aus dem [Wetter-Tool-Beispiel](#weather-tool-example) erneut, um Claude zu fragen, wie das Wetter an einem bestimmten Ort ist.

171 171 


684 Beispiel: Einheitenkonverter684 Beispiel: Einheitenkonverter

685</h2>685</h2>

686 686 

687Dieses Tool konvertiert Werte zwischen Längen-, Temperatur- und Gewichtseinheiten. Ein Benutzer kann „100 Kilometer in Meilen umrechnen" oder „Was sind 72°F in Celsius?" fragen, und Claude wählt den richtigen Einheitstyp und die richtigen Einheiten aus der Anfrage aus.687Dieses Tool konvertiert Werte zwischen Längen-, Temperatur- und Gewichtseinheiten. Ein Benutzer kann „100 Kilometer in Meilen umrechnen“ oder „Was sind 72°F in Celsius?“ fragen, und Claude wählt den richtigen Einheitstyp und die richtigen Einheiten aus der Anfrage aus.

688 688 

689Es demonstriert zwei Muster:689Es demonstriert zwei Muster:

690 690 

Details

235 235 

236| Option | Typ | Standard | Beschreibung |236| Option | Typ | Standard | Beschreibung |

237| - | - | - | - |237| - | - | - | - |

238| `matcher` | `string` | `undefined` | Muster, das gegen das Filterfeld des Ereignisses abgeglichen wird, nach den [Regeln für Matcher in Einstellungsdateien](/docs/de/hooks#matcher-patterns). Für Tool-Hooks ist dies der Tool-Name. Integrierte Tools umfassen `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` und andere (siehe [Tool-Eingabetypen](/docs/de/agent-sdk/typescript#tool-input-types) für die vollständige Liste). MCP-Tools verwenden das Muster `mcp__<server>__<action>`, wobei `<server>` der Schlüssel ist, den Sie in der `mcpServers` Konfiguration verwenden. |238| `matcher` | `string` | `undefined` | Muster, das gegen das Filterfeld des Ereignisses abgeglichen wird, nach den [Regeln für Matcher in Einstellungsdateien](/docs/de/hooks#matcher-patterns). Für Tool-Hooks ist dies der Tool-Name. Integrierte Tools umfassen `Bash`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `WebFetch`, `Agent` und andere. Siehe [Tool-Eingabetypen](/docs/de/agent-sdk/typescript#tool-input-types) für die vollständige Liste. MCP-Tools verwenden das Muster `mcp__<server>__<action>`, wobei `<server>` der Schlüssel ist, den Sie in der `mcpServers` Konfiguration verwenden, geschrieben wie in der [Namenskonvention für Tools](/docs/de/agent-sdk/mcp#tool-naming-convention) beschrieben. |

239| `hooks` | `HookCallback[]` | - | Erforderlich. Array von Callback-Funktionen, die ausgeführt werden, wenn das Muster übereinstimmt |239| `hooks` | `HookCallback[]` | - | Erforderlich. Array von Callback-Funktionen, die ausgeführt werden, wenn das Muster übereinstimmt |

240| `timeout` | `number` | `undefined` | Timeout in Sekunden. Wenn weggelassen, wendet Claude Code das [Standard-Timeout des Ereignisses](#hook-timeout) an. Ihre SDK-Callbacks folgen den `command` Hook-Standards |240| `timeout` | `number` | `undefined` | Timeout in Sekunden. Wenn weggelassen, wendet Claude Code das [Standard-Timeout des Ereignisses](#hook-timeout) an. Ihre SDK-Callbacks folgen den `command` Hook-Standards |

241 241 

agent-sdk/mcp.md +10 −1

Details

196 Benennungskonvention für Tools196 Benennungskonvention für Tools

197</h3>197</h3>

198 198 

199MCP-Tools folgen dem Benennungsmuster `mcp__<server-name>__<tool-name>`. Beispielsweise wird ein GitHub-Server mit dem Namen `"github"` mit einem `list_issues`-Tool zu `mcp__github__list_issues`.199MCP-Tools werden nach dem Muster `mcp__<server-name>__<tool-name>` benannt, wobei `<server-name>` der Name ist, unter dem Sie den Server registrieren, etwa sein Schlüssel in `mcpServers`.

200 

201Zeichen im Servernamen wie `.` und Leerzeichen werden durch `_` ersetzt. Diese Tabelle zeigt den vollständigen Namen eines `list_issues`-Tools für zwei Serverschlüssel:

202 

203| Schlüssel in `mcpServers` | Vollständiger Tool-Name |

204| :- | :- |

205| `github` | `mcp__github__list_issues` |

206| `my.server` | `mcp__my_server__list_issues` |

207 

208Verwenden Sie die vollständigen Tool-Namen in `allowedTools` und in [MCP-Berechtigungsregeln](/docs/de/permissions#mcp). Bei einem Server, den ein [Plugin](/docs/de/agent-sdk/plugins) bereitstellt, hat `<server-name>` die [Plugin-bezogene Form](/docs/de/mcp#plugin-provided-mcp-servers) und beginnt mit `plugin_`.

200 209 

201<h3 id="auto-approve-with-allowedtools">210<h3 id="auto-approve-with-allowedtools">

202 Automatische Genehmigung mit allowedTools211 Automatische Genehmigung mit allowedTools

Details

16 16 

17<Steps>17<Steps>

18 <Step title="Hooks">18 <Step title="Hooks">

19 Führen Sie [Hooks](/docs/de/agent-sdk/hooks) zuerst aus. Ein Hook kann den Aufruf direkt ablehnen oder ihn weitergeben. Ein Hook, der `allow` zurückgibt, überspringt nicht die Deny- und Ask-Regeln unten; diese werden unabhängig vom Hook-Ergebnis ausgewertet. Ein `PreToolUse` Hook allow kann auch keine `rm` oder `rmdir` Entfernung genehmigen, die auf einen [kritischen Pfad](/docs/de/permission-modes#critical-paths) abzielt.19 Führen Sie [Hooks](/docs/de/agent-sdk/hooks) zuerst aus. Ein Hook kann den Aufruf direkt ablehnen oder ihn weitergeben. Ein Hook, der `allow` zurückgibt, überspringt nicht die Deny- und Ask-Regeln unten; diese werden unabhängig vom Hook-Ergebnis ausgewertet. Ein `PreToolUse`-Hook, der `allow` zurückgibt, kann auch keine `rm`- oder `rmdir`-Entfernung genehmigen, die auf einen [kritischen Pfad](/docs/de/permission-modes#critical-paths) abzielt. Was dieses `allow` im Plan-Modus bewirkt, erfahren Sie unter [Hook-Genehmigungen im Plan-Modus](/docs/de/permissions#hook-approvals-in-plan-mode).

20 </Step>20 </Step>

21 21 

22 <Step title="Deny-Regeln">22 <Step title="Deny-Regeln">


161 161 

162<Tabs>162<Tabs>

163 <Tab title="Zum Abfragezeitpunkt">163 <Tab title="Zum Abfragezeitpunkt">

164 Übergeben Sie `permission_mode` (Python) oder `permissionMode` (TypeScript) beim Erstellen einer Abfrage. Dieser Modus gilt für die gesamte Sitzung, es sei denn, er wird dynamisch geändert.164 Übergeben Sie `permission_mode` (Python) oder `permissionMode` (TypeScript) beim Erstellen einer Abfrage.

165 165 

166 <CodeGroup>166 <CodeGroup>

167 ```python Python theme={null}167 ```python Python theme={null}


314 314 

315Claude erkundet die Codebasis und erstellt einen Plan, ohne Ihre Quelldateien zu bearbeiten. Read-only-Tools werden wie im `default`-Berechtigungsmodus ausgeführt.315Claude erkundet die Codebasis und erstellt einen Plan, ohne Ihre Quelldateien zu bearbeiten. Read-only-Tools werden wie im `default`-Berechtigungsmodus ausgeführt.

316 316 

317Dateibearbeitungen werden im Planungsmodus nie automatisch genehmigt, auch wenn eine Allow-Regel übereinstimmt. Sie werden stattdessen durch Ihren `canUseTool`-Callback abgefragt. In Claude Code v2.1.212 oder später erreichen Shell-Befehle, die Dateien ändern, wie `touch` und `rm`, Ihren `canUseTool`-Callback auf die gleiche Weise.317Dateibearbeitungen werden im Plan-Modus nie automatisch genehmigt, auch wenn eine Allow-Regel übereinstimmt oder ein `PreToolUse`-Hook `allow` zurückgibt. Sie werden stattdessen durch Ihren `canUseTool`-Callback abgefragt. In Claude Code v2.1.212 oder später erreichen Shell-Befehle, die Dateien ändern, wie `touch` und `rm`, Ihren `canUseTool`-Callback auf die gleiche Weise.

318 318 

319Wenn Sie `allowDangerouslySkipPermissions: true` zusammen mit `permissionMode: 'plan'` festlegen, erreichen Dateibearbeitungen und Shell-Befehle, die Dateien ändern, weiterhin Ihren `canUseTool`-Callback. Die Option ermöglicht es Ihnen, später mit `setPermissionMode()` zu `bypassPermissions` zu wechseln.319Wenn Sie `allowDangerouslySkipPermissions: true` zusammen mit `permissionMode: 'plan'` festlegen, erreichen Dateibearbeitungen und Shell-Befehle, die Dateien ändern, weiterhin Ihren `canUseTool`-Callback. Die Option ermöglicht es Ihnen, später mit `setPermissionMode()` zu `bypassPermissions` zu wechseln.

320 320 


322 322 

323**Verwenden Sie, wenn:** Sie möchten, dass Claude Änderungen vorschlägt, ohne sie auszuführen, z. B. während einer Code-Überprüfung oder wenn Sie Änderungen genehmigen müssen, bevor sie vorgenommen werden.323**Verwenden Sie, wenn:** Sie möchten, dass Claude Änderungen vorschlägt, ohne sie auszuführen, z. B. während einer Code-Überprüfung oder wenn Sie Änderungen genehmigen müssen, bevor sie vorgenommen werden.

324 324 

325<h4 id="auto-mode-auto">

326 Auto-Modus (`auto`)

327</h4>

328 

329Ein Klassifikatormodell überprüft Aktionen wie Shell-Befehle und Netzwerkanfragen, bevor sie ausgeführt werden, und erlaubt oder blockiert jede überprüfte Aktion. Welche Modelle und Anbieter der Auto-Modus voraussetzt und in welcher Reihenfolge er Aktionen bewertet, erfahren Sie unter [Berechtigungsabfragen mit dem Auto-Modus vermeiden](/docs/de/permission-modes#eliminate-prompts-with-auto-mode).

330 

331Wenn Sie eine Sitzung im Auto-Modus mit [`set_model()`](/docs/de/agent-sdk/python#claudesdkclient), [`setModel()`](/docs/de/agent-sdk/typescript#query-object) oder [`applyFlagSettings()`](/docs/de/agent-sdk/typescript#applyflagsettings) auf ein Modell umstellen, das der Auto-Modus nicht unterstützt, wechselt die Sitzung in den `default`-Modus:

332 

333* **Was Sie sehen**: eine `system`-Nachricht mit dem Subtyp `status` und `permissionMode` auf `"default"` gesetzt, die das TypeScript SDK als [`SDKStatusMessage`](/docs/de/agent-sdk/typescript#sdkstatusmessage) typisiert. Ab diesem Zeitpunkt erreichen Aufrufe, die eine Genehmigung benötigen und keine Allow-Regel erfüllen, Ihren `canUseTool`-Callback.

334* **Zurück zum Auto-Modus**: Wechseln Sie zu einem unterstützten Modell und rufen Sie dann `set_permission_mode("auto")` oder `setPermissionMode("auto")` auf. Wenn Sie das Modell zurückwechseln, ohne diesen Aufruf auszuführen, bleibt die Sitzung im `default`-Modus. Solange das nicht unterstützte Modell aktiv ist, schlägt der Aufruf mit `Cannot set permission mode to auto: auto mode unavailable for this model` fehl.

335 

336Der Wechsel in den `default`-Modus nach einem Aufruf von `set_model()`, `setModel()` oder `applyFlagSettings()` erfordert Claude Code v2.1.299 oder später.

337 

325<h2 id="related-resources">338<h2 id="related-resources">

326 Verwandte Ressourcen339 Verwandte Ressourcen

327</h2>340</h2>

Details

610| `receive_response()` | Empfangen Sie Nachrichten bis einschließlich einer ResultMessage |610| `receive_response()` | Empfangen Sie Nachrichten bis einschließlich einer ResultMessage |

611| `interrupt()` | Senden Sie ein Unterbrechungssignal (funktioniert nur im Streaming-Modus) |611| `interrupt()` | Senden Sie ein Unterbrechungssignal (funktioniert nur im Streaming-Modus) |

612| `set_permission_mode(mode)` | Ändern Sie den Berechtigungsmodus für die aktuelle Sitzung |612| `set_permission_mode(mode)` | Ändern Sie den Berechtigungsmodus für die aktuelle Sitzung |

613| `set_model(model)` | Ändern Sie das Modell für die aktuelle Sitzung. Übergeben Sie `None`, um auf [Claude Code's Standardmodell](/docs/de/model-config) zurückzusetzen |613| `set_model(model)` | Ändern Sie das Modell für die aktuelle Sitzung. Übergeben Sie `None`, um auf [Claude Code's Standardmodell](/docs/de/model-config) zurückzusetzen. Eine Sitzung im `auto`-Modus [wechselt in den `default`-Modus](/docs/de/agent-sdk/permissions#auto-mode-auto), wenn das neue Modell den Auto-Modus nicht unterstützt |

614| `rewind_files(user_message_id)` | Stellen Sie Dateien in ihren Zustand bei der angegebenen Benutzernachricht wieder her. Erfordert `enable_file_checkpointing=True`. Siehe [Datei-Checkpointing](/docs/de/agent-sdk/file-checkpointing) |614| `rewind_files(user_message_id)` | Stellen Sie Dateien in ihren Zustand bei der angegebenen Benutzernachricht wieder her. Erfordert `enable_file_checkpointing=True`. Siehe [Datei-Checkpointing](/docs/de/agent-sdk/file-checkpointing) |

615| `get_mcp_status()` | Rufen Sie den Status aller konfigurierten MCP-Server ab. Gibt [`McpStatusResponse`](#mcpstatusresponse) zurück |615| `get_mcp_status()` | Rufen Sie den Status aller konfigurierten MCP-Server ab. Gibt [`McpStatusResponse`](#mcpstatusresponse) zurück |

616| `get_context_usage()` | Rufen Sie eine Aufschlüsselung der Kontextfenster-Nutzung nach Kategorie, Skill und Tool ab. Dies sind die gleichen Daten, die `/context` in einer interaktiven Sitzung anzeigt. Gibt [`ContextUsageResponse`](#contextusageresponse) zurück. Um die Aufschlüsselung zu berechnen, führt Claude Code mehrere Token-Zähl-API-Anfragen durch, die nicht im Nachrichtenstrom erscheinen; siehe [wie diese Anfragen behandelt werden](#contextusageresponse) |616| `get_context_usage()` | Rufen Sie eine Aufschlüsselung der Kontextfenster-Nutzung nach Kategorie, Skill und Tool ab. Dies sind die gleichen Daten, die `/context` in einer interaktiven Sitzung anzeigt. Gibt [`ContextUsageResponse`](#contextusageresponse) zurück. Um die Aufschlüsselung zu berechnen, führt Claude Code mehrere Token-Zähl-API-Anfragen durch, die nicht im Nachrichtenstrom erscheinen; siehe [wie diese Anfragen behandelt werden](#contextusageresponse) |


3884 Setzen Sie `"failIfUnavailable": True` in Ihren Sandbox-Einstellungen, um stattdessen zu stoppen. Das SDK leitet `failIfUnavailable` zusammen mit den deklarierten `SandboxSettings`-Feldern an Claude Code weiter. `query()` meldet dann eine `ResultMessage` mit `subtype="error_during_execution"` und den Grund in `errors`. Da dies ein einzelner `query()`-Aufruf ist, löst das SDK nach dem Yielding dieses Fehler-Ergebnisses aus, daher wickeln Sie die Schleife in einen try-Block ein, um über ihn hinwegzugehen. Siehe [Ergebnis verarbeiten](/docs/de/agent-sdk/agent-loop#handle-the-result) für den Fehlervertrag.3884 Setzen Sie `"failIfUnavailable": True` in Ihren Sandbox-Einstellungen, um stattdessen zu stoppen. Das SDK leitet `failIfUnavailable` zusammen mit den deklarierten `SandboxSettings`-Feldern an Claude Code weiter. `query()` meldet dann eine `ResultMessage` mit `subtype="error_during_execution"` und den Grund in `errors`. Da dies ein einzelner `query()`-Aufruf ist, löst das SDK nach dem Yielding dieses Fehler-Ergebnisses aus, daher wickeln Sie die Schleife in einen try-Block ein, um über ihn hinwegzugehen. Siehe [Ergebnis verarbeiten](/docs/de/agent-sdk/agent-loop#handle-the-result) für den Fehlervertrag.

3885</Note>3885</Note>

3886 3886 

3887Um zu verhindern, dass in einer Sandbox ausgeführte Befehle in eine Datei schreiben, geben Sie ihren absoluten Pfad unter [`denyWrite`](/docs/de/settings-reference#sandbox-filesystem-denywrite) in Ihren Sandbox-Einstellungen an, z. B. `"filesystem": {"denyWrite": ["/home/user/project/.env"]}`. Das SDK leitet `filesystem` zusammen mit den deklarierten `SandboxSettings`-Feldern an Claude Code weiter. Sobald die Sandbox gestartet ist, blockiert sie Schreibvorgänge auf jeden aufgeführten Pfad. Wenn Sie `.env` oder `./.env` angeben, können in einer Sandbox ausgeführte Befehle in die `.env`-Datei im Arbeitsverzeichnis der Sitzung schreiben.3887Um zu verhindern, dass in einer Sandbox ausgeführte Befehle in eine Datei schreiben, geben Sie ihren absoluten Pfad unter [`denyWrite`](/docs/de/settings-reference#sandbox-filesystem-denywrite) in Ihren Sandbox-Einstellungen an, z. B. `"filesystem": {"denyWrite": ["/home/user/project/.env"]}`. Das SDK leitet `filesystem` zusammen mit den deklarierten `SandboxSettings`-Feldern an Claude Code weiter. Sobald die Sandbox gestartet ist, blockiert sie Schreibvorgänge auf jeden aufgeführten absoluten Pfad.

3888 3888 

3889<h4 id="example-usage">3889<h4 id="example-usage">

3890 Beispielverwendung3890 Beispielverwendung

Details

736| `interrupt()` | Unterbricht die Abfrage. Nur im Streaming-Eingabemodus verfügbar. Wenn die CLI die Fähigkeit `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage) ankündigt, wird mit einer [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) aufgelöst, die die Nachrichten auflistet, die beim Eintreffen der Unterbrechung ausstanden. Wird bei CLIs vor v2.1.205 mit `undefined` aufgelöst |736| `interrupt()` | Unterbricht die Abfrage. Nur im Streaming-Eingabemodus verfügbar. Wenn die CLI die Fähigkeit `interrupt_receipt_v1` in [`SDKSystemMessage.capabilities`](#sdksystemmessage) ankündigt, wird mit einer [`SDKControlInterruptResponse`](#sdkcontrolinterruptresponse) aufgelöst, die die Nachrichten auflistet, die beim Eintreffen der Unterbrechung ausstanden. Wird bei CLIs vor v2.1.205 mit `undefined` aufgelöst |

737| `rewindFiles(userMessageId, options?)` | Stellt Dateien auf ihren Zustand bei der angegebenen Benutzernachricht wieder her. Übergeben Sie `{ dryRun: true }`, um eine Vorschau der Änderungen zu erhalten. Erfordert `enableFileCheckpointing: true`. Siehe [Datei-Checkpointing](/docs/de/agent-sdk/file-checkpointing) |737| `rewindFiles(userMessageId, options?)` | Stellt Dateien auf ihren Zustand bei der angegebenen Benutzernachricht wieder her. Übergeben Sie `{ dryRun: true }`, um eine Vorschau der Änderungen zu erhalten. Erfordert `enableFileCheckpointing: true`. Siehe [Datei-Checkpointing](/docs/de/agent-sdk/file-checkpointing) |

738| `setPermissionMode()` | Ändert den Berechtigungsmodus (nur im Streaming-Eingabemodus verfügbar) |738| `setPermissionMode()` | Ändert den Berechtigungsmodus (nur im Streaming-Eingabemodus verfügbar) |

739| `setModel()` | Ändert das Modell (nur im Streaming-Eingabemodus verfügbar). Die Übergabe von `undefined` oder der Zeichenfolge `"default"` setzt auf das [Standardmodell von Claude Code](/docs/de/model-config) zurück |739| `setModel()` | Ändert das Modell (nur im Streaming-Eingabemodus verfügbar). Die Übergabe von `undefined` oder der Zeichenfolge `"default"` setzt auf das [Standardmodell von Claude Code](/docs/de/model-config) zurück. Eine Sitzung im `auto`-Modus [wechselt in den `default`-Modus](/docs/de/agent-sdk/permissions#auto-mode-auto), wenn das neue Modell den Auto-Modus nicht unterstützt |

740| `setMaxThinkingTokens()` | *Veraltet:* Verwenden Sie stattdessen die Option `thinking`. Ändert die maximale Anzahl an Thinking-Token. Die Übergabe von `null` setzt Thinking auf den Sitzungsstandard zurück: Eine während der Sitzung gesetzte Überschreibung wird gelöscht, und bei Sitzungen mit deaktiviertem Thinking bleibt Thinking ausgeschaltet |740| `setMaxThinkingTokens()` | *Veraltet:* Verwenden Sie stattdessen die Option `thinking`. Ändert die maximale Anzahl an Thinking-Token. Die Übergabe von `null` setzt Thinking auf den Sitzungsstandard zurück: Eine während der Sitzung gesetzte Überschreibung wird gelöscht, und bei Sitzungen mit deaktiviertem Thinking bleibt Thinking ausgeschaltet |

741| `applyFlagSettings(settings)` | Führt zur Laufzeit Einstellungen in die Flag-Einstellungsebene der Sitzung zusammen (nur im Streaming-Eingabemodus verfügbar). Siehe [`applyFlagSettings()`](#applyflagsettings) |741| `applyFlagSettings(settings)` | Führt zur Laufzeit Einstellungen in die Flag-Einstellungsebene der Sitzung zusammen (nur im Streaming-Eingabemodus verfügbar). Siehe [`applyFlagSettings()`](#applyflagsettings) |

742| `updateSettings(source, settings)` | Schreibt einen zugelassenen Schlüssel in die lokale Einstellungsdatei des Projekts oder in Ihre Benutzereinstellungsdatei, sodass der Wert für spätere Sitzungen erhalten bleibt. Siehe [`updateSettings()`](#updatesettings). Erfordert TypeScript SDK v0.3.257 oder höher, das Claude Code v2.1.257 bündelt |742| `updateSettings(source, settings)` | Schreibt einen zugelassenen Schlüssel in die lokale Einstellungsdatei des Projekts oder in Ihre Benutzereinstellungsdatei, sodass der Wert für spätere Sitzungen erhalten bleibt. Siehe [`updateSettings()`](#updatesettings). Erfordert TypeScript SDK v0.3.257 oder höher, das Claude Code v2.1.257 bündelt |


6368| Eigenschaft | Typ | Standard | Beschreibung |6368| Eigenschaft | Typ | Standard | Beschreibung |

6369| :- | :- | :- | :- |6369| :- | :- | :- | :- |

6370| `allowWrite` | `string[]` | `[]` | Dateipfadmuster, um Schreibzugriff zu ermöglichen |6370| `allowWrite` | `string[]` | `[]` | Dateipfadmuster, um Schreibzugriff zu ermöglichen |

6371| `denyWrite` | `string[]` | `[]` | Dateipfadmuster, um Schreibzugriff zu verweigern. Um Schreibvorgänge aus der Sandbox auf eine Datei im Arbeitsverzeichnis der Sitzung zu blockieren, geben Sie ihren absoluten Pfad an. Wenn Sie `.env` oder `./.env` angeben, können in einer Sandbox ausgeführte Befehle in die `.env`-Datei im Arbeitsverzeichnis der Sitzung schreiben |6371| `denyWrite` | `string[]` | `[]` | Dateipfadmuster, um Schreibzugriff zu verweigern. Um Schreibvorgänge aus der Sandbox auf eine Datei im Arbeitsverzeichnis der Sitzung zu blockieren, geben Sie ihren absoluten Pfad an. |

6372| `denyRead` | `string[]` | `[]` | Dateipfadmuster, um Lesezugriff zu verweigern |6372| `denyRead` | `string[]` | `[]` | Dateipfadmuster, um Lesezugriff zu verweigern |

6373 6373 

6374<h3 id="permissions-fallback-for-unsandboxed-commands">6374<h3 id="permissions-fallback-for-unsandboxed-commands">

agent-view.md +2 −2

Details

738Der [Berechtigungsmodus](/docs/de/permissions) hängt davon ab, wie Sie die Sitzung gestartet haben:738Der [Berechtigungsmodus](/docs/de/permissions) hängt davon ab, wie Sie die Sitzung gestartet haben:

739 739 

740* **Mit `/bg` oder `←` in den Hintergrund verschoben**: Claude Code behält den Berechtigungsmodus bei, in dem sich die Sitzung befand, sodass eine Sitzung, die Sie auf `acceptEdits` oder `auto` umgestellt haben, nach dem Trennen dabei bleibt740* **Mit `/bg` oder `←` in den Hintergrund verschoben**: Claude Code behält den Berechtigungsmodus bei, in dem sich die Sitzung befand, sodass eine Sitzung, die Sie auf `acceptEdits` oder `auto` umgestellt haben, nach dem Trennen dabei bleibt

741* **Aus einer mit `←` geöffneten Agenten-Ansicht versendet**: Die eigene Konfiguration des Ziels hat Vorrang, und der Berechtigungsmodus der Sitzung, aus der Sie kamen, gilt, wenn nichts anderes einen festlegt741* **Aus einer mit `←` geöffneten Agenten-Ansicht versendet**: Claude Code übernimmt den Berechtigungsmodus der neuen Sitzung zuerst aus der Konfiguration des Zielverzeichnisses, dann aus der Sitzung, aus der Sie kamen

742* **Aus einem in einer Shell gestarteten `claude agents` oder mit `claude --bg` versendet**: Die neue Sitzung startet so, wie eine neue `claude`-Sitzung in diesem Verzeichnis starten würde, es sei denn, Sie haben sie aus einer Agenten-Ansicht versendet, die Sie mit [Versand-Standardwerten](#dispatch-defaults) geöffnet haben. [In welchem Berechtigungsmodus eine Sitzung startet](/docs/de/permission-modes#which-mode-a-session-starts-in) führt die Reihenfolge auf742* **Aus einem in einer Shell gestarteten `claude agents` oder mit `claude --bg` versendet**: Die neue Sitzung startet so, wie eine neue `claude`-Sitzung in diesem Verzeichnis starten würde, es sei denn, Sie haben sie aus einer Agenten-Ansicht versendet, die Sie mit [Versand-Standardwerten](#dispatch-defaults) geöffnet haben. [In welchem Berechtigungsmodus eine Sitzung startet](/docs/de/permission-modes#which-mode-a-session-starts-in) führt die Reihenfolge auf

743 743 

744Für eine Sitzung, die Sie aus einer mit `←` geöffneten Agenten-Ansicht versenden, übernimmt Claude Code den Berechtigungsmodus aus dem ersten zutreffenden der folgenden Punkte:744Für eine Sitzung, die Sie aus einer mit `←` geöffneten Agenten-Ansicht versenden, übernimmt Claude Code den Berechtigungsmodus aus dem ersten zutreffenden der folgenden Punkte:


7461. Der [`permissions.defaultMode`](/docs/de/settings-reference#permissions-defaultmode) des Zielverzeichnisses. Dabei gelten zwei Quellregeln:7461. Der [`permissions.defaultMode`](/docs/de/settings-reference#permissions-defaultmode) des Zielverzeichnisses. Dabei gelten zwei Quellregeln:

747 * `auto` und `bypassPermissions` [werden nur aus verwalteten Einstellungen, einer `--settings`-Datei oder `~/.claude/settings.json` wirksam](/docs/de/settings-reference#permissions-defaultmode).747 * `auto` und `bypassPermissions` [werden nur aus verwalteten Einstellungen, einer `--settings`-Datei oder `~/.claude/settings.json` wirksam](/docs/de/settings-reference#permissions-defaultmode).

748 * Claude Code lehnt einen `defaultMode` aus der `.claude/settings.json` oder `.claude/settings.local.json` des Projekts ab, der einen freizügigeren Modus auswählt als den, in dem sich die Sitzung befand, aus der Sie kamen.748 * Claude Code lehnt einen `defaultMode` aus der `.claude/settings.json` oder `.claude/settings.local.json` des Projekts ab, der einen freizügigeren Modus auswählt als den, in dem sich die Sitzung befand, aus der Sie kamen.

7492. Der Berechtigungsmodus der Sitzung, aus der Sie kamen7492. Der Berechtigungsmodus der Sitzung, aus der Sie kamen. Wenn sich diese Sitzung im Modus `bypassPermissions` befand, kann die neue Sitzung stattdessen im Manual-Modus starten, mit dem Hinweis `Bypass permissions was requested at launch and ignored`. Das passiert, wenn Ihre Akzeptanz des Bypass-Haftungsausschlusses nur in `.claude/settings.local.json` oder einer `--settings`-Datei hinterlegt ist. Fahren Sie im Manual-Modus fort, oder [fügen Sie diese Akzeptanz zu `~/.claude/settings.json` hinzu](/docs/de/permission-modes#bypass-permissions-acceptance).

750 750 

751Wenn Claude Code den Modus einer Quelle als zu freizügig ablehnt, entscheidet die nächste Quelle in der Liste. Wenn Sie beispielsweise aus einer Sitzung im Plan-Modus in ein Verzeichnis versenden, dessen eingecheckte Einstellungen `acceptEdits` verlangen, startet die neue Sitzung im Plan-Modus. Wenn Sie diesen `defaultMode` in `~/.claude/settings.json` verschieben, gilt er unabhängig vom Berechtigungsmodus der Sitzung, aus der Sie kamen.751Wenn Claude Code den Modus einer Quelle als zu freizügig ablehnt, entscheidet die nächste Quelle in der Liste. Wenn Sie beispielsweise aus einer Sitzung im Plan-Modus in ein Verzeichnis versenden, dessen eingecheckte Einstellungen `acceptEdits` verlangen, startet die neue Sitzung im Plan-Modus. Wenn Sie diesen `defaultMode` in `~/.claude/settings.json` verschieben, gilt er unabhängig vom Berechtigungsmodus der Sitzung, aus der Sie kamen.

752 752 

Details

84| `--continue`, `-c` | Laden Sie die neueste Konversation im aktuellen Verzeichnis, einschließlich einer [Hintergrund-Sitzung, die beendet wurde](/docs/de/sessions#where-the-session-picker-looks); das Öffnen beendeter Hintergrund-Sitzungen erfordert Claude Code v2.1.257 oder später. Überspringt Sitzungen, die mit `claude -p` oder dem Agent SDK erstellt wurden, und Sitzungen, deren erster Prompt `/loop` war. `claude -p --continue` umfasst `-p`-, SDK- und `/loop`-Sitzungen. Umfasst Sitzungen, die dieses Verzeichnis mit `/add-dir` hinzugefügt haben | `claude --continue` |84| `--continue`, `-c` | Laden Sie die neueste Konversation im aktuellen Verzeichnis, einschließlich einer [Hintergrund-Sitzung, die beendet wurde](/docs/de/sessions#where-the-session-picker-looks); das Öffnen beendeter Hintergrund-Sitzungen erfordert Claude Code v2.1.257 oder später. Überspringt Sitzungen, die mit `claude -p` oder dem Agent SDK erstellt wurden, und Sitzungen, deren erster Prompt `/loop` war. `claude -p --continue` umfasst `-p`-, SDK- und `/loop`-Sitzungen. Umfasst Sitzungen, die dieses Verzeichnis mit `/add-dir` hinzugefügt haben | `claude --continue` |

85| `--dangerously-load-development-channels` | Aktivieren Sie [Channels](/docs/de/channels-reference#test-during-the-research-preview), die sich nicht auf der genehmigten Allowlist befinden, für die lokale Entwicklung. Akzeptiert `plugin:<name>@<marketplace>`- und `server:<name>`-Einträge. Fragt nach einer Bestätigung und wirkt daher in interaktiven Sitzungen. Mit `-p` ignoriert Claude Code das Flag | `claude --dangerously-load-development-channels server:webhook` |85| `--dangerously-load-development-channels` | Aktivieren Sie [Channels](/docs/de/channels-reference#test-during-the-research-preview), die sich nicht auf der genehmigten Allowlist befinden, für die lokale Entwicklung. Akzeptiert `plugin:<name>@<marketplace>`- und `server:<name>`-Einträge. Fragt nach einer Bestätigung und wirkt daher in interaktiven Sitzungen. Mit `-p` ignoriert Claude Code das Flag | `claude --dangerously-load-development-channels server:webhook` |

86| `--dangerously-skip-permissions` | Überspringen Sie Berechtigungsaufforderungen. Entspricht `--permission-mode bypassPermissions`. Siehe [Berechtigungsmodi](/docs/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) für das, was dies überspringt und nicht überspringt. Für Sitzungen, die mit `--bg` gestartet wurden, [bleibt der Modus bestehen, wenn der Supervisor die Sitzung neu startet](/docs/de/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |86| `--dangerously-skip-permissions` | Überspringen Sie Berechtigungsaufforderungen. Entspricht `--permission-mode bypassPermissions`. Siehe [Berechtigungsmodi](/docs/de/permission-modes#skip-all-checks-with-bypasspermissions-mode) für das, was dies überspringt und nicht überspringt. Für Sitzungen, die mit `--bg` gestartet wurden, [bleibt der Modus bestehen, wenn der Supervisor die Sitzung neu startet](/docs/de/agent-view#permission-mode-model-and-effort) | `claude --dangerously-skip-permissions` |

87| `--debug` | Aktivieren Sie den Debug-Modus mit optionaler Kategoriefilterung, wie z. B. `--debug='mcp,startup'` oder `--debug='!1p'`. Der Filter bindet nur in der `=`-Form; ein durch Leerzeichen getrennter Filter aktiviert den Debug-Modus ohne Filterung | `claude --debug='mcp,startup'` |87| `--debug` | Aktivieren Sie den Debug-Modus mit optionaler Kategoriefilterung, wie z. B. `--debug='mcp,startup'` oder `--debug='!mcp'`. Der Filter bindet nur in der `=`-Form; ein durch Leerzeichen getrennter Filter aktiviert den Debug-Modus ohne Filterung | `claude --debug='mcp,startup'` |

88| `--debug-file <path>` | Schreiben Sie Debug-Protokolle in einen bestimmten Dateipfad. Aktiviert implizit den Debug-Modus. Hat Vorrang vor `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |88| `--debug-file <path>` | Schreiben Sie Debug-Protokolle in einen bestimmten Dateipfad. Aktiviert implizit den Debug-Modus. Hat Vorrang vor `CLAUDE_CODE_DEBUG_LOGS_DIR` | `claude --debug-file /tmp/claude-debug.log` |

89| `--desktop` | Öffnen Sie die [Claude Desktop-App](/docs/de/desktop) im aktuellen Verzeichnis und beenden Sie sich, ohne eine Sitzung im Terminal zu starten. Fügen Sie `--continue` oder `--resume` mit einer Sitzungs-ID hinzu, um [diese Sitzung stattdessen in Desktop zu öffnen](/docs/de/desktop#coming-from-the-cli). `--resume` akzeptiert hier nur eine Sitzungs-ID, keine Namen oder Transkriptpfade. Akzeptiert keinen Prompt und keine anderen Flags außer `--verbose` und den `--debug`-Flags, da die App die Sitzung selbst startet. Verfügbar auf macOS und x64 Windows, wenn Sie mit einem Claude-Abonnement angemeldet sind. Erfordert Claude Code v2.1.285 oder später | `claude --desktop` |89| `--desktop` | Öffnen Sie die [Claude Desktop-App](/docs/de/desktop) im aktuellen Verzeichnis und beenden Sie sich, ohne eine Sitzung im Terminal zu starten. Fügen Sie `--continue` oder `--resume` mit einer Sitzungs-ID hinzu, um [diese Sitzung stattdessen in Desktop zu öffnen](/docs/de/desktop#coming-from-the-cli). `--resume` akzeptiert hier nur eine Sitzungs-ID, keine Namen oder Transkriptpfade. Akzeptiert keinen Prompt und keine anderen Flags außer `--verbose` und den `--debug`-Flags, da die App die Sitzung selbst startet. Verfügbar auf macOS und x64 Windows, wenn Sie mit einem Claude-Abonnement angemeldet sind. Erfordert Claude Code v2.1.285 oder später | `claude --desktop` |

90| `--disable-slash-commands` | Deaktivieren Sie alle Skills und Befehle für diese Sitzung | `claude --disable-slash-commands` |90| `--disable-slash-commands` | Deaktivieren Sie alle Skills und Befehle für diese Sitzung | `claude --disable-slash-commands` |

costs.md +1 −1

Details

429Eine Sitzung, die stundenlang offen war, kann viel mehr von Ihren Planlimits verbrauchen als Ihre Aktivität vermuten lässt, normalerweise aus einem dieser Gründe:429Eine Sitzung, die stundenlang offen war, kann viel mehr von Ihren Planlimits verbrauchen als Ihre Aktivität vermuten lässt, normalerweise aus einem dieser Gründe:

430 430 

431* **Langer Kontext**: Claude Code sendet Ihre vollständige Konversation mit jeder Anfrage, und jedes Mal, wenn Claude Tools verwendet, sendet es eine weitere Anfrage mit diesem Batch von Tool-Ergebnissen. Mit [Prompt Caching](/docs/de/prompt-caching) liest Claude Code diese Historie mit der [zwischengespeicherten Token-Rate](https://platform.claude.com/docs/en/about-claude/pricing), sodass eine einzeilige Frage in einer Sitzung, die den ganzen Tag offen war, immer noch Nutzung für die gesamte Konversation verursacht. Siehe [Kontext proaktiv verwalten](#manage-context-proactively) für Möglichkeiten, Ihren Kontext klein zu halten431* **Langer Kontext**: Claude Code sendet Ihre vollständige Konversation mit jeder Anfrage, und jedes Mal, wenn Claude Tools verwendet, sendet es eine weitere Anfrage mit diesem Batch von Tool-Ergebnissen. Mit [Prompt Caching](/docs/de/prompt-caching) liest Claude Code diese Historie mit der [zwischengespeicherten Token-Rate](https://platform.claude.com/docs/en/about-claude/pricing), sodass eine einzeilige Frage in einer Sitzung, die den ganzen Tag offen war, immer noch Nutzung für die gesamte Konversation verursacht. Siehe [Kontext proaktiv verwalten](#manage-context-proactively) für Möglichkeiten, Ihren Kontext klein zu halten

432* **Cache-Misses**: Ihre erste Nachricht nach einer Pause, die länger als die [Cache-Lebensdauer](/docs/de/prompt-caching#cache-lifetime) ist, verfehlt den Cache und verarbeitet Ihren vollständigen Kontext neu. Die Lebensdauer beträgt eine Stunde bei einem Abonnement und sinkt auf fünf Minuten, sobald Sie [Nutzungsguthaben](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) in Anspruch nehmen; bei einem API-Schlüssel oder Cloud-Provider beträgt sie standardmäßig fünf Minuten. Um die einstündige Lebensdauer beizubehalten, während Sie Nutzungsguthaben in Anspruch nehmen, [wählen Sie die TTL selbst](/docs/de/prompt-caching#choose-the-ttl-yourself). Bei Pro- und Max-Plänen bietet Claude Code beim Fortsetzen einer großen Sitzung nach einer langen Pause an, [von einer Zusammenfassung fortzufahren](/docs/de/sessions#resume-from-a-summary), sodass spätere Anfragen nicht die vollständige Historie tragen432* **Cache-Misses**: Ihre erste Nachricht nach einer Pause, die länger als die [Cache-Lebensdauer](/docs/de/prompt-caching#cache-lifetime) ist, verfehlt den Cache und verarbeitet Ihren vollständigen Kontext neu. Die Lebensdauer beträgt eine Stunde bei einem Abonnement und sinkt auf fünf Minuten, sobald Sie [Nutzungsguthaben](https://support.claude.com/en/articles/12429409-extra-usage-for-paid-claude-plans) in Anspruch nehmen; bei einem API-Schlüssel oder Cloud-Provider beträgt sie standardmäßig fünf Minuten. Um die einstündige Lebensdauer beizubehalten, während Sie Nutzungsguthaben in Anspruch nehmen, [wählen Sie die TTL selbst](/docs/de/prompt-caching#choose-the-ttl-yourself)

433* **Geplante Aufgaben**: Eine [geplante Aufgabe](/docs/de/scheduled-tasks) wird in ihrem Intervall ausgelöst, auch während die Sitzung untätig ist, und sendet jedes Mal Ihren vollständigen Kontext433* **Geplante Aufgaben**: Eine [geplante Aufgabe](/docs/de/scheduled-tasks) wird in ihrem Intervall ausgelöst, auch während die Sitzung untätig ist, und sendet jedes Mal Ihren vollständigen Kontext

434* **Sitzungsübergreifende Nachrichten**: Claude Code liefert eine [Nachricht aus einer anderen Ihrer Sitzungen](/docs/de/cross-session-messaging) als neuen Zug, wenn diese Sitzung untätig ist, und sendet jedes Mal Ihren vollständigen Kontext. Um eingehende Nachrichten zu halten, anstatt sie zu liefern, setzen Sie [`crossSessionInbound`](/docs/de/settings-reference#crosssessioninbound) auf `hold`434* **Sitzungsübergreifende Nachrichten**: Claude Code liefert eine [Nachricht aus einer anderen Ihrer Sitzungen](/docs/de/cross-session-messaging) als neuen Zug, wenn diese Sitzung untätig ist, und sendet jedes Mal Ihren vollständigen Kontext. Um eingehende Nachrichten zu halten, anstatt sie zu liefern, setzen Sie [`crossSessionInbound`](/docs/de/settings-reference#crosssessioninbound) auf `hold`

435* **Zielüberprüfungen**: Während Hintergrundarbeit ein aktives [Ziel](/docs/de/goal) wartet, fragt Claude Code [Claude, um diese Arbeit zu überprüfen](/docs/de/goal#background-work-defers-evaluation), auch wenn die Sitzung untätig ist, und startet einen neuen Zug, der Ihren vollständigen Kontext sendet. Claude Code startet höchstens drei untätige Überprüfungen pro Ziel zwischen Ihren Eingaben. Vor v2.1.246 waren untätige Überprüfungen unbegrenzt. Um Überprüfungen auszuschalten, setzen Sie [`CLAUDE_CODE_GOAL_CHECKIN_MINUTES`](/docs/de/env-vars) auf `0`. Untätige Überprüfungen erfordern Claude Code v2.1.236 oder später435* **Zielüberprüfungen**: Während Hintergrundarbeit ein aktives [Ziel](/docs/de/goal) wartet, fragt Claude Code [Claude, um diese Arbeit zu überprüfen](/docs/de/goal#background-work-defers-evaluation), auch wenn die Sitzung untätig ist, und startet einen neuen Zug, der Ihren vollständigen Kontext sendet. Claude Code startet höchstens drei untätige Überprüfungen pro Ziel zwischen Ihren Eingaben. Vor v2.1.246 waren untätige Überprüfungen unbegrenzt. Um Überprüfungen auszuschalten, setzen Sie [`CLAUDE_CODE_GOAL_CHECKIN_MINUTES`](/docs/de/env-vars) auf `0`. Untätige Überprüfungen erfordern Claude Code v2.1.236 oder später

env-vars.md +1 −1

Details

196| `ANTHROPIC_VERTEX_PROJECT_ID` | GCP-Projekt-ID, an die Anfragen an Google Cloud's Agent Platform adressiert werden. Siehe [GCP-Anmeldedaten konfigurieren](/docs/de/google-vertex-ai#3-configure-gcp-credentials) |196| `ANTHROPIC_VERTEX_PROJECT_ID` | GCP-Projekt-ID, an die Anfragen an Google Cloud's Agent Platform adressiert werden. Siehe [GCP-Anmeldedaten konfigurieren](/docs/de/google-vertex-ai#3-configure-gcp-credentials) |

197| `ANTHROPIC_WORKSPACE_ID` | Workspace-ID für [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Setzen Sie diese, wenn Ihre Federation-Regel mehr als einen Workspace umfasst, damit der Token-Austausch weiß, welcher Workspace das Ziel ist |197| `ANTHROPIC_WORKSPACE_ID` | Workspace-ID für [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation). Setzen Sie diese, wenn Ihre Federation-Regel mehr als einen Workspace umfasst, damit der Token-Austausch weiß, welcher Workspace das Ziel ist |

198| `API_FORCE_IDLE_TIMEOUT` | Überschreibt den 5-minütigen Leerlauf-Timeout für den Body, der eine gestreamte Modellantwort abbricht, wenn keine Bytes eintreffen. Setzen Sie `0`, um den Timeout auszuschalten, etwa wenn ein langsames [Gateway](/docs/de/llm-gateway) oder ein lokales Modell zwischen Chunks länger als 5 Minuten pausiert, oder `1`, um ihn für jeden Anbieter eingeschaltet zu lassen. Wenn nicht gesetzt, ist der Timeout bei anderen Anbietern als der direkten Anthropic-API, [Claude Platform on AWS](/docs/de/claude-platform-on-aws) und Amazon Bedrock mit gesetztem `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` aktiv. Die [Stream-Watchdogs](/docs/de/network-config#streaming-idle-watchdogs) laufen unabhängig davon und brechen eine lange stille Pause auch dann ab, wenn Sie hier `0` setzen |198| `API_FORCE_IDLE_TIMEOUT` | Überschreibt den 5-minütigen Leerlauf-Timeout für den Body, der eine gestreamte Modellantwort abbricht, wenn keine Bytes eintreffen. Setzen Sie `0`, um den Timeout auszuschalten, etwa wenn ein langsames [Gateway](/docs/de/llm-gateway) oder ein lokales Modell zwischen Chunks länger als 5 Minuten pausiert, oder `1`, um ihn für jeden Anbieter eingeschaltet zu lassen. Wenn nicht gesetzt, ist der Timeout bei anderen Anbietern als der direkten Anthropic-API, [Claude Platform on AWS](/docs/de/claude-platform-on-aws) und Amazon Bedrock mit gesetztem `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` aktiv. Die [Stream-Watchdogs](/docs/de/network-config#streaming-idle-watchdogs) laufen unabhängig davon und brechen eine lange stille Pause auch dann ab, wenn Sie hier `0` setzen |

199| `API_TIMEOUT_MS` | Timeout für API-Anfragen in Millisekunden (Standard: 600000 bzw. 10 Minuten; Maximum: 2147483647). Erhöhen Sie diesen Wert, wenn bei Anfragen in langsamen Netzwerken oder beim Routing über einen Proxy eine Zeitüberschreitung auftritt. Werte über dem Maximum lassen den zugrunde liegenden Timer überlaufen und führen dazu, dass Anfragen sofort fehlschlagen |199| `API_TIMEOUT_MS` | Timeout für API-Anfragen in Millisekunden (Standard: 600000 bzw. 10 Minuten; Maximum: 2147483647). Eine Streaming-Anfrage muss ihre Response-Header innerhalb dieser Zeit erhalten. Erhöhen Sie diesen Wert, wenn Anfragen in langsamen Netzwerken oder beim Routing über einen Proxy in einen Timeout laufen |

200| `AWS_BEARER_TOKEN_BEDROCK` | Amazon Bedrock-API-Schlüssel für die Authentifizierung (siehe [Amazon Bedrock-API-Schlüssel](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |200| `AWS_BEARER_TOKEN_BEDROCK` | Amazon Bedrock-API-Schlüssel für die Authentifizierung (siehe [Amazon Bedrock-API-Schlüssel](https://aws.amazon.com/blogs/machine-learning/accelerate-ai-development-with-amazon-bedrock-api-keys/)) |

201| `BASH_DEFAULT_TIMEOUT_MS` | Standard-Timeout für einen Bash- oder PowerShell-Tool-Befehl im Vordergrund, in Millisekunden (Standard: 120000 bzw. 2 Minuten). Ein Wert über dem [Standard-Zeitlimit für Hintergrundbefehle](/docs/de/tools-reference#time-limit-for-background-commands) ersetzt diesen Standard in unbeaufsichtigten Sitzungen. Das Zeitlimit für Hintergrundbefehle erfordert Claude Code v2.1.285 oder höher |201| `BASH_DEFAULT_TIMEOUT_MS` | Standard-Timeout für einen Bash- oder PowerShell-Tool-Befehl im Vordergrund, in Millisekunden (Standard: 120000 bzw. 2 Minuten). Ein Wert über dem [Standard-Zeitlimit für Hintergrundbefehle](/docs/de/tools-reference#time-limit-for-background-commands) ersetzt diesen Standard in unbeaufsichtigten Sitzungen. Das Zeitlimit für Hintergrundbefehle erfordert Claude Code v2.1.285 oder höher |

202| `BASH_MAX_OUTPUT_LENGTH` | Maximale Anzahl von Zeichen der Bash-Ausgabe, die Claude Code in das Ergebnis eines Befehls zurückliest (Standard: 30000; Maximum: 150000). Wenn Sie die Einstellung [`bashOutputMaxChars`](/docs/de/settings-reference#bashoutputmaxchars) setzen, ignoriert Claude Code diese Variable. Siehe [Ausgabelimits](/docs/de/tools-reference#output-limits) |202| `BASH_MAX_OUTPUT_LENGTH` | Maximale Anzahl von Zeichen der Bash-Ausgabe, die Claude Code in das Ergebnis eines Befehls zurückliest (Standard: 30000; Maximum: 150000). Wenn Sie die Einstellung [`bashOutputMaxChars`](/docs/de/settings-reference#bashoutputmaxchars) setzen, ignoriert Claude Code diese Variable. Siehe [Ausgabelimits](/docs/de/tools-reference#output-limits) |

errors.md +3 −1

Details

346| `Can't open — this session is running in another terminal` | [Fehler in Hintergrund-Sitzungen](#this-session-is-running-in-another-terminal) |346| `Can't open — this session is running in another terminal` | [Fehler in Hintergrund-Sitzungen](#this-session-is-running-in-another-terminal) |

347| `This conversation is already open in another running Claude session` | [Fehler in Hintergrund-Sitzungen](#this-session-is-running-in-another-terminal) |347| `This conversation is already open in another running Claude session` | [Fehler in Hintergrund-Sitzungen](#this-session-is-running-in-another-terminal) |

348| `This session's saved conversation is no longer on disk` | [Fehler in Hintergrund-Sitzungen](#this-sessions-saved-conversation-is-no-longer-on-disk) |348| `This session's saved conversation is no longer on disk` | [Fehler in Hintergrund-Sitzungen](#this-sessions-saved-conversation-is-no-longer-on-disk) |

349| `Bypass permissions was requested at launch and ignored` | [Alle Prüfungen mit dem bypassPermissions-Modus überspringen](/docs/de/permission-modes#bypass-permissions-acceptance) |

349| `kept <id> — its worktree is still at <path>` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |350| `kept <id> — its worktree is still at <path>` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |

350| `kept <id> — <n> unpushed commits on <branch>` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |351| `kept <id> — <n> unpushed commits on <branch>` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |

351| `kept <id> — worktree has commits that are not pushed anywhere` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |352| `kept <id> — worktree has commits that are not pushed anywhere` | [Fehler in Hintergrund-Sitzungen](#worktree-has-commits-that-are-not-pushed-anywhere) |


418* Unterbrochene Verbindungen. Wenn eine Verbindung während einer Anfrage unterbrochen wird, bevor Claude einen Teil seiner Antwort abgeschlossen hat, einschließlich seines Thinking, sendet Claude Code die Anfrage mit demselben Backoff erneut, und der Turn wird fortgesetzt, auch wenn bereits etwas Text gestreamt wurde. Wird die Verbindung unterbrochen, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, sendet Claude Code die Anfrage stattdessen bis zu zweimal schnell hintereinander erneut und beendet den Turn mit `Connection lost before a response was produced`, wenn die Verbindung an diesem Punkt weiterhin abbricht.419* Unterbrochene Verbindungen. Wenn eine Verbindung während einer Anfrage unterbrochen wird, bevor Claude einen Teil seiner Antwort abgeschlossen hat, einschließlich seines Thinking, sendet Claude Code die Anfrage mit demselben Backoff erneut, und der Turn wird fortgesetzt, auch wenn bereits etwas Text gestreamt wurde. Wird die Verbindung unterbrochen, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, sendet Claude Code die Anfrage stattdessen bis zu zweimal schnell hintereinander erneut und beendet den Turn mit `Connection lost before a response was produced`, wenn die Verbindung an diesem Punkt weiterhin abbricht.

419* Eine Verbindung, bei der Claude Code erkennt, dass sie unterbrochen wurde, weil Ihr Computer während einer Anfrage in den Ruhezustand gewechselt ist. Claude Code behandelt sie als unterbrochene Verbindung gemäß den obigen Regeln; sobald das Label für den Wiederholungsversuch den konkreten Grund nennt, lautet es `Connection lost while your computer was asleep`, und wenn der Turn endet, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, lautet die Meldung `Your computer went to sleep before a response was produced`.420* Eine Verbindung, bei der Claude Code erkennt, dass sie unterbrochen wurde, weil Ihr Computer während einer Anfrage in den Ruhezustand gewechselt ist. Claude Code behandelt sie als unterbrochene Verbindung gemäß den obigen Regeln; sobald das Label für den Wiederholungsversuch den konkreten Grund nennt, lautet es `Connection lost while your computer was asleep`, und wenn der Turn endet, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, lautet die Meldung `Your computer went to sleep before a response was produced`.

420* Ein stockender Antwort-Stream, wenn die Response-Header eingetroffen sind, aber noch nichts von Claudes Antwort angekommen ist, oder wenn Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat: Claude Code bricht die stockende Verbindung ab und streamt die Anfrage höchstens einmal erneut. Stockt die Antwort ein zweites Mal, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, beendet Claude Code den Turn mit `The response stalled before a response was produced`.421* Ein stockender Antwort-Stream, wenn die Response-Header eingetroffen sind, aber noch nichts von Claudes Antwort angekommen ist, oder wenn Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat: Claude Code bricht die stockende Verbindung ab und streamt die Anfrage höchstens einmal erneut. Stockt die Antwort ein zweites Mal, nachdem Claude das Nachdenken abgeschlossen, aber noch keinen Text und keinen Tool-Aufruf begonnen hat, beendet Claude Code den Turn mit `The response stalled before a response was produced`.

421* Eine Streaming-Anfrage, die die API nie mit Response-Headern beantwortet, auf einer Verbindung, bei der die [First-Byte-Deadline gilt](/docs/de/network-config#streaming-idle-watchdogs): Claude Code bricht sie bei Erreichen der Deadline ab und sendet sie höchstens einmal pro Modellanfrage erneut, innerhalb des Budgets für Wiederholungsversuche, und beendet den Turn dann mit [No response from API](#no-response-from-api), wenn auch dieser Versuch unbeantwortet bleibt. Bei anderen Verbindungen wartet die Anfrage bis zum Ablauf von `API_TIMEOUT_MS`. Wenn Sie `CLAUDE_CODE_RETRY_WATCHDOG` setzen, gilt die Beschränkung auf einen Wiederholungsversuch nicht.422* Eine Streaming-Anfrage, die die API nie mit Response-Headern beantwortet, auf einer Verbindung, bei der die [First-Byte-Deadline gilt](/docs/de/network-config#streaming-idle-watchdogs): Claude Code bricht sie bei Erreichen der Deadline ab und sendet sie höchstens einmal pro Modellanfrage erneut, innerhalb des Budgets für Wiederholungsversuche, und beendet den Turn dann mit [No response from API](#no-response-from-api), wenn auch dieser Versuch unbeantwortet bleibt. Wenn Sie `CLAUDE_CODE_RETRY_WATCHDOG` setzen, gilt die Beschränkung auf einen Wiederholungsversuch nicht.

422* Eine Streaming-Antwort, die der Inhaltsfilter für die Ausgabe der API stoppt, bevor Claude entweder das Nachdenken abgeschlossen oder einen Text oder Tool-Aufruf begonnen hat. Claude Code sendet die Anfrage einmal erneut, innerhalb des Budgets für Wiederholungsversuche, und zeigt [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) an, wenn der Filter auch die zweite Antwort stoppt.423* Eine Streaming-Antwort, die der Inhaltsfilter für die Ausgabe der API stoppt, bevor Claude entweder das Nachdenken abgeschlossen oder einen Text oder Tool-Aufruf begonnen hat. Claude Code sendet die Anfrage einmal erneut, innerhalb des Budgets für Wiederholungsversuche, und zeigt [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) an, wenn der Filter auch die zweite Antwort stoppt.

423* Vorübergehende 429-Drosselungen, jedoch nicht die `429` eines Gateways wegen eines Ausgabenlimits, die keine Drosselung ist; siehe [Spend limit reached](#spend-limit-reached).424* Vorübergehende 429-Drosselungen, jedoch nicht die `429` eines Gateways wegen eines Ausgabenlimits, die keine Drosselung ist; siehe [Spend limit reached](#spend-limit-reached).

424 * Wenn Sie mit einem claude.ai-Abonnement angemeldet sind, gehören dazu auch 429-Drosselungen, die nicht die Kontingent-Header Ihres Plans enthalten. Vor v2.1.199 versuchte Claude Code diese Drosselungen nur bei Anmeldungen mit API-Schlüssel und Enterprise erneut.425 * Wenn Sie mit einem claude.ai-Abonnement angemeldet sind, gehören dazu auch 429-Drosselungen, die nicht die Kontingent-Header Ihres Plans enthalten. Vor v2.1.199 versuchte Claude Code diese Drosselungen nur bei Anmeldungen mit API-Schlüssel und Enterprise erneut.


4552 4553 

4553* Korrigieren Sie jeden Eintrag, den der Fehler benennt, anhand der [für Subagenten verfügbaren Tools](/docs/de/sub-agents#available-tools)4554* Korrigieren Sie jeden Eintrag, den der Fehler benennt, anhand der [für Subagenten verfügbaren Tools](/docs/de/sub-agents#available-tools)

4554* Entfernen Sie Einträge für Tools, die die Sitzung nicht hat, wie MCP-Tools von einem Server, der nicht verbunden ist4555* Entfernen Sie Einträge für Tools, die die Sitzung nicht hat, wie MCP-Tools von einem Server, der nicht verbunden ist

4556* Wenn der Eintrag einen verbundenen MCP-Server benennt, vergleichen Sie den Eintrag mit dem Namen dieses Servers, wie ihn die [Tool-Namen](/docs/de/permissions#mcp) des Servers schreiben, etwa `reports__v2` in `mcp__reports__v2__get_totals`. Schreiben Sie für diesen Server `mcp__reports__v2__*`, also `mcp__` gefolgt vom vollständigen Namen und `__*`. Mit dem kürzeren `mcp__reports`, das einen Server namens `reports` benennt, erhält der Subagent keines der `reports__v2`-Tools

4555* Für ein Tool, das [Hintergrund-Subagenten ablegen](/docs/de/sub-agents#available-tools), wie `CronCreate`, entfernen Sie den Eintrag. Um das Tool zu behalten, [schalten Sie den Fork-Modus aus](/docs/de/sub-agents#turn-fork-mode-on-or-off) und bitten Sie Claude, den Subagenten im Vordergrund auszuführen4557* Für ein Tool, das [Hintergrund-Subagenten ablegen](/docs/de/sub-agents#available-tools), wie `CronCreate`, entfernen Sie den Eintrag. Um das Tool zu behalten, [schalten Sie den Fork-Modus aus](/docs/de/sub-agents#turn-fork-mode-on-or-off) und bitten Sie Claude, den Subagenten im Vordergrund auszuführen

4556* Löschen Sie das `tools`-Feld, anstatt Tools aufzulisten, um dem Subagenten alle [für Subagenten verfügbaren Tools](/docs/de/sub-agents#available-tools) zu geben4558* Löschen Sie das `tools`-Feld, anstatt Tools aufzulisten, um dem Subagenten alle [für Subagenten verfügbaren Tools](/docs/de/sub-agents#available-tools) zu geben

4557* Für eine `tools`-Liste, die nur `Agent` enthält, erhöhen Sie das [Tiefenlimit](/docs/de/sub-agents#let-subagents-spawn-their-own-subagents) oder geben Sie dem Agenten mindestens ein anderes Tool: Claude Code behält `Agent` bei diesem Limit zurück, daher wird eine Liste mit nichts anderem darin zu keinen Tools aufgelöst4559* Für eine `tools`-Liste, die nur `Agent` enthält, erhöhen Sie das [Tiefenlimit](/docs/de/sub-agents#let-subagents-spawn-their-own-subagents) oder geben Sie dem Agenten mindestens ein anderes Tool: Claude Code behält `Agent` bei diesem Limit zurück, daher wird eine Liste mit nichts anderem darin zu keinen Tools aufgelöst

hooks.md +53 −16

Details

476| `async` | nein | Wenn `true`, wird im Hintergrund ohne Blockierung ausgeführt. Siehe [Hooks im Hintergrund ausführen](#run-hooks-in-the-background) |476| `async` | nein | Wenn `true`, wird im Hintergrund ohne Blockierung ausgeführt. Siehe [Hooks im Hintergrund ausführen](#run-hooks-in-the-background) |

477| `asyncRewake` | nein | Wenn `true`, wird im Hintergrund ausgeführt und weckt Claude bei Exit-Code 2 auf. Die stderr des Hooks oder stdout, wenn stderr leer ist, wird Claude als [Systemerinnerung](/docs/de/glossary#system-reminder) angezeigt, damit es auf einen langfristigen Hintergrund-Fehler reagieren kann |477| `asyncRewake` | nein | Wenn `true`, wird im Hintergrund ausgeführt und weckt Claude bei Exit-Code 2 auf. Die stderr des Hooks oder stdout, wenn stderr leer ist, wird Claude als [Systemerinnerung](/docs/de/glossary#system-reminder) angezeigt, damit es auf einen langfristigen Hintergrund-Fehler reagieren kann |

478| `shell` | nein | Shell, die für diesen Hook verwendet werden soll. Akzeptiert `"bash"` oder `"powershell"`. Standardmäßig `"bash"` oder `"powershell"` unter Windows, wenn Git Bash nicht installiert ist. Das Setzen von `"powershell"` führt den Befehl über PowerShell unter Windows aus. Erfordert nicht `CLAUDE_CODE_USE_POWERSHELL_TOOL`, da Hooks PowerShell direkt spawnen. Wird ignoriert, wenn `args` gesetzt ist |478| `shell` | nein | Shell, die für diesen Hook verwendet werden soll. Akzeptiert `"bash"` oder `"powershell"`. Standardmäßig `"bash"` oder `"powershell"` unter Windows, wenn Git Bash nicht installiert ist. Das Setzen von `"powershell"` führt den Befehl über PowerShell unter Windows aus. Erfordert nicht `CLAUDE_CODE_USE_POWERSHELL_TOOL`, da Hooks PowerShell direkt spawnen. Wird ignoriert, wenn `args` gesetzt ist |

479| `onFailure` | nein | Was mit der Aktion geschieht, wenn der Hook fehlschlägt: `"continue"`, der Standardwert, oder `"block"`. Siehe [Aktion blockieren, wenn ein Hook fehlschlägt](#block-the-action-when-a-hook-fails). Erfordert Claude Code v2.1.295 oder später |479| `onFailure` | nein | Ob die Aktion, die den Hook ausgelöst hat, fortgesetzt wird, wenn der Hook fehlschlägt: `"continue"` oder `"block"`. Siehe [Aktion blockieren, wenn ein Hook fehlschlägt](#block-the-action-when-a-hook-fails) für `"block"` und für den Fall, dass das Feld nicht gesetzt ist. Erfordert Claude Code v2.1.295 oder später |

480 480 

481<a id="exec-form-and-shell-form" />481<a id="exec-form-and-shell-form" />

482 482 


829 829 

830* **Erfolg**: Ihr Hook wird mit 0 beendet. Claude Code wendet alle [JSON-Ausgabe](#json-output)-Felder an, die Ihr Hook ausgegeben hat, und die Aktion wird fortgesetzt, sofern diese Felder sie nicht blockieren oder verweigern. [Hooks, die einen Hintergrundprozess starten](#hooks-that-start-a-background-process) behandelt die Ausnahme.830* **Erfolg**: Ihr Hook wird mit 0 beendet. Claude Code wendet alle [JSON-Ausgabe](#json-output)-Felder an, die Ihr Hook ausgegeben hat, und die Aktion wird fortgesetzt, sofern diese Felder sie nicht blockieren oder verweigern. [Hooks, die einen Hintergrundprozess starten](#hooks-that-start-a-background-process) behandelt die Ausnahme.

831* **Blockierender Fehler**: Ihr Hook wird mit 2 beendet. Bei [Events, die blockieren können](#exit-code-2-behavior-per-event), stoppt Claude Code die Aktion.831* **Blockierender Fehler**: Ihr Hook wird mit 2 beendet. Bei [Events, die blockieren können](#exit-code-2-behavior-per-event), stoppt Claude Code die Aktion.

832* **Nicht blockierender Fehler**: Ihr Hook wird mit einem anderen Code beendet oder schlägt auf andere Weise fehl, etwa weil er nicht startet oder ungültiges JSON ausgibt. Die Aktion wird fortgesetzt, und bei Events wie `PreToolUse` sehen Sie einen `<hook name> hook error`-Hinweis im Transkript. Wenn ein fehlgeschlagener Hook die Aktion blockieren soll, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).832* **Nicht blockierender Fehler**: Ihr Hook wird mit einem anderen Code beendet oder schlägt auf andere Weise fehl, etwa weil er nicht startet oder ungültiges JSON ausgibt. Die Aktion wird fortgesetzt, außer bei Hooks, [deren Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), zum Beispiel einem Hook, bei dem `onFailure` auf `"block"` gesetzt ist. Bei Events wie `PreToolUse` sehen Sie einen `<hook name> hook error`-Hinweis im Transkript.

833 833 

834Was Ihr Hook auf stdout ausgibt, kann das Ergebnis ändern. Wenn zum Beispiel ein `PreToolUse`-Hook mit 1 beendet wird, aber JSON ausgibt, das die Validierung besteht, ist der Lauf ein Erfolg, und die JSON-Felder entscheiden, was passiert. Um das Ergebnis Ihres Hooks bei einem Event wie `PreToolUse` zu ermitteln, suchen Sie in der ersten Spalte, was er auf stdout ausgegeben hat, und oben seinen Exit-Code:834Was Ihr Hook auf stdout ausgibt, kann das Ergebnis ändern. Wenn zum Beispiel ein `PreToolUse`-Hook mit 1 beendet wird, aber JSON ausgibt, das die Validierung besteht, kann dieses JSON trotzdem entscheiden, was passiert. Um das Ergebnis Ihres Hooks bei einem Event wie `PreToolUse` zu ermitteln, suchen Sie in der ersten Spalte, was er auf stdout ausgegeben hat, und oben seinen Exit-Code:

835 835 

836| Stdout | Exit 0 | Exit 2 | Jeder andere Exit-Code |836| Stdout | Exit 0 | Exit 2 | Jeder andere Exit-Code |

837| :- | :- | :- | :- |837| :- | :- | :- | :- |

838| JSON-Objekt, das die [Schemavalidierung](#json-output) besteht | Erfolg. Die Felder werden angewendet | Blockierender Fehler. Claude Code liest die Felder trotzdem, aber sie können den Block nicht überschreiben | Erfolg. Claude Code ignoriert den Exit-Code, und allein die Felder entscheiden. Mit [`onFailure: "block"`](#block-the-action-when-a-hook-fails) zählt dies als Fehlschlag |838| JSON-Objekt, das die [Schemavalidierung](#json-output) besteht | Erfolg. Die Felder werden angewendet | Blockierender Fehler. Claude Code liest die Felder trotzdem, aber sie können den Block nicht überschreiben | Erfolg. Claude Code ignoriert den Exit-Code, und allein die Felder entscheiden. Bei Hooks, [deren Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), zählt der Lauf stattdessen als Fehlschlag |

839| JSON, das [nicht geparst werden kann](#exit-code-0) oder die Schemavalidierung nicht besteht | Nicht blockierender Fehler. Der Hinweis enthält die Parse- oder Validierungsmeldung | Blockierender Fehler. Ihr stderr ist der Grund | Nicht blockierender Fehler. Der Hinweis enthält die Parse- oder Validierungsmeldung |839| JSON, das [nicht geparst werden kann](#exit-code-0) oder die Schemavalidierung nicht besteht | Nicht blockierender Fehler. Der Hinweis enthält die Parse- oder Validierungsmeldung | Blockierender Fehler. Ihr stderr ist der Grund | Nicht blockierender Fehler. Der Hinweis enthält die Parse- oder Validierungsmeldung |

840| [Einfacher Text](#exit-code-0) oder nichts | Erfolg | Blockierender Fehler. Ihr stderr ist der Grund | Nicht blockierender Fehler. Der Hinweis enthält die erste Zeile Ihres stderr |840| [Einfacher Text](#exit-code-0) oder nichts | Erfolg | Blockierender Fehler. Ihr stderr ist der Grund | Nicht blockierender Fehler. Der Hinweis enthält die erste Zeile Ihres stderr |

841 841 


864* **Zwei oder mehr Zeilen, die jeweils für sich als JSON geparst werden, wobei die erste mit `{` beginnt und die letzte mit `}` endet**: einfacher Text, wenn keine Zeile ein JSON-Ausgabe-Objekt ist, das ein Feld setzt, und ein Parse-Fehler, wenn eine Zeile es ist.864* **Zwei oder mehr Zeilen, die jeweils für sich als JSON geparst werden, wobei die erste mit `{` beginnt und die letzte mit `}` endet**: einfacher Text, wenn keine Zeile ein JSON-Ausgabe-Objekt ist, das ein Feld setzt, und ein Parse-Fehler, wenn eine Zeile es ist.

865* **Alles andere, das mit `{` beginnt und mit `}` endet, aber kein gültiges JSON ist**: ein Parse-Fehler.865* **Alles andere, das mit `{` beginnt und mit `}` endet, aber kein gültiges JSON ist**: ein Parse-Fehler.

866 866 

867Wenn Claude Code versucht, Ihren stdout als JSON zu parsen, und dies fehlschlägt, oder das geparste Objekt die [Schemavalidierung](#json-output) nicht besteht, ist der Lauf ein [nicht blockierender Fehler](#exit-code-output). Der `<hook name> hook error`-Hinweis enthält die Parse- oder Validierungsmeldung. Bei den Events, die einfachen Text-stdout als Kontext hinzufügen, fügt Claude Code stdout, den es nicht parsen konnte, nicht hinzu.867Sofern es sich nicht um einen Hook handelt, [dessen Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), ist ein Parse-Fehler oder ein geparstes Objekt, das die [Schemavalidierung](#json-output) nicht besteht, ein [nicht blockierender Fehler](#exit-code-output). Der `<hook name> hook error`-Hinweis enthält die Parse- oder Validierungsmeldung. Bei den Events, die einfachen Text-stdout als Kontext hinzufügen, fügt Claude Code stdout, den es nicht parsen konnte, nicht hinzu.

868 868 

869Claude sieht stderr von einem Hook, der mit 0 beendet wird, nie. Um ihn bei Events wie `PreToolUse` selbst zu lesen, aktivieren Sie [Debug-Logging](#debug-hooks). Um eine Warnung an Claude von einem `PostToolUse`- oder `PostToolUseFailure`-Hook zu übermitteln, beenden Sie stattdessen mit 2, damit [Claude den stderr sieht](#exit-code-2-behavior-per-event), obwohl das Tool bereits ausgeführt wurde.869Claude sieht stderr von einem Hook, der mit 0 beendet wird, nie. Um ihn bei Events wie `PreToolUse` selbst zu lesen, aktivieren Sie [Debug-Logging](#debug-hooks). Um eine Warnung an Claude von einem `PostToolUse`- oder `PostToolUseFailure`-Hook zu übermitteln, beenden Sie stattdessen mit 2, damit [Claude den stderr sieht](#exit-code-2-behavior-per-event), obwohl das Tool bereits ausgeführt wurde.

870 870 


907 Andere Exit-Codes907 Andere Exit-Codes

908</h4>908</h4>

909 909 

910Wenn Ihr Hook mit einem anderen Code als 0 oder 2 beendet wird und einfachen Text oder nichts auf stdout ausgibt, ist der Lauf ein [nicht blockierender Fehler](#exit-code-output). Sie sehen im Transkript einen `<hook name> hook error`-Hinweis mit `Failed with non-blocking status code:` und der ersten Zeile des stderr Ihres Hooks. Wenn zum Beispiel ein `PreToolUse`-Hook für `Bash` `something broke` auf stderr ausgibt und mit 1 beendet wird, enthält der `PreToolUse:Bash hook error`-Hinweis diese Zeile:910Sofern es sich nicht um einen Hook handelt, [dessen Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), ist ein Exit-Code außer 0 oder 2 mit einfachem Text oder nichts auf stdout ein [nicht blockierender Fehler](#exit-code-output). Wenn die Aktion fortgesetzt wird, sehen Sie im Transkript einen `<hook name> hook error`-Hinweis mit `Failed with non-blocking status code:` und der ersten Zeile des stderr Ihres Hooks.

911 

912Wenn zum Beispiel ein `PreToolUse`-Hook für `Bash` `something broke` auf stderr ausgibt und mit 1 beendet wird, enthält der `PreToolUse:Bash hook error`-Hinweis diese Zeile:

911 913 

912```text theme={null}914```text theme={null}

913Failed with non-blocking status code: something broke915Failed with non-blocking status code: something broke


915 917 

916Um den vollständigen stderr statt nur seiner ersten Zeile zu erfassen, aktivieren Sie [Debug-Logging](#debug-hooks).918Um den vollständigen stderr statt nur seiner ersten Zeile zu erfassen, aktivieren Sie [Debug-Logging](#debug-hooks).

917 919 

918Ein Hook, der nicht starten kann, ist ebenfalls ein nicht blockierender Fehler. In Shell-Form beendet sich die Shell, wenn der Skriptpfad nicht existiert oder nicht ausführbar ist, mit einem Code wie 127, und der Hinweis enthält die Meldung des Interpreters, zum Beispiel `Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory`. Wenn Sie einen Policy-Hook einrichten, achten Sie bei seiner ersten Ausführung auf diesen Hinweis, denn ein falsch geschriebener Pfad in `settings.json` bedeutet, dass der Hook nie ausgeführt wird. Um die Aktion stattdessen zu blockieren, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).920Sofern es sich nicht um einen Hook handelt, [dessen Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), ist ein Hook, der nicht starten kann, ebenfalls ein nicht blockierender Fehler. In Shell-Form beendet sich die Shell, wenn der Skriptpfad nicht existiert oder nicht ausführbar ist, mit einem Code wie 127, und der Hinweis enthält die Meldung des Interpreters. Wenn der Skriptpfad zum Beispiel nicht existiert, enthält der Hinweis eine Zeile wie diese:

921 

922```text theme={null}

923Failed with non-blocking status code: /bin/sh: /path/to/hook.sh: No such file or directory

924```

925 

926Wenn Sie einen Policy-Hook einrichten, achten Sie bei seiner ersten Ausführung auf diesen Hinweis, denn ein falsch geschriebener Pfad in `settings.json` bedeutet, dass der Hook nie ausgeführt wird. Um die Aktion zu blockieren, wenn der Hook nicht starten kann, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

919 927 

920<Warning>928<Warning>

921 Ohne gültiges JSON auf stdout behandelt Claude Code Exit-Code 1 als nicht blockierenden Fehler, obwohl 1 der konventionelle Unix-Fehlercode ist. Wenn Ihr Hook eine Richtlinie durchsetzen soll, verwenden Sie `exit 2`.929 Exit-Code 1 ohne gültige JSON-Ausgabe ist ein nicht blockierender Fehler, sofern es sich nicht um einen Hook handelt, [dessen Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails), obwohl 1 der konventionelle Unix-Fehlercode ist. Wenn Ihr Hook eine Richtlinie durchsetzen soll, verwenden Sie `exit 2`.

922</Warning>930</Warning>

923 931 

924<h4 id="timeouts">932<h4 id="timeouts">


929 937 

930Bei [`PreModelSwitch`](#premodelswitch) blockiert ein Hook, der bei seinem Timeout abgebrochen wird, den Modellwechsel. Bei `PreToolUse` unterscheiden sich die beiden Hook-Familien:938Bei [`PreModelSwitch`](#premodelswitch) blockiert ein Hook, der bei seinem Timeout abgebrochen wird, den Modellwechsel. Bei `PreToolUse` unterscheiden sich die beiden Hook-Familien:

931 939 

932* Ein abgelaufener `command`-, `http`- oder `mcp_tool`-Hook blockiert den Tool-Aufruf nicht. Der Aufruf wird durch den normalen [Berechtigungsfluss](/docs/de/permissions) fortgesetzt, verlassen Sie sich also nicht auf einen steckengebliebenen Hook, um als Gate zu fungieren. Um den Aufruf zu blockieren, wenn ein `command`- oder `http`-Hook in ein Timeout läuft, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).940* Ein abgelaufener `command`-, `http`- oder `mcp_tool`-Hook blockiert den Tool-Aufruf nicht, außer bei Hooks, [deren Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails). Der Aufruf wird durch den normalen [Berechtigungsfluss](/docs/de/permissions) fortgesetzt, verlassen Sie sich also nicht auf einen steckengebliebenen Hook, um als Gate zu fungieren. Um den Aufruf zu blockieren, wenn ein `command`- oder `http`-Hook in ein Timeout läuft, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

933* Ein [Agent SDK Callback Hook](/docs/de/agent-sdk/hooks), der sein Timeout überschreitet, [blockiert den Tool-Aufruf](#pretooluse).941* Ein [Agent SDK Callback Hook](/docs/de/agent-sdk/hooks), der sein Timeout überschreitet, [blockiert den Tool-Aufruf](#pretooluse).

934 942 

935<h4 id="hooks-that-start-a-background-process">943<h4 id="hooks-that-start-a-background-process">


959 Die Aktion blockieren, wenn ein Hook fehlschlägt967 Die Aktion blockieren, wenn ein Hook fehlschlägt

960</h4>968</h4>

961 969 

962Bei den meisten Events führt Claude Code die Aktion trotzdem aus, wenn ein Hook fehlschlägt oder in ein Timeout läuft, sodass ein Policy-Hook mit falschem Pfad oder einem abstürzenden Skript alles durchlässt. Um die Aktion stattdessen zu blockieren, setzen Sie `"onFailure": "block"` bei einem `command`- oder `http`-Hook. Der Standardwert ist `"continue"`. Erfordert Claude Code v2.1.295 oder später.970Bei den meisten Events führt Claude Code die Aktion trotzdem aus, wenn ein Hook fehlschlägt oder in ein Timeout läuft. Ein Policy-Hook mit falschem Pfad oder einem abstürzenden Skript lässt dann alles durch. Um die Aktion stattdessen zu blockieren, setzen Sie `"onFailure": "block"` bei einem `command`- oder `http`-Hook. Erfordert Claude Code v2.1.295 oder später.

971 

972<Note>

973 Unter Windows ohne Git Bash kann ein `PreToolUse`- oder `PermissionRequest`-Command-Hook in Shell-Form, der ohne gesetztes `onFailure` fehlschlägt, stattdessen [den Tool-Aufruf blockieren](#failed-hooks-on-windows-without-git-bash).

974</Note>

963 975 

964Dieser `PreToolUse`-Hook in `.claude/settings.json` führt vor jedem Bash-Befehl ein Projektskript aus und blockiert den Befehl, wenn das Skript fehlschlägt:976Dieser `PreToolUse`-Hook in `.claude/settings.json` führt vor jedem Bash-Befehl ein Projektskript aus und blockiert den Befehl, wenn das Skript fehlschlägt:

965 977 


1007* **`Stop`-, `SubagentStop`-, `TaskCompleted`- und `TeammateIdle`-Hooks**: Exit-Code 2 schickt Claude bei diesen Events zurück an die Arbeit, und Claude kann einen Hook, der nicht läuft, nicht reparieren1019* **`Stop`-, `SubagentStop`-, `TaskCompleted`- und `TeammateIdle`-Hooks**: Exit-Code 2 schickt Claude bei diesen Events zurück an die Arbeit, und Claude kann einen Hook, der nicht läuft, nicht reparieren

1008* **Hintergrund-Command-Hooks**: Command Hooks, die [`async` oder `asyncRewake`](#run-hooks-in-the-background) setzen1020* **Hintergrund-Command-Hooks**: Command Hooks, die [`async` oder `asyncRewake`](#run-hooks-in-the-background) setzen

1009 1021 

1022<h4 id="failed-hooks-on-windows-without-git-bash">

1023 Fehlgeschlagene Hooks unter Windows ohne Git Bash

1024</h4>

1025 

1026Wenn der Fehler bei einem blockierten Tool-Aufruf diesen Text enthält, ist ein `PreToolUse`- oder `PermissionRequest`-Command-Hook fehlgeschlagen oder in ein Timeout gelaufen und hat den Aufruf blockiert:

1027 

1028```text theme={null}

1029blocking because Git Bash wasn't found and this hook doesn't set "shell" to "powershell", so only exit code 0 or 2 counts as its verdict.

1030```

1031 

1032Ein Hook in Shell-Form ohne gesetztes `shell` wird in PowerShell ausgeführt, wenn Git Bash nicht installiert ist, und ein für Bash geschriebenes Skript läuft dort möglicherweise nicht unverändert. Wählen Sie die Lösung, die zu Ihrem Hook passt:

1033 

1034* **Der Hook ist für Bash geschrieben**: Installieren Sie [Git for Windows](https://git-scm.com/downloads/win) oder setzen Sie [`CLAUDE_CODE_GIT_BASH_PATH`](/docs/de/env-vars), wenn Git Bash an einem Ort installiert ist, an dem Claude Code es nicht findet, und starten Sie dann eine neue Sitzung

1035* **Der Hook führt eine einzelne `.exe` aus, keine `.cmd`- oder `.bat`-Datei**: Tragen Sie das Programm in `command` und seine Argumente in `args` ein, um die [Exec-Form](#exec-form-and-shell-form) zu verwenden, und fügen Sie [`"onFailure": "block"`](#block-the-action-when-a-hook-fails) hinzu. Claude Code startet das Programm dann ohne Shell. Ohne `"onFailure": "block"` kann der Aufruf fortgesetzt werden, wenn das Programm fehlschlägt, fehlt oder in ein Timeout läuft

1036* **Der Hook ist für PowerShell geschrieben**: Fügen Sie dem Hook `"shell": "powershell"` und [`"onFailure": "block"`](#block-the-action-when-a-hook-fails) hinzu. Ohne `"onFailure": "block"` kann der Aufruf fortgesetzt werden, wenn der Hook weiterhin fehlschlägt oder in ein Timeout läuft. Um herauszufinden, warum der Hook fehlgeschlagen ist, prüfen Sie das [Debug-Log](#debug-hooks)

1037* **Die Aktion soll fortgesetzt werden, wenn der Hook fehlschlägt**: Fügen Sie dem Hook `"onFailure": "continue"` hinzu

1038 

1039Bei einem Hook, der diesen Fehler anzeigt, zählt jeder Exit-Code außer 0 oder 2 als [Fehlschlag](#block-the-action-when-a-hook-fails), auch wenn der Hook JSON ausgibt, das den Aufruf nicht verweigert.

1040 

1010<h4 id="exit-code-2-behavior-per-event">1041<h4 id="exit-code-2-behavior-per-event">

1011 Exit-Code-2-Verhalten pro Event1042 Exit-Code-2-Verhalten pro Event

1012</h4>1043</h4>


1060* **2xx mit leerem Body**: Erfolg, äquivalent zu Exit-Code 0 ohne Ausgabe1091* **2xx mit leerem Body**: Erfolg, äquivalent zu Exit-Code 0 ohne Ausgabe

1061* **2xx mit JSON-Objekt-Body**: geparst mit dem gleichen [JSON-Ausgabe](#json-output)-Schema wie Command Hooks. Ein Body, der die Schema-Validierung nicht besteht, ist ein nicht blockierender Fehler1092* **2xx mit JSON-Objekt-Body**: geparst mit dem gleichen [JSON-Ausgabe](#json-output)-Schema wie Command Hooks. Ein Body, der die Schema-Validierung nicht besteht, ist ein nicht blockierender Fehler

1062* **2xx mit jedem anderen Body, wie einfacher Text**: nicht blockierender Fehler, behandelt wie ein Nicht-2xx-Status. Claude Code fügt den Text nicht zu Claudes Kontext hinzu1093* **2xx mit jedem anderen Body, wie einfacher Text**: nicht blockierender Fehler, behandelt wie ein Nicht-2xx-Status. Claude Code fügt den Text nicht zu Claudes Kontext hinzu

1063* **Nicht-2xx-Status**: nicht blockierender Fehler, Ausführung wird fortgesetzt1094* **Nicht-2xx-Status**: nicht blockierender Fehler

1064* **Verbindungsfehler**: nicht blockierender Fehler, Ausführung wird fortgesetzt1095* **Verbindungsfehler**: nicht blockierender Fehler

1065* **Timeout**: der Hook wird abgebrochen, wie unter [Timeouts](#timeouts) beschrieben1096* **Timeout**: der Hook wird abgebrochen, wie unter [Timeouts](#timeouts) beschrieben

1066 1097 

1067HTTP Hooks können einen blockierenden Fehler nicht allein über den Statuscode signalisieren: Ein Nicht-2xx-Status oder eine fehlgeschlagene Verbindung ist ein [nicht blockierender Fehler](#exit-code-output). Um einen Tool-Aufruf zu blockieren oder eine Berechtigung zu verweigern, geben Sie eine 2xx-Response mit einem JSON-Body zurück, der die entsprechenden Entscheidungsfelder enthält. Um die Aktion zu blockieren, wenn die Anfrage fehlschlägt oder einen Nicht-2xx-Status zurückgibt, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).1098Nach einem [nicht blockierenden Fehler](#exit-code-output) wird die Aktion fortgesetzt, sofern es sich nicht um einen Hook handelt, [dessen Fehlschlag die Aktion blockiert](#block-the-action-when-a-hook-fails). Um einen Tool-Aufruf zu blockieren oder eine Berechtigung zu verweigern, geben Sie eine 2xx-Antwort mit einem JSON-Body zurück, der die entsprechenden [Entscheidungsfelder](#decision-control) enthält. Um die Aktion zu blockieren, wenn die Anfrage fehlschlägt oder einen Nicht-2xx-Status zurückgibt, setzen Sie [`onFailure: "block"`](#block-the-action-when-a-hook-fails).

1068 1099 

1069<h3 id="json-output">1100<h3 id="json-output">

1070 JSON-Ausgabe1101 JSON-Ausgabe


1573}1604}

1574```1605```

1575 1606 

1607Wenn der Prompt ein [Skill](/docs/de/skills) oder ein benutzerdefinierter Befehl ist, den Sie eingegeben haben, etwa `/deploy staging`, erhält der Hook diese Zeile so, wie Sie sie eingegeben haben, und nicht den erweiterten Skill-Inhalt. Wenn der Hook den Prompt blockiert, wird der Befehl nicht ausgeführt, sodass auch Shell-Befehle, die der Skill [mit `` !`<command>` `` einfügt](/docs/de/skills#inject-dynamic-context), nicht ausgeführt werden. Um stattdessen auf den Namen oder die Argumente des Befehls abzugleichen, verwenden Sie [UserPromptExpansion](#userpromptexpansion).

1608 

1576<h4 id="userpromptsubmit-decision-control">1609<h4 id="userpromptsubmit-decision-control">

1577 UserPromptSubmit-Entscheidungssteuerung1610 UserPromptSubmit-Entscheidungssteuerung

1578</h4>1611</h4>


2076 2109 

2077| Feld | Beschreibung |2110| Feld | Beschreibung |

2078| :- | :- |2111| :- | :- |

2079| `permissionDecision` | `"allow"` überspringt die Berechtigungsabfrage, außer bei den [Aktionen, die kein Modus automatisch genehmigt](/docs/de/permission-modes#actions-no-mode-auto-approves), bei [Lesezugriffen auf Netzwerkpfade](/docs/de/permissions#network-paths) sowie bei `AskUserQuestion` und `ExitPlanMode`, die [zusätzlich `updatedInput` benötigen](#allow-with-updatedinput). `"deny"` verhindert den Tool-Aufruf. `"ask"` bittet den Benutzer um Bestätigung. `"defer"` beendet den Lauf geordnet, damit das Tool später fortgesetzt werden kann. [deny- und ask-Regeln](/docs/de/permissions#manage-permissions) werden unabhängig davon ausgewertet, was der Hook zurückgibt |2112| `permissionDecision` | `"allow"` überspringt die Berechtigungsabfrage, außer bei [Aktionen, die kein Modus automatisch genehmigt](/docs/de/permission-modes#actions-no-mode-auto-approves), und bei [Lesezugriffen auf Netzwerkpfade](/docs/de/permissions#network-paths). `AskUserQuestion` und `ExitPlanMode` benötigen [`updatedInput` zusammen mit `"allow"`](#allow-with-updatedinput). Für den Plan-Modus siehe [Hook-Genehmigungen im Plan-Modus](/docs/de/permissions#hook-approvals-in-plan-mode). `"deny"` verhindert den Tool-Aufruf. `"ask"` fordert den Benutzer zur Bestätigung auf. `"defer"` beendet sich ordnungsgemäß, sodass das Tool später fortgesetzt werden kann. [deny- und ask-Regeln](/docs/de/permissions#manage-permissions) werden unabhängig davon ausgewertet, was der Hook zurückgibt |

2080| `permissionDecisionReason` | Bei `"ask"` wird es dem Benutzer in der Berechtigungsabfrage angezeigt. Wenn Claude Code in einem `-p`-Lauf, in dem niemand die Abfrage beantworten kann, [den Aufruf ablehnt](/docs/de/headless#turn-off-permission-prompts-in-unattended-runs), liest Claude den Grund stattdessen im Tool-Ergebnis. Bei `"deny"` wird es Claude angezeigt. Bei `"allow"` und `"defer"` wird es nur in das [Debug-Log](#debug-hooks) geschrieben |2113| `permissionDecisionReason` | Bei `"ask"` wird es dem Benutzer in der Berechtigungsabfrage angezeigt. Wenn Claude Code in einem `-p`-Lauf, in dem niemand die Abfrage beantworten kann, [den Aufruf ablehnt](/docs/de/headless#turn-off-permission-prompts-in-unattended-runs), liest Claude den Grund stattdessen im Tool-Ergebnis. Bei `"deny"` wird es Claude angezeigt. Bei `"allow"` und `"defer"` wird es nur in das [Debug-Log](#debug-hooks) geschrieben |

2081| `updatedInput` | Ändert die Eingabeparameter des Tools vor der Ausführung. Ersetzt das gesamte Eingabeobjekt, fügen Sie daher unveränderte Felder zusammen mit den geänderten ein. Claude Code wertet Berechtigungsregeln und die [Eignung eines Bash-Befehls für den automatischen Wechsel in den Hintergrund](/docs/de/tools-reference#foreground-commands-that-move-to-the-background) anhand der Eingabe aus, die Ihr Hook zurückgibt, nicht anhand der Eingabe, die Claude gesendet hat. Kombinieren Sie es mit `"allow"` für eine automatische Genehmigung oder mit `"ask"`, um dem Benutzer die geänderte Eingabe anzuzeigen. Bei `"defer"` wird es ignoriert |2114| `updatedInput` | Ändert die Eingabeparameter des Tools vor der Ausführung. Ersetzt das gesamte Eingabeobjekt, fügen Sie daher unveränderte Felder zusammen mit den geänderten ein. Claude Code wertet Berechtigungsregeln und die [Eignung eines Bash-Befehls für den automatischen Wechsel in den Hintergrund](/docs/de/tools-reference#foreground-commands-that-move-to-the-background) anhand der Eingabe aus, die Ihr Hook zurückgibt, nicht anhand der Eingabe, die Claude gesendet hat. Kombinieren Sie es mit `"allow"` für eine automatische Genehmigung oder mit `"ask"`, um dem Benutzer die geänderte Eingabe anzuzeigen. Bei `"defer"` wird es ignoriert |

2082| `additionalContext` | String, der zusammen mit dem Tool-Ergebnis zum Kontext von Claude hinzugefügt wird. Wird ignoriert, wenn `permissionDecision` den Wert `"defer"` hat. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |2115| `additionalContext` | String, der zusammen mit dem Tool-Ergebnis zum Kontext von Claude hinzugefügt wird. Wird ignoriert, wenn `permissionDecision` den Wert `"defer"` hat. Siehe [Kontext für Claude hinzufügen](#add-context-for-claude) |


3718 3751 

3719Claude Code zeigt dem Benutzer jede `systemMessage`, die Ihr Hook zurückgibt, unabhängig von der Entscheidung an. Ein Hook, der Kosten meldet, kann also `{"systemMessage": "..."}` zurückgeben und mit 0 beendet werden.3752Claude Code zeigt dem Benutzer jede `systemMessage`, die Ihr Hook zurückgibt, unabhängig von der Entscheidung an. Ein Hook, der Kosten meldet, kann also `{"systemMessage": "..."}` zurückgeben und mit 0 beendet werden.

3720 3753 

3721Ein PreModelSwitch-Hook, der nicht vor Ablauf seines Timeouts antwortet, blockiert den Wechsel. Was ein Timeout bei anderen Ereignissen bewirkt, lesen Sie unter [Timeouts](#timeouts). Der Standard-Timeout für dieses Ereignis beträgt 30 Sekunden. `PreModelSwitch` führt nur `command`-, `http`- und `mcp_tool`-Hooks aus, daher gelten die Standardwerte für `prompt` und `agent` nicht.3754<h4 id="premodelswitch-timeouts-and-other-exit-codes">

3755 PreModelSwitch-Timeouts und andere Exit-Codes

3756</h4>

3757 

3758Ein PreModelSwitch-Hook, der nicht vor Ablauf seines Timeouts antwortet, blockiert den Wechsel. Der Standard-Timeout für dieses Ereignis beträgt 30 Sekunden.

3722 3759 

3723Ein Hook, der mit einem anderen Code als 0 oder 2 beendet wird und keine JSON-Entscheidung ausgibt, ist ein nicht blockierender Fehler, wie unter [Andere Exit-Codes](#other-exit-codes) beschrieben.3760Was ein anderer Exit-Code als 0 oder 2 bewirkt, erfahren Sie unter [Andere Exit-Codes](#other-exit-codes).

3724 3761 

3725<h3 id="postmodelswitch">3762<h3 id="postmodelswitch">

3726 PostModelSwitch3763 PostModelSwitch

hooks-guide.md +21 −8

Details

633 * Für einen `PreToolUse`-Hook genehmigt dies nicht den Tool-Aufruf: der normale [Berechtigungsfluss](/docs/de/permissions) gilt weiterhin.633 * Für einen `PreToolUse`-Hook genehmigt dies nicht den Tool-Aufruf: der normale [Berechtigungsfluss](/docs/de/permissions) gilt weiterhin.

634 * Für `UserPromptSubmit`-, `UserPromptExpansion`-, `SessionStart`- und `PostModelSwitch`-Hooks fügt Claude Code stdout, das es [als Klartext behandelt](/docs/de/hooks#exit-code-0), zu Claudes Kontext hinzu.634 * Für `UserPromptSubmit`-, `UserPromptExpansion`-, `SessionStart`- und `PostModelSwitch`-Hooks fügt Claude Code stdout, das es [als Klartext behandelt](/docs/de/hooks#exit-code-0), zu Claudes Kontext hinzu.

635* **Exit 2**: Claude Code blockiert die Aktion. Schreiben Sie einen Grund auf stderr. Wo er landet, hängt vom Event ab: Einige Events geben ihn an Claude als Feedback, damit es sich anpassen kann, andere zeigen ihn dem Benutzer, und einige, wie `ConfigChange` und `Elicitation`, zeigen keine Meldung. Einige Events können nicht blockiert werden: Für `SessionStart` und andere zeigt exit 2 stderr dem Benutzer an und die Ausführung wird fortgesetzt. Siehe [Exit-Code-2-Verhalten pro Event](/docs/de/hooks#exit-code-2-behavior-per-event) für die vollständige Liste.635* **Exit 2**: Claude Code blockiert die Aktion. Schreiben Sie einen Grund auf stderr. Wo er landet, hängt vom Event ab: Einige Events geben ihn an Claude als Feedback, damit es sich anpassen kann, andere zeigen ihn dem Benutzer, und einige, wie `ConfigChange` und `Elicitation`, zeigen keine Meldung. Einige Events können nicht blockiert werden: Für `SessionStart` und andere zeigt exit 2 stderr dem Benutzer an und die Ausführung wird fortgesetzt. Siehe [Exit-Code-2-Verhalten pro Event](/docs/de/hooks#exit-code-2-behavior-per-event) für die vollständige Liste.

636* **Jeder andere Exit-Code**: Für die meisten Events hängt das Ergebnis davon ab, was Ihr Hook auf stdout gedruckt hat:636* **Jeder andere Exit-Code**: Für die meisten Events wird die Aktion als [nicht blockierender Fehler](/docs/de/hooks#exit-code-output) fortgesetzt, es sei denn, es handelt sich um einen Hook, [dessen Fehlschlagen die Aktion blockiert](/docs/de/hooks#block-the-action-when-a-hook-fails), oder seine JSON-Ausgabe besteht die Validierung:

637 * Ein gepartes Objekt, das die Schema-Validierung besteht: Claude Code ignoriert den Exit-Code, nur das JSON entscheidet das Ergebnis, und der Hook wird nicht als Fehler gemeldet. Die Pro-Event-Ausnahmen, wie `WorktreeCreate`, das bei jedem Nonzero-Exit fehlschlägt, sind im Abschnitt [Exit-Code-Ausgabe](/docs/de/hooks#exit-code-output) der Referenz aufgelistet.637 * Ein geparstes Objekt, das die Schemavalidierung besteht: Claude Code ignoriert den Exit-Code, nur das JSON entscheidet das Ergebnis, und der Hook wird nicht als Fehler gemeldet. Die Pro-Event-Ausnahmen, wie `WorktreeCreate`, das bei jedem Exit-Code ungleich null fehlschlägt, sind im Abschnitt [Exit-Code-Ausgabe](/docs/de/hooks#exit-code-output) der Referenz aufgelistet.

638 * Ein gepartes Objekt, das die Schema-Validierung nicht besteht, oder stdout, das Claude Code [zu parsen versucht als JSON](/docs/de/hooks#exit-code-0), aber das kein gültiges JSON ist: ein nicht blockierender Fehler; die Meldung enthält die Validierungs- oder Parse-Meldung.638 * Ein geparstes Objekt, das die Schemavalidierung nicht besteht, oder stdout, das Claude Code [als JSON zu parsen versucht](/docs/de/hooks#exit-code-0), das aber kein gültiges JSON ist: ein nicht blockierender Fehler; die Meldung enthält die Validierungs- oder Parse-Meldung.

639 * Stdout, das Claude Code [als Klartext behandelt](/docs/de/hooks#exit-code-0), oder leeres stdout: die Aktion wird als nicht blockierender Fehler fortgesetzt. Das Transkript zeigt eine `<hook name> hook error`-Meldung, dann die erste Zeile von stderr mit dem Präfix `Failed with non-blocking status code:`. Um das vollständige stderr zu erfassen, aktivieren Sie [Debug-Protokollierung](/docs/de/hooks#debug-hooks) mit `claude --debug` oder durch Ausführung von `/debug` während der Sitzung.639 * Stdout, das Claude Code [als Klartext behandelt](/docs/de/hooks#exit-code-0), oder leeres stdout: die Aktion wird als nicht blockierender Fehler fortgesetzt. Das Transkript zeigt eine `<hook name> hook error`-Meldung, dann die erste Zeile von stderr mit dem Präfix `Failed with non-blocking status code:`. Um das vollständige stderr zu erfassen, aktivieren Sie [Debug-Logging](/docs/de/hooks#debug-hooks) mit `claude --debug` oder durch Ausführung von `/debug` während der Sitzung.

640 640 

641<h4 id="structured-json-output">641<h4 id="structured-json-output">

642 Strukturierte JSON-Ausgabe642 Strukturierte JSON-Ausgabe


664 664 

665Bei `PreToolUse` behandelt Claude Code jeden `permissionDecision`-Wert wie folgt:665Bei `PreToolUse` behandelt Claude Code jeden `permissionDecision`-Wert wie folgt:

666 666 

667* `"allow"`: die interaktive Berechtigungsabfrage überspringen. Deny- und Ask-Regeln, einschließlich unternehmensweit verwalteter Deny-Listen, gelten weiterhin, ebenso wie Abfragen für Lesezugriffe auf [Netzwerkpfade](/docs/de/permissions#network-paths), für MCP-Tools, die mit [`requiresUserInteraction`](/docs/de/mcp#require-approval-for-a-specific-tool) gekennzeichnet sind, und für Konnektor-Tools, [die Ihre Organisation auf `ask` gesetzt hat](/docs/de/mcp#organization-controls-on-connector-tools), in Sitzungen, in denen diese Einstellung Claude Code erreicht667* `"allow"`: die interaktive Berechtigungsabfrage überspringen. Deny- und Ask-Regeln, einschließlich unternehmensweit verwalteter Deny-Listen, gelten weiterhin, ebenso wie Abfragen für:

668 

669 * Lesezugriffe auf [Netzwerkpfade](/docs/de/permissions#network-paths)

670 * MCP-Tools, die mit [`requiresUserInteraction`](/docs/de/mcp#require-approval-for-a-specific-tool) gekennzeichnet sind

671 * Konnektor-Tools, [die Ihre Organisation auf `ask` gesetzt hat](/docs/de/mcp#organization-controls-on-connector-tools), in Sitzungen, in denen diese Einstellung Claude Code erreicht

672 

673 Was `"allow"` im Plan-Modus bewirkt, erfahren Sie unter [Hook-Genehmigungen im Plan-Modus](/docs/de/permissions#hook-approvals-in-plan-mode).

668* `"deny"`: Tool-Aufruf abbrechen und den Grund an Claude senden674* `"deny"`: Tool-Aufruf abbrechen und den Grund an Claude senden

669* `"ask"`: Berechtigungsaufforderung dem Benutzer wie gewohnt anzeigen675* `"ask"`: Berechtigungsaufforderung dem Benutzer wie gewohnt anzeigen

670 676 


1006 * [`SessionEnd`](/docs/de/hooks#sessionend)-Hooks aller Typen teilen sich ein Budget von 1,5 Sekunden. Wenn Ihre Einstellungen ein längeres `timeout` pro Hook setzen, erhöht Claude Code das Budget entsprechend, bis zu 60 Sekunden.1012 * [`SessionEnd`](/docs/de/hooks#sessionend)-Hooks aller Typen teilen sich ein Budget von 1,5 Sekunden. Wenn Ihre Einstellungen ein längeres `timeout` pro Hook setzen, erhöht Claude Code das Budget entsprechend, bis zu 60 Sekunden.

1007* `PostToolUse`-Hooks können Aktionen nicht rückgängig machen, da das Tool bereits ausgeführt wurde.1013* `PostToolUse`-Hooks können Aktionen nicht rückgängig machen, da das Tool bereits ausgeführt wurde.

1008* [`PermissionRequest`](/docs/de/hooks#permissionrequest)-Hooks werden ausgelöst, wenn Claude Code Sie um Erlaubnis fragen möchte oder wenn es einen Aufruf, für den keine Abfrage angezeigt werden kann, andernfalls automatisch ablehnen würde. Im [nicht interaktiven Modus](/docs/de/headless) mit dem Flag `-p` werden sie außerhalb des [`dontAsk`-Modus](/docs/de/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) weiterhin ausgeführt, und ein Aufruf, über den kein Hook entscheidet und den nichts anderes beantworten kann, wird abgelehnt.1014* [`PermissionRequest`](/docs/de/hooks#permissionrequest)-Hooks werden ausgelöst, wenn Claude Code Sie um Erlaubnis fragen möchte oder wenn es einen Aufruf, für den keine Abfrage angezeigt werden kann, andernfalls automatisch ablehnen würde. Im [nicht interaktiven Modus](/docs/de/headless) mit dem Flag `-p` werden sie außerhalb des [`dontAsk`-Modus](/docs/de/permission-modes#allow-only-pre-approved-tools-with-dontask-mode) weiterhin ausgeführt, und ein Aufruf, über den kein Hook entscheidet und den nichts anderes beantworten kann, wird abgelehnt.

1009* `Stop`-Hooks werden ausgelöst, wenn Claude die Antwort beendet, nicht nur bei Aufgabenvollendung. Sie werden nicht bei Benutzerunterbrechungen ausgelöst. API-Fehler lösen stattdessen [`StopFailure`](/docs/de/hooks#stopfailure) aus.1015* `Stop`-Hooks werden ausgelöst, wenn Claude die Antwort beendet, nicht nur bei Aufgabenvollendung. Sie werden nicht bei Benutzerunterbrechungen ausgelöst. API-Fehler lösen stattdessen [StopFailure](/docs/de/hooks#stopfailure) aus.

1010* Wenn mehrere `PreToolUse`-Hooks [`updatedInput`](/docs/de/hooks#pretooluse) zurückgeben, um die Argumente eines Tools umzuschreiben, hat der zuletzt fertiggestellte Effekt. Da Hooks parallel ausgeführt werden, ist die Reihenfolge nicht deterministisch. Vermeiden Sie, dass mehr als ein Hook die Eingabe desselben Tools ändert.1016* Wenn mehrere `PreToolUse`-Hooks [`updatedInput`](/docs/de/hooks#pretooluse) zurückgeben, um die Argumente eines Tools umzuschreiben, hat der zuletzt fertiggestellte Effekt. Da Hooks parallel ausgeführt werden, ist die Reihenfolge nicht deterministisch. Vermeiden Sie, dass mehr als ein Hook die Eingabe desselben Tools ändert.

1011 1017 

1012<h3 id="hooks-and-permission-modes">1018<h3 id="hooks-and-permission-modes">


1015 1021 

1016`PreToolUse`-Hooks werden vor jeder Genehmigungsmodus-Prüfung in jedem [Genehmigungsmodus](/docs/de/permission-modes) ausgelöst, einschließlich `dontAsk`. Ein Hook, der `permissionDecision: "deny"` zurückgibt, blockiert das Tool auch im `bypassPermissions`-Modus oder mit `--dangerously-skip-permissions`. Dies ermöglicht es Ihnen, eine Richtlinie durchzusetzen, die Benutzer nicht umgehen können, indem sie ihren Genehmigungsmodus ändern.1022`PreToolUse`-Hooks werden vor jeder Genehmigungsmodus-Prüfung in jedem [Genehmigungsmodus](/docs/de/permission-modes) ausgelöst, einschließlich `dontAsk`. Ein Hook, der `permissionDecision: "deny"` zurückgibt, blockiert das Tool auch im `bypassPermissions`-Modus oder mit `--dangerously-skip-permissions`. Dies ermöglicht es Ihnen, eine Richtlinie durchzusetzen, die Benutzer nicht umgehen können, indem sie ihren Genehmigungsmodus ändern.

1017 1023 

1018Das Gegenteil ist nicht wahr: Ein Hook, der `"allow"` zurückgibt, umgeht nicht die deny-Regeln aus den Einstellungen, und er kann die Berechtigungsabfrage für Lesezugriffe auf [Netzwerkpfade](/docs/de/permissions#network-paths), für MCP-Tools, die als [`requiresUserInteraction`](/docs/de/mcp#require-approval-for-a-specific-tool) gekennzeichnet sind, oder für Konnektor-Tools, die [Ihre Organisation auf `ask`](/docs/de/mcp#organization-controls-on-connector-tools) gesetzt hat, nicht unterdrücken, in Sitzungen, in denen diese Einstellung Claude Code erreicht. Hooks in Einstellungsdateien und in der `hooks/hooks.json` eines Plugins können Einschränkungen verschärfen, aber nicht über das hinaus lockern, was Berechtigungsregeln zulassen.1024Das Gegenteil ist nicht wahr: Hooks in Einstellungsdateien und in der `hooks/hooks.json` eines Plugins können Einschränkungen verschärfen, aber nicht über das hinaus lockern, was Berechtigungsregeln zulassen. Ein Hook, der `"allow"` zurückgibt, umgeht nicht die deny-Regeln aus den Einstellungen, und er kann die Berechtigungsabfrage nicht unterdrücken für:

1025 

1026* Lesezugriffe auf [Netzwerkpfade](/docs/de/permissions#network-paths)

1027* MCP-Tools, die als [`requiresUserInteraction`](/docs/de/mcp#require-approval-for-a-specific-tool) gekennzeichnet sind

1028* Konnektor-Tools, die [Ihre Organisation auf `ask`](/docs/de/mcp#organization-controls-on-connector-tools) gesetzt hat, in Sitzungen, in denen diese Einstellung Claude Code erreicht

1029 

1030Wenn Ihr `PreToolUse`-Hook im [Plan-Modus](/docs/de/permissions#hook-approvals-in-plan-mode) für eine Dateibearbeitung `"allow"` zurückgibt, erhalten Sie dieselbe Abfrage, Blockierung oder Genehmigung, die die Bearbeitung ohne Hook erhalten würde. Um diese Beschränkung für Hook-Genehmigungen aufzuheben, [genehmigen Sie den Plan](/docs/de/permission-modes#review-and-approve-a-plan) oder wechseln Sie in einen anderen Berechtigungsmodus.

1019 1031 

1020Ein [Mod](/docs/de/plugins/mods/overview), den Sie installieren und der `tool.check` verarbeitet, kann einen Aufruf genehmigen, den Ihr `PreToolUse`-Hook blockiert hat, es sei denn, der Hook befindet sich in verwalteten Einstellungen. [Erweitern Sie Berechtigungen mit Hooks](/docs/de/permissions#extend-permissions-with-hooks) listet auf, welche Regeln über einen Mod gelten.1032Ein [Mod](/docs/de/plugins/mods/overview), den Sie installieren und der `tool.check` verarbeitet, kann einen Aufruf genehmigen, den Ihr `PreToolUse`-Hook blockiert hat, es sei denn, der Hook befindet sich in verwalteten Einstellungen. Im Plan-Modus kann der Mod einen solchen Aufruf genehmigen, wenn er nur lesend ist, nicht jedoch eine Dateibearbeitung oder einen anderen Aufruf, der nicht nur lesend ist. [Erweitern Sie Berechtigungen mit Hooks](/docs/de/permissions#extend-permissions-with-hooks) listet auf, welche Regeln über einen Mod gelten.

1021 1033 

1022<h3 id="hook-not-firing">1034<h3 id="hook-not-firing">

1023 Hook wird nicht ausgelöst1035 Hook wird nicht ausgelöst


1042 ```1054 ```

1043* Wenn Sie „command not found“ sehen, verwenden Sie absolute Pfade oder `${CLAUDE_PROJECT_DIR}`, um auf Skripte zu verweisen. Um Shell-Quoting ganz zu vermeiden, fügen Sie `"args": []` hinzu, um zur [Exec-Form](/docs/de/hooks#exec-form-and-shell-form) zu wechseln, die das Skript direkt ohne Shell spawnt1055* Wenn Sie „command not found“ sehen, verwenden Sie absolute Pfade oder `${CLAUDE_PROJECT_DIR}`, um auf Skripte zu verweisen. Um Shell-Quoting ganz zu vermeiden, fügen Sie `"args": []` hinzu, um zur [Exec-Form](/docs/de/hooks#exec-form-and-shell-form) zu wechseln, die das Skript direkt ohne Shell spawnt

1044* Wenn Sie „jq: command not found“ sehen, installieren Sie `jq` oder verwenden Sie Python/Node.js für JSON-Parsing1056* Wenn Sie „jq: command not found“ sehen, installieren Sie `jq` oder verwenden Sie Python/Node.js für JSON-Parsing

1057* Wenn die Meldung `blocking because Git Bash wasn't found` enthält, arbeiten Sie unter Windows, Claude Code hat Git Bash nicht gefunden, und der fehlgeschlagene oder abgelaufene Hook hat den Tool-Aufruf blockiert. Siehe [Failed hooks on Windows without Git Bash](/docs/de/hooks#failed-hooks-on-windows-without-git-bash) für die Lösungen

1045* Wenn die Benachrichtigung eine JSON-Validierungsmeldung anzeigt, wurde die stdout Ihres Hooks als JSON geparst, aber die Schema-Validierung ist fehlgeschlagen. Wenn sie eine JSON-Parse-Meldung anzeigt, sah die stdout wie ein JSON-Objekt aus, war aber kein gültiges JSON. Beides passiert auch bei Exit 0.1058* Wenn die Benachrichtigung eine JSON-Validierungsmeldung anzeigt, wurde die stdout Ihres Hooks als JSON geparst, aber die Schema-Validierung ist fehlgeschlagen. Wenn sie eine JSON-Parse-Meldung anzeigt, sah die stdout wie ein JSON-Objekt aus, war aber kein gültiges JSON. Beides passiert auch bei Exit 0.

1046 1059 

1047 Um einen Parse-Fehler zu beheben, erstellen Sie die Payload mit einem JSON-Encoder wie `jq` statt String-Verkettung, damit Anführungszeichen und Backslashes in Werten escaped werden. Der Abschnitt [Exit code output](/docs/de/hooks#exit-code-output) der Referenz behandelt die Exit-Code- und JSON-Kombinationen1060 Um einen Parse-Fehler zu beheben, erstellen Sie die Payload mit einem JSON-Encoder wie `jq` statt String-Verkettung, damit Anführungszeichen und Backslashes in Werten escaped werden. Der Abschnitt [Exit code output](/docs/de/hooks#exit-code-output) der Referenz behandelt die Exit-Code- und JSON-Kombinationen

Details

1091* `event.sequence`: Pro-Prozess-Zähler zum Ordnen von Ereignissen, beschrieben unter [Ereigniskorrelationsattribute](#event-correlation-attributes)1091* `event.sequence`: Pro-Prozess-Zähler zum Ordnen von Ereignissen, beschrieben unter [Ereigniskorrelationsattribute](#event-correlation-attributes)

1092* `from_mode`: Der vorherige Berechtigungsmodus, z. B. `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` oder `"bypassPermissions"`1092* `from_mode`: Der vorherige Berechtigungsmodus, z. B. `"default"`, `"plan"`, `"acceptEdits"`, `"auto"` oder `"bypassPermissions"`

1093* `to_mode`: Der neue Berechtigungsmodus1093* `to_mode`: Der neue Berechtigungsmodus

1094* `trigger`: Was die Änderung verursacht hat. Einer von `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` oder `"auto_opt_in"`. Nicht vorhanden, wenn der Übergang vom SDK oder Bridge stammt1094* `trigger`: Was die Änderung verursacht hat. Einer von `"shift_tab"`, `"exit_plan_mode"`, `"auto_gate_denied"` oder `"auto_opt_in"`. Bei manchen Änderungen nicht vorhanden, etwa wenn das SDK den Berechtigungsmodus über [`setPermissionMode()`](/docs/de/agent-sdk/typescript#query-object) setzt

1095 1095 

1096<h4 id="auth-event">1096<h4 id="auth-event">

1097 Auth-Ereignis1097 Auth-Ereignis

Details

203 Streaming-Idle-Watchdogs203 Streaming-Idle-Watchdogs

204</h2>204</h2>

205 205 

206Claude Code führt vier unabhängige Timer aus, die eine Streaming-Modellantwort abbrechen, wenn sie stille wird, sodass eine unterbrochene Verbindung fehlschlägt und erneut versucht wird, anstatt zu hängen. Die First-Byte-Frist deckt das Warten auf Antwortheader ab, bevor etwas von der Antwort angekommen ist. Jeder der anderen drei überwacht eine Live-Antwort auf ein anderes Signal.206Claude Code führt vier unabhängige Timer aus, die eine Streaming-Modellantwort abbrechen, wenn sie stille wird, sodass eine unterbrochene Verbindung fehlschlägt und erneut versucht wird, anstatt zu hängen. Eine Anfrage, die überhaupt keine Antwortheader erhält, endet auf eine von zwei Arten:

207 

208* **Wo die First-Byte-Frist läuft**: Der erste Versuch endet bei dieser Frist. Um sie zu ändern, setzen Sie `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS`. Zur Wartezeit des Wiederholungsversuchs siehe [Keine Antwort von API](/docs/de/errors#no-response-from-api).

209* **Bei den anderen Verbindungen**: Die Anfrage endet nach 5 bis 6 Minuten, wenn das Body-Idle-Timeout auslöst, es sei denn, Sie haben dieses Timeout ausgeschaltet. Um sie früher zu beenden, senken Sie `API_TIMEOUT_MS`.

207 210 

208| Timer | Bricht ab, wenn | Läuft auf | Standard-Timeout |211| Timer | Bricht ab, wenn | Läuft auf | Standard-Timeout |

209| :- | :- | :- | :- |212| :- | :- | :- | :- |

210| First-Byte-Frist | Keine Antwortheader kommen an, nachdem Claude Code die Anfrage sendet | Direkte Anthropic-API und [Claude Platform on AWS](/docs/de/claude-platform-on-aws), einschließlich durch einen HTTPS-Proxy, aber nicht, wenn `ANTHROPIC_BASE_URL` oder `ANTHROPIC_AWS_BASE_URL` sie durch ein [Gateway](/docs/de/gateways) leiten. Opt-in auf Amazon Bedrock mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; läuft nicht auf Google Cloud's Agent Platform oder Microsoft Foundry | 180 Sekunden auf der direkten Anthropic-API, 300 Sekunden anderswo, plus eine Sekunde pro 32 KB Anfragekörper |213| First-Byte-Frist | Keine Antwortheader kommen an, nachdem Claude Code die Anfrage sendet | Direkte Anthropic-API und [Claude Platform on AWS](/docs/de/claude-platform-on-aws), einschließlich durch einen HTTPS-Proxy, aber nicht, wenn `ANTHROPIC_BASE_URL` oder `ANTHROPIC_AWS_BASE_URL` sie durch ein [Gateway](/docs/de/gateways) leiten. Opt-in auf Amazon Bedrock mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; läuft nicht auf Google Cloud's Agent Platform oder Microsoft Foundry und nicht in einer [Claude-Apps-Gateway](/docs/de/claude-apps-gateway)-Sitzung | 180 Sekunden auf der direkten Anthropic-API, 300 Sekunden anderswo, plus eine Sekunde pro 32 KB Anfragekörper |

211| Event-Level-Watchdog | Keine Antwortereignisse werden analysiert. Bei Verbindungen, bei denen der Byte-Level-Watchdog läuft, setzen ankommende Bytes, einschließlich Keep-Alive-Pings, auch diesen Watchdog zurück, für bis zu etwa fünf Minuten ohne ein analysiertes Ereignis | Jeder Anbieter | 300 Sekunden |214| Event-Level-Watchdog | Keine Antwortereignisse werden analysiert. Bei Verbindungen, bei denen der Byte-Level-Watchdog läuft, setzen ankommende Bytes, einschließlich Keep-Alive-Pings, auch diesen Watchdog zurück, für bis zu etwa fünf Minuten ohne ein analysiertes Ereignis | Jeder Anbieter | 300 Sekunden |

212| Byte-Level-Watchdog | Keine Bytes kommen auf der Leitung an, einschließlich SSE-Keep-Alive-Pings | Direkte Anthropic-API, [Claude Platform on AWS](/docs/de/claude-platform-on-aws) und [Gateway](/docs/de/gateways)-Verbindungen, einschließlich einer benutzerdefinierten `ANTHROPIC_BASE_URL`. Opt-in auf Amazon Bedrock `vnd.amazon.eventstream`-Antworten mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; läuft nicht auf Google Cloud's Agent Platform oder Microsoft Foundry | 180 Sekunden auf der direkten Anthropic-API. 300 Sekunden auf Claude Platform on AWS, auf Amazon Bedrock, in einer [Claude-Apps-Gateway](/docs/de/claude-apps-gateway)-Sitzung und über eine benutzerdefinierte `ANTHROPIC_BASE_URL` |215| Byte-Level-Watchdog | Keine Bytes kommen auf der Leitung an, einschließlich SSE-Keep-Alive-Pings | Direkte Anthropic-API, [Claude Platform on AWS](/docs/de/claude-platform-on-aws) und [Gateway](/docs/de/gateways)-Verbindungen, einschließlich einer benutzerdefinierten `ANTHROPIC_BASE_URL`. Opt-in auf Amazon Bedrock `vnd.amazon.eventstream`-Antworten mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1`; läuft nicht auf Google Cloud's Agent Platform oder Microsoft Foundry | 180 Sekunden auf der direkten Anthropic-API. 300 Sekunden auf Claude Platform on AWS, auf Amazon Bedrock, in einer [Claude-Apps-Gateway](/docs/de/claude-apps-gateway)-Sitzung und über eine benutzerdefinierte `ANTHROPIC_BASE_URL` |

213| Body-Idle-Timeout | Keine Bytes kommen für 5 Minuten an | Anbieter außer der direkten Anthropic-API, Claude Platform on AWS und Amazon Bedrock mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` gesetzt, es sei denn, [`API_FORCE_IDLE_TIMEOUT`](/docs/de/env-vars) ändert das | 5 Minuten |216| Body-Idle-Timeout | Keine Bytes kommen für 5 Minuten an, einschließlich der Wartezeit auf Antwortheader | Anbieter außer der direkten Anthropic-API, Claude Platform on AWS und Amazon Bedrock mit `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` gesetzt, es sei denn, [`API_FORCE_IDLE_TIMEOUT`](/docs/de/env-vars) ändert das | 5 Minuten |

214 217 

215Wenn Sie `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` setzen, ersetzt der Byte-Level-Watchdog das Body-Idle-Timeout auf Bedrock, anstatt neben ihm zu laufen. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` regelt dann auch, wie lange ein Bedrock-Stream stille bleiben darf, bevor Claude Code die Verbindung als unterbrochen behandelt, innerhalb der unten aufgelisteten Grenzen. Ankommende Bytes setzen den Event-Level-Watchdog auf Bedrock immer noch nicht zurück. Mit Debug-Logging aktiviert, protokolliert dann jeder Bedrock-Stream eine Debug-Nachricht, die mit `wire-heartbeat: _chunkTimes absent` beginnt.218Wenn Sie `CLAUDE_ENABLE_BYTE_WATCHDOG_BEDROCK=1` setzen, ersetzt der Byte-Level-Watchdog das Body-Idle-Timeout auf Bedrock, anstatt neben ihm zu laufen. `CLAUDE_STREAM_IDLE_TIMEOUT_MS` regelt dann auch, wie lange ein Bedrock-Stream stille bleiben darf, bevor Claude Code die Verbindung als unterbrochen behandelt, innerhalb der unten aufgelisteten Grenzen. Ankommende Bytes setzen den Event-Level-Watchdog auf Bedrock immer noch nicht zurück. Mit Debug-Logging aktiviert, protokolliert dann jeder Bedrock-Stream eine Debug-Nachricht, die mit `wire-heartbeat: _chunkTimes absent` beginnt.

216 219 


220* `CLAUDE_STREAM_IDLE_TIMEOUT_MS` setzt das Timeout beider Watchdogs. Claude Code erhöht Werte unter 5 Minuten auf 5 Minuten und begrenzt den Wert auf 30 Minuten für den Byte-Level-Watchdog.223* `CLAUDE_STREAM_IDLE_TIMEOUT_MS` setzt das Timeout beider Watchdogs. Claude Code erhöht Werte unter 5 Minuten auf 5 Minuten und begrenzt den Wert auf 30 Minuten für den Byte-Level-Watchdog.

221* `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` setzt das Timeout des Byte-Level-Watchdogs, ohne das Timeout des Event-Level-Watchdogs zu ändern, begrenzt auf zwischen 10 Sekunden und 30 Minuten, und hat Vorrang vor `CLAUDE_STREAM_IDLE_TIMEOUT_MS` für diesen Watchdog.224* `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` setzt das Timeout des Byte-Level-Watchdogs, ohne das Timeout des Event-Level-Watchdogs zu ändern, begrenzt auf zwischen 10 Sekunden und 30 Minuten, und hat Vorrang vor `CLAUDE_STREAM_IDLE_TIMEOUT_MS` für diesen Watchdog.

222* `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` setzt die First-Byte-Frist direkt. Lassen Sie sie ungesetzt und Claude Code verwendet das Timeout des Byte-Level-Watchdogs, sodass `CLAUDE_STREAM_IDLE_TIMEOUT_MS` und `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` die Frist auch ändern. Für die Begrenzungen, die Upload-Zulage, die `API_TIMEOUT_MS`-Obergrenze und wie lange das Retry nach einem No-Response-Abbruch wartet, siehe [Keine Antwort von API](/docs/de/errors#no-response-from-api).225* `CLAUDE_STREAM_FIRST_BYTE_TIMEOUT_MS` setzt die First-Byte-Frist direkt. Lassen Sie sie ungesetzt und Claude Code verwendet das Timeout des Byte-Level-Watchdogs, sodass `CLAUDE_STREAM_IDLE_TIMEOUT_MS` und `CLAUDE_BYTE_STREAM_IDLE_TIMEOUT_MS` die Frist auch ändern. Für die Begrenzungen, die Upload-Zulage, die `API_TIMEOUT_MS`-Obergrenze und wie lange das Retry nach einem No-Response-Abbruch wartet, siehe [Keine Antwort von API](/docs/de/errors#no-response-from-api).

226* `API_TIMEOUT_MS` begrenzt das Warten auf Antwortheader. Wo die First-Byte-Frist nicht läuft, etwa in einer Claude-Apps-Gateway-Sitzung, setzen Sie den Wert unter `300000`, also 5 Minuten, um eine unbeantwortete Anfrage früher erneut zu versuchen. Halten Sie ihn über der längsten Wartezeit auf Header und der längsten [Nicht-Streaming-Anfrage](/docs/de/errors#streaming-response-ended-before-any-complete-data-was-received), die Sie erwarten: Eine Anfrage, die länger braucht, läuft bei jedem Wiederholungsversuch erneut in eine Zeitüberschreitung.

223* `API_FORCE_IDLE_TIMEOUT` auf `0` gesetzt schaltet das Body-Idle-Timeout aus, und auf `1` gesetzt schaltet es für jeden Anbieter ein. Die Watchdogs laufen unabhängig davon, sodass Sie, um einen Stream länger als ihre Schwellwerte pausieren zu lassen, auch diese erhöhen oder deaktivieren müssen.227* `API_FORCE_IDLE_TIMEOUT` auf `0` gesetzt schaltet das Body-Idle-Timeout aus, und auf `1` gesetzt schaltet es für jeden Anbieter ein. Die Watchdogs laufen unabhängig davon, sodass Sie, um einen Stream länger als ihre Schwellwerte pausieren zu lassen, auch diese erhöhen oder deaktivieren müssen.

224 228 

225Wenn ein Watchdog einen stagnierenden Stream abbricht, behandelt Claude Code den Abbruch als einen Mid-Stream-Fehler, und was Sie sehen, hängt davon ab, wie weit die Antwort gekommen war. Claude Code versucht die Anfrage erneut oder beendet den Turn mit einem Fehler, behält die abgeschlossene Ausgabe und zeigt eine [Mitteilung über unvollständige Antwort](/docs/de/errors#the-response-above-may-be-incomplete) an, oder beendet den Turn normal. [Automatische Wiederholungen](/docs/de/errors#automatic-retries) sagt, wo jedes Ergebnis zutrifft.229Wenn ein Watchdog einen stagnierenden Stream abbricht, behandelt Claude Code den Abbruch als einen Mid-Stream-Fehler, und was Sie sehen, hängt davon ab, wie weit die Antwort gekommen war. Claude Code versucht die Anfrage erneut oder beendet den Turn mit einem Fehler, behält die abgeschlossene Ausgabe und zeigt eine [Mitteilung über unvollständige Antwort](/docs/de/errors#the-response-above-may-be-incomplete) an, oder beendet den Turn normal. [Automatische Wiederholungen](/docs/de/errors#automatic-retries) sagt, wo jedes Ergebnis zutrifft.

Details

627 627 

628Claude Code verweigert `bypassPermissions` in einer Sitzung, die Sie mit [`--restricted`](/docs/de/cli-reference#cli-flags) starten. `--restricted` erfordert Claude Code v2.1.248 oder später.628Claude Code verweigert `bypassPermissions` in einer Sitzung, die Sie mit [`--restricted`](/docs/de/cli-reference#cli-flags) starten. `--restricted` erfordert Claude Code v2.1.248 oder später.

629 629 

630Das erste Mal, wenn Sie eine interaktive Sitzung mit diesem Modus aktiviert starten, zeigt Claude Code einen Warnungsdialog, der Sie auffordert, Verantwortung für Aktionen ohne Berechtigungsprüfungen zu übernehmen:630<span id="bypass-permissions-acceptance" />Wenn Sie zum ersten Mal eine interaktive Sitzung mit aktiviertem Modus starten, zeigt Claude Code einen Warnungsdialog, der Sie auffordert, die Verantwortung für Aktionen ohne Berechtigungsprüfungen zu übernehmen:

631 631 

632* **Wenn Sie akzeptieren**: Claude Code setzt `skipDangerousModePermissionPrompt` auf `true` in `~/.claude/settings.json`, sodass spätere Sitzungen den Dialog überspringen. Um den Dialog erneut zu sehen, entfernen Sie den Schlüssel aus dieser Datei oder setzen Sie ihn auf `false`. Die [`skipDangerousModePermissionPrompt` Referenz](/docs/de/settings-reference#skipdangerousmodepermissionprompt) listet die anderen Einstellungsdateien auf, in denen Sie oder Ihre Organisation ihn setzen können.632* **Wenn Sie akzeptieren**: Claude Code setzt `skipDangerousModePermissionPrompt` auf `true` in `~/.claude/settings.json`, sodass spätere Sitzungen den Dialog überspringen. Um den Dialog erneut zu sehen, entfernen Sie den Schlüssel aus dieser Datei oder setzen Sie ihn auf `false`. Die [`skipDangerousModePermissionPrompt` Referenz](/docs/de/settings-reference#skipdangerousmodepermissionprompt) listet die anderen Einstellungsdateien auf, in denen Sie oder Ihre Organisation ihn setzen können.

633* **Wenn Sie ablehnen**: Claude Code wird beendet.633* **Wenn Sie ablehnen**: Claude Code wird beendet.


635Im [nicht interaktiven Modus](/docs/de/headless) wird kein Dialog angezeigt. Eine [Hintergrund-Sitzung](/docs/de/agent-view) berücksichtigt Ihre Zustimmung, wenn diese in Benutzer- oder verwalteten Einstellungen gespeichert ist:635Im [nicht interaktiven Modus](/docs/de/headless) wird kein Dialog angezeigt. Eine [Hintergrund-Sitzung](/docs/de/agent-view) berücksichtigt Ihre Zustimmung, wenn diese in Benutzer- oder verwalteten Einstellungen gespeichert ist:

636 636 

637* Ohne gespeicherte Zustimmung wird `claude --bg --permission-mode bypassPermissions` verweigert, bis Sie den Dialog in einer interaktiven Sitzung akzeptieren.637* Ohne gespeicherte Zustimmung wird `claude --bg --permission-mode bypassPermissions` verweigert, bis Sie den Dialog in einer interaktiven Sitzung akzeptieren.

638* Wenn `skipDangerousModePermissionPrompt` nur in `.claude/settings.local.json` gesetzt ist, startet die Hintergrund-Sitzung, ignoriert die Bypass-Anfrage und heftet den Hinweis `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true` an. Damit der Bypass berücksichtigt wird, fügen Sie diesen Schlüssel zu `~/.claude/settings.json` hinzu und starten Sie dann eine neue Hintergrund-Sitzung.638* Wenn `skipDangerousModePermissionPrompt` nur in `.claude/settings.local.json` gesetzt ist, startet die Hintergrund-Sitzung, ignoriert die Bypass-Anfrage und heftet den Hinweis `Bypass permissions was requested at launch and ignored · if that was you, ~/.claude/settings.json needs "skipDangerousModePermissionPrompt": true` an. Fügen Sie diesen Schlüssel zu `~/.claude/settings.json` hinzu und starten Sie dann eine neue Hintergrund-Sitzung. Die Sitzung, die den Hinweis anzeigt, läuft weiterhin:

639 * Wenn `--allow-dangerously-skip-permissions` ignoriert wurde, ist `bypassPermissions` nicht in ihrem `Shift+Tab`-Zyklus enthalten.

640 * Wenn `--permission-mode bypassPermissions` oder `--dangerously-skip-permissions` ignoriert wurde, startet die Sitzung stattdessen im manuellen Modus.

639 641 

640Auf Linux und macOS weigert sich Claude Code, in diesem Modus zu starten, wenn es als Root oder unter `sudo` ausgeführt wird:642Auf Linux und macOS weigert sich Claude Code, im `bypassPermissions`-Modus zu starten, wenn es als Root oder unter `sudo` ausgeführt wird:

641 643 

642```text theme={null}644```text theme={null}

643--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons645--dangerously-skip-permissions cannot be used with root/sudo privileges for security reasons


692 * Markdown-Dateien im [Auto-Memory](/docs/de/memory#storage-location)-Verzeichnis des Projekts, beispielsweise `~/.claude/projects/<project>/memory/`, in einer Sitzung, die ohne `--restricted` gestartet wurde694 * Markdown-Dateien im [Auto-Memory](/docs/de/memory#storage-location)-Verzeichnis des Projekts, beispielsweise `~/.claude/projects/<project>/memory/`, in einer Sitzung, die ohne `--restricted` gestartet wurde

693 * Markdown-Dateien in einem [Subagenten-Memory](/docs/de/sub-agents#enable-persistent-memory)-Verzeichnis, beispielsweise `.claude/agent-memory/`, in einer Sitzung, die ohne `--restricted` gestartet wurde695 * Markdown-Dateien in einem [Subagenten-Memory](/docs/de/sub-agents#enable-persistent-memory)-Verzeichnis, beispielsweise `.claude/agent-memory/`, in einer Sitzung, die ohne `--restricted` gestartet wurde

694* Ein Verzeichnis, das Sie mit [`--plugin-dir`](/docs/de/plugins/mods/create#change-a-mod-with-claude) geladen haben, da Claude Code den Code eines Mods von dort aus neu lädt und ausführt, wenn sich eine Datei ändert696* Ein Verzeichnis, das Sie mit [`--plugin-dir`](/docs/de/plugins/mods/create#change-a-mod-with-claude) geladen haben, da Claude Code den Code eines Mods von dort aus neu lädt und ausführt, wenn sich eine Datei ändert

697* `~/.claude/dev-mods/` oder `dev-mods/` in dem Verzeichnis, auf das [`CLAUDE_CONFIG_DIR`](/docs/de/env-vars) verweist, wo Claude die [Mods speichert, die es für Sie schreibt](/docs/de/plugins/mods/create#ask-claude-for-a-mod)

695 698 

696Geschützte Dateien:699Geschützte Dateien:

697 700 

permissions.md +20 −2

Details

595 MCP595 MCP

596</h3>596</h3>

597 597 

598MCP-Regeln verwenden den Servernamen, wie er in Claude Code konfiguriert ist, optional gefolgt vom Namen eines Tools dieses Servers.598Um jedes Tool eines MCP-Servers abzugleichen, schreiben Sie `mcp__<server>__*`. Um ein einzelnes Tool abzugleichen, schreiben Sie seinen vollständigen Namen, `mcp__<server>__<tool>`.

599 599 

600* `mcp__puppeteer` gleicht jedes Tool ab, das der `puppeteer`-Server bereitstellt600* `mcp__puppeteer` gleicht jedes Tool ab, das der `puppeteer`-Server bereitstellt

601* `mcp__puppeteer__*` verwendet Wildcard-Syntax und gleicht ebenfalls alle Tools des `puppeteer`-Servers ab601* `mcp__puppeteer__*` verwendet Wildcard-Syntax und gleicht ebenfalls alle Tools des `puppeteer`-Servers ab

602* `mcp__puppeteer__puppeteer_navigate` gleicht das Tool `puppeteer_navigate` ab, das der `puppeteer`-Server bereitstellt602* `mcp__puppeteer__puppeteer_navigate` gleicht das Tool `puppeteer_navigate` ab, das der `puppeteer`-Server bereitstellt

603 603 

604Schreiben Sie für `<server>` den Namen des Servers so, wie er in den Tool-Namen dieses Servers erscheint. Diese Beispiele zeigen die Regel, die Sie für einen Namen mit Sonderzeichen, einen Server aus einem Plugin und einen Namen schreiben, der `__` enthält oder auf `_` endet:

605 

606* **Namen mit Zeichen wie `.` oder Leerzeichen**: Diese Zeichen werden zu `_`, daher schreiben Sie für einen Server, den Sie als `my.server` konfiguriert haben, `mcp__my_server__*`

607* **Server, die ein Plugin bereitstellt**: `<server>` hat die [Plugin-bezogene Form](/docs/de/mcp#plugin-provided-mcp-servers), daher schreiben Sie für den Server `database-tools` in einem Plugin namens `my-plugin` `mcp__plugin_my-plugin_database-tools__*`

608* **Ein `<server>`, der `__` enthält oder auf `_` endet**: Schreiben Sie die Wildcard-Form `mcp__<server>__*` mit dem vollständigen Namen. Für einen Server namens `reports__v2` schreiben Sie `mcp__reports__v2__*`. Das bloße `mcp__reports__v2` und das kürzere `mcp__reports` gleichen seine Tools als allow-Regeln nicht ab, da Claude Code beide als Regeln für einen Server namens `reports` liest

609 

604Wenn Ihre Organisation ein Tool eines [claude.ai-Konnektors](/docs/de/mcp#organization-controls-on-connector-tools) auf `ask` gesetzt hat und diese Einstellung in Ihrer Sitzung bei Claude Code ankommt, werden allow-Regeln für dieses Tool nicht wirksam: Claude Code fragt bei jedem Aufruf nach, auch in den Modi `auto` und `bypassPermissions`. Im `dontAsk`-Modus, der nie nachfragt, verweigert Claude Code den Aufruf stattdessen. Tools von Konnektoren, die Claude Code selbst abruft, erscheinen als `mcp__claude_ai_<server>__<tool>`.610Wenn Ihre Organisation ein Tool eines [claude.ai-Konnektors](/docs/de/mcp#organization-controls-on-connector-tools) auf `ask` gesetzt hat und diese Einstellung in Ihrer Sitzung bei Claude Code ankommt, werden allow-Regeln für dieses Tool nicht wirksam: Claude Code fragt bei jedem Aufruf nach, auch in den Modi `auto` und `bypassPermissions`. Im `dontAsk`-Modus, der nie nachfragt, verweigert Claude Code den Aufruf stattdessen. Tools von Konnektoren, die Claude Code selbst abruft, erscheinen als `mcp__claude_ai_<server>__<tool>`.

605 611 

606In einer [Cowork](https://claude.com/docs/cowork/overview)-Sitzung in der Claude Desktop-App führt Claude Shell-Befehle über das Cowork-Tool `mcp__workspace__bash` statt über das integrierte `Bash`-Tool aus, und Cowork stellt ebenso `mcp__workspace__web_fetch` für Webabrufe bereit. Claude Code wendet deny-Regeln, die das gesamte `Bash`- oder `WebFetch`-Tool benennen, auch auf diese Cowork-Tools an, sodass eine verwaltete `Bash`-deny-Regel Claude daran hindert, in Cowork Shell-Befehle auszuführen. Wenn Claude Code einen solchen Aufruf blockiert, nennt die Meldung das Cowork-Tool: `Permission to use mcp__workspace__bash has been denied.` allow-Regeln werden nicht übertragen: Claude Code wendet eine `Bash`-allow-Regel nie auf `mcp__workspace__bash` an.612In einer [Cowork](https://claude.com/docs/cowork/overview)-Sitzung in der Claude Desktop-App führt Claude Shell-Befehle über das Cowork-Tool `mcp__workspace__bash` statt über das integrierte `Bash`-Tool aus, und Cowork stellt ebenso `mcp__workspace__web_fetch` für Webabrufe bereit. Claude Code wendet deny-Regeln, die das gesamte `Bash`- oder `WebFetch`-Tool benennen, auch auf diese Cowork-Tools an, sodass eine verwaltete `Bash`-deny-Regel Claude daran hindert, in Cowork Shell-Befehle auszuführen. Wenn Claude Code einen solchen Aufruf blockiert, nennt die Meldung das Cowork-Tool: `Permission to use mcp__workspace__bash has been denied.` allow-Regeln werden nicht übertragen: Claude Code wendet eine `Bash`-allow-Regel nie auf `mcp__workspace__bash` an.


649 655 

650[Claude Code Hooks](/docs/de/hooks-guide) ermöglichen es Ihnen, benutzerdefinierte Shell-Befehle zu registrieren, die Berechtigungen zur Laufzeit evaluieren. Wenn Claude Code einen Werkzeugaufruf tätigt, werden PreToolUse-Hooks vor dem Berechtigungssystem ausgeführt, für jedes Werkzeug außer [`EndConversation`](/docs/de/tools-reference#endconversation-tool-behavior). Die Hook-Ausgabe kann den Werkzeugaufruf verweigern, eine Aufforderung erzwingen oder die Aufforderung überspringen, um den Aufruf fortzufahren.656[Claude Code Hooks](/docs/de/hooks-guide) ermöglichen es Ihnen, benutzerdefinierte Shell-Befehle zu registrieren, die Berechtigungen zur Laufzeit evaluieren. Wenn Claude Code einen Werkzeugaufruf tätigt, werden PreToolUse-Hooks vor dem Berechtigungssystem ausgeführt, für jedes Werkzeug außer [`EndConversation`](/docs/de/tools-reference#endconversation-tool-behavior). Die Hook-Ausgabe kann den Werkzeugaufruf verweigern, eine Aufforderung erzwingen oder die Aufforderung überspringen, um den Aufruf fortzufahren.

651 657 

658<h3 id="precedence-among-rules-hooks-and-mods">

659 Vorrang zwischen Regeln, Hooks und Mods

660</h3>

661 

652PreToolUse-Hook-Entscheidungen umgehen keine Berechtigungsregeln. Claude Code evaluiert Deny- und Ask-Regeln unabhängig davon, was ein PreToolUse-Hook zurückgibt: Eine übereinstimmende Deny-Regel blockiert den Aufruf, und eine übereinstimmende Ask-Regel fordert immer noch auf, selbst wenn der Hook `"allow"` oder `"ask"` zurückgegeben hat. Dies bewahrt die Deny-First-Priorität, die in [Berechtigungen verwalten](#manage-permissions) beschrieben ist, einschließlich Deny-Regeln, die in verwalteten Einstellungen festgelegt sind.662PreToolUse-Hook-Entscheidungen umgehen keine Berechtigungsregeln. Claude Code evaluiert Deny- und Ask-Regeln unabhängig davon, was ein PreToolUse-Hook zurückgibt: Eine übereinstimmende Deny-Regel blockiert den Aufruf, und eine übereinstimmende Ask-Regel fordert immer noch auf, selbst wenn der Hook `"allow"` oder `"ask"` zurückgegeben hat. Dies bewahrt die Deny-First-Priorität, die in [Berechtigungen verwalten](#manage-permissions) beschrieben ist, einschließlich Deny-Regeln, die in verwalteten Einstellungen festgelegt sind.

653 663 

654Dieser Vorrang gilt für Hooks in Einstellungsdateien und in der `hooks/hooks.json` eines Plugins. Ein [Mod](/docs/de/plugins/mods/overview), den Sie installieren und der `tool.check` verarbeitet, antwortet, nachdem die Regeln und die `PreToolUse`-Hooks entschieden haben, und seine Antwort kann deren Antwort ersetzen:664Dieser Vorrang gilt für Hooks in Einstellungsdateien und in der `hooks/hooks.json` eines Plugins. Ein [Mod](/docs/de/plugins/mods/overview), den Sie installieren und der `tool.check` verarbeitet, antwortet, nachdem die Regeln und die `PreToolUse`-Hooks entschieden haben. Außerhalb des [Plan-Modus](#hook-approvals-in-plan-mode) oder bei einem nur lesenden Aufruf kann seine Antwort deren Antwort ersetzen:

655 665 

656* **Ask-Regeln**: Der Mod kann einen Aufruf genehmigen, für den eine Ask-Regel eine Aufforderung anzeigen würde666* **Ask-Regeln**: Der Mod kann einen Aufruf genehmigen, für den eine Ask-Regel eine Aufforderung anzeigen würde

657* **Eine Blockierung durch einen `PreToolUse`-Hook**: Der Mod kann den Aufruf genehmigen, es sei denn, der Hook befindet sich in verwalteten Einstellungen667* **Eine Blockierung durch einen `PreToolUse`-Hook**: Der Mod kann den Aufruf genehmigen, es sei denn, der Hook befindet sich in verwalteten Einstellungen


664 674 

665Ein blockierender Hook hat auch Vorrang vor Allow-Regeln. Ein Hook, der mit Code 2 beendet wird, stoppt den Werkzeugaufruf, bevor Berechtigungsregeln evaluiert werden, daher gilt die Blockierung auch dann, wenn eine Allow-Regel den Aufruf sonst zulassen würde. Um alle Bash-Befehle ohne Aufforderungen auszuführen, außer für einige, die Sie blockieren möchten, fügen Sie `"Bash"` zu Ihrer Allow-Liste hinzu und registrieren Sie einen PreToolUse-Hook, der diese spezifischen Befehle ablehnt. Siehe [Bearbeitungen geschützter Dateien blockieren](/docs/de/hooks-guide#block-edits-to-protected-files) für ein Hook-Skript, das Sie anpassen können.675Ein blockierender Hook hat auch Vorrang vor Allow-Regeln. Ein Hook, der mit Code 2 beendet wird, stoppt den Werkzeugaufruf, bevor Berechtigungsregeln evaluiert werden, daher gilt die Blockierung auch dann, wenn eine Allow-Regel den Aufruf sonst zulassen würde. Um alle Bash-Befehle ohne Aufforderungen auszuführen, außer für einige, die Sie blockieren möchten, fügen Sie `"Bash"` zu Ihrer Allow-Liste hinzu und registrieren Sie einen PreToolUse-Hook, der diese spezifischen Befehle ablehnt. Siehe [Bearbeitungen geschützter Dateien blockieren](/docs/de/hooks-guide#block-edits-to-protected-files) für ein Hook-Skript, das Sie anpassen können.

666 676 

677<h3 id="hook-approvals-in-plan-mode">

678 Hook-Genehmigungen im Plan-Modus

679</h3>

680 

681Im [Plan-Modus](/docs/de/permission-modes#analyze-before-you-edit-with-plan-mode) hat das `"allow"` Ihres `PreToolUse`-Hooks, abgesehen von `ExitPlanMode`, keine Wirkung auf eine Dateibearbeitung oder einen anderen Aufruf, der nicht nur lesend ist. Sie erhalten dieselbe Berechtigungsabfrage, Blockierung oder Genehmigung, die der Aufruf ohne Hook erhalten würde, und Claude Code wendet weiterhin jedes `updatedInput` an, das der Hook zurückgibt. Wenn der Hook auf [`ExitPlanMode`](/docs/de/hooks#allow-with-updatedinput) mit `"allow"` und `updatedInput` antwortet, wird dieses Tool weiterhin ohne Berechtigungsabfrage ausgeführt.

682 

683Im Plan-Modus kann auch ein Mod, der `tool.check` verarbeitet, weder eine Dateibearbeitung noch einen anderen Aufruf genehmigen, der nicht nur lesend ist, er kann einen solchen Aufruf jedoch weiterhin blockieren. Um diese Einschränkung für Genehmigungen durch Hooks und Mods aufzuheben, [genehmigen Sie den Plan](/docs/de/permission-modes#review-and-approve-a-plan) oder wechseln Sie in einen anderen Berechtigungsmodus.

684 

667<h2 id="working-directories">685<h2 id="working-directories">

668 Arbeitsverzeichnisse686 Arbeitsverzeichnisse

669</h2>687</h2>

Details

30 Bitten Sie mit eigenen Worten um den Mod, zum Beispiel `make a mod that shows the current git branch above the prompt`. Claude schreibt den Mod in ein eigenes Verzeichnis im Mods-Ordner der Sitzung, also `~/.claude/dev-mods/` gefolgt von der ID der Sitzung. Der vollständige Pfad eines Mods sieht so aus: `~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/`.30 Bitten Sie mit eigenen Worten um den Mod, zum Beispiel `make a mod that shows the current git branch above the prompt`. Claude schreibt den Mod in ein eigenes Verzeichnis im Mods-Ordner der Sitzung, also `~/.claude/dev-mods/` gefolgt von der ID der Sitzung. Der vollständige Pfad eines Mods sieht so aus: `~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/`.

31 31 

32 <Note>32 <Note>

33 In den [Berechtigungsmodi](/docs/de/permission-modes#protected-paths) `default` und `acceptEdits` fragt Claude Code nach, bevor Claude jede Datei des Mods erstellt, da `~/.claude` ein geschützter Pfad ist. Genehmigen Sie jede Datei, sobald sie angezeigt wird.33 In den [Berechtigungsmodi](/docs/de/permission-modes) `default` und `acceptEdits` fragt Claude Code nach, bevor Claude jede Datei des Mods erstellt, da der Mods-Ordner ein [geschützter Pfad](/docs/de/permission-modes#protected-paths) ist. Genehmigen Sie jede Datei, sobald sie angezeigt wird.

34 </Note>34 </Note>

35 </Step>35 </Step>

36 36 

Details

216})216})

217```217```

218 218 

219Auf `main` gibt der Hook `deny` zurück, selbst wenn eine Regel `git push` erlaubt. Auf einem anderen Branch und bei anderen Befehlen erhält der Aufruf die Entscheidung, die er ohne den Mod erhalten würde.219Der Hook lehnt `git push` auf `main` ab und lässt jeden anderen Aufruf durch:

220 

221* **Auf `main`**: Der Hook gibt `deny` zurück, selbst wenn eine Regel `git push` erlaubt

222* **Auf einem anderen Branch und bei anderen Befehlen**: Der Aufruf erhält die Entscheidung, die er ohne den Mod erhalten würde

220 223 

221Der Hook prüft den Text des Befehls, betrachten Sie ihn also als Erinnerung für Claude. Um Pushes auf `main` für alle zu blockieren, schützen Sie den Branch bei Ihrem Git-Host.224Der Hook prüft den Text des Befehls, betrachten Sie ihn also als Erinnerung für Claude. Um Pushes auf `main` für alle zu blockieren, schützen Sie den Branch bei Ihrem Git-Host.

222 225 

223Ein Hook kann `allow`, `ask` oder `deny` zurückgeben und daher auch einen Aufruf genehmigen, den ein `PreToolUse`-Hook außerhalb der verwalteten Einstellungen blockiert hat. Unter [Berechtigungen mit Hooks erweitern](/docs/de/permissions#extend-permissions-with-hooks) ist aufgeführt, welche Entscheidungen gegenüber einem Mod Bestand haben.226Ein Hook kann `allow`, `ask` oder `deny` zurückgeben und daher auch einen Aufruf genehmigen, den ein `PreToolUse`-Hook außerhalb der verwalteten Einstellungen blockiert hat. Im [Plan-Modus](/docs/de/permissions#hook-approvals-in-plan-mode) kann Ihr Hook bei einem Aufruf, der nicht nur lesend ist, etwa einer Dateibearbeitung, die von `next(e)` zurückgegebene Entscheidung verschärfen, aber nicht lockern. Unter [Berechtigungen mit Hooks erweitern](/docs/de/permissions#extend-permissions-with-hooks) ist aufgeführt, welche Entscheidungen gegenüber einem Mod Bestand haben.

224 227 

225<h3 id="rewrite-or-add-to-a-prompt">228<h3 id="rewrite-or-add-to-a-prompt">

226 Einen Prompt umschreiben oder ergänzen229 Einen Prompt umschreiben oder ergänzen


337* **`PreToolUse`-Hooks aus verwalteten Einstellungen**: werden vor dem `tool.call`-Hook des ersten Mods ausgeführt, und eine Blockierung durch einen von ihnen ist endgültig, sodass kein Mod den Aufruf sieht.340* **`PreToolUse`-Hooks aus verwalteten Einstellungen**: werden vor dem `tool.call`-Hook des ersten Mods ausgeführt, und eine Blockierung durch einen von ihnen ist endgültig, sodass kein Mod den Aufruf sieht.

338* **`PreToolUse`-Hooks aus allen anderen Einstellungsdateien und aus der `hooks/hooks.json` von Plugins**: werden ausgeführt, nachdem der letzte Mod `next` aufgerufen hat, als Teil des eigenen Verhaltens von Claude Code. Ein Mod, der `tool.call` beantwortet, ohne `next` aufzurufen, verhindert ihre Ausführung, und ein Mod, der `next` aufruft, sieht ihre Entscheidung in dem Ergebnis, das er zurückgibt.341* **`PreToolUse`-Hooks aus allen anderen Einstellungsdateien und aus der `hooks/hooks.json` von Plugins**: werden ausgeführt, nachdem der letzte Mod `next` aufgerufen hat, als Teil des eigenen Verhaltens von Claude Code. Ein Mod, der `tool.call` beantwortet, ohne `next` aufzurufen, verhindert ihre Ausführung, und ein Mod, der `next` aufruft, sieht ihre Entscheidung in dem Ergebnis, das er zurückgibt.

339 342 

340[`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked) wird ausgelöst, nachdem diese Hooks und die Berechtigungsregeln entschieden haben, sodass ein Hook darauf einen Aufruf genehmigen kann, den ein Hook aus der zweiten Gruppe blockiert hat.343Ein [`tool.check`](#approve-or-refuse-a-tool-call-before-the-user-is-asked)-Hook kann einen Aufruf genehmigen, den ein `PreToolUse`-Hook außerhalb der verwalteten Einstellungen blockiert hat, da `tool.check` ausgelöst wird, nachdem diese Hooks und die Berechtigungsregeln entschieden haben. Im Plan-Modus kann ein `tool.check`-Hook einen solchen Aufruf genehmigen, wenn er nur lesend ist, nicht jedoch eine Dateibearbeitung oder einen anderen Aufruf, der nicht nur lesend ist.

341 344 

342<h3 id="handle-a-hook-that-fails">345<h3 id="handle-a-hook-that-fails">

343 Einen fehlschlagenden Hook behandeln346 Einen fehlschlagenden Hook behandeln

Details

205 205 

206Um die Zusammenfassung zu erstellen, sendet Claude Code eine separate Anfrage mit dem gleichen System-Prompt, den gleichen Tools und dem gleichen Verlauf wie Ihre Konversation, plus eine Zusammenfassungsanweisung, die als letzte Benutzernachricht angehängt wird. Während der Cache warm ist, liest diese Anfrage Ihr Präfix aus dem Cache, sodass ein `/compact` während einer Sitzung einen Bruchteil dessen kostet, was die Kontextgröße nahelegt, und die meiste Zeit mit der Generierung der Zusammenfassung verbringt.206Um die Zusammenfassung zu erstellen, sendet Claude Code eine separate Anfrage mit dem gleichen System-Prompt, den gleichen Tools und dem gleichen Verlauf wie Ihre Konversation, plus eine Zusammenfassungsanweisung, die als letzte Benutzernachricht angehängt wird. Während der Cache warm ist, liest diese Anfrage Ihr Präfix aus dem Cache, sodass ein `/compact` während einer Sitzung einen Bruchteil dessen kostet, was die Kontextgröße nahelegt, und die meiste Zeit mit der Generierung der Zusammenfassung verbringt.

207 207 

208Nach einer Pause länger als die [Cache-Lebensdauer](#cache-lifetime) gibt es keinen Cache mehr zum Lesen, sodass die Zusammenfassungsanfrage den vollständigen Verlauf als nicht zwischengespeicherte Eingabe erneut verarbeitet. Dies ist der Grund, warum `/compact` am meisten kostet, wenn Sie [eine alte Sitzung fortsetzen](/docs/de/sessions#resume-from-a-summary). In beiden Fällen, warm und kalt, erstellt der Turn nach der Komprimierung den Konversations-Cache nur für die viel kürzere Zusammenfassung neu, sodass dieser Turn nicht der langsame Teil ist.208Nach einer Pause länger als die [Cache-Lebensdauer](#cache-lifetime) gibt es keinen Cache mehr zum Lesen, sodass die Zusammenfassungsanfrage den vollständigen Verlauf als nicht zwischengespeicherte Eingabe erneut verarbeitet. Dies ist der Grund, warum `/compact` am meisten kostet, wenn Sie [eine alte Sitzung fortsetzen](/docs/de/sessions#resume-a-session). In beiden Fällen, warm und kalt, erstellt der Turn nach der Komprimierung den Konversations-Cache nur für die viel kürzere Zusammenfassung neu, sodass dieser Turn nicht der langsame Teil ist.

209 209 

210<Tip>210<Tip>

211 Komprimierung funktioniert zu Ihrem Vorteil, wenn der Kontext, den Sie verwerfen, Inhalte sind, die Sie nicht mehr benötigen. Um zu wählen, wann ihr Overhead auftritt, führen Sie `/compact` an einer natürlichen Pause in Ihrer Arbeit aus, z. B. zwischen Aufgaben, anstatt zu warten, bis die automatische Komprimierung während einer Aufgabe ausgelöst wird. Wenn Sie einen Weg eingeschlagen haben, den Sie vollständig aufgeben möchten, springen Sie stattdessen mit [`/rewind`](#rewinding-the-conversation) zu einem früheren Turn zurück. Das Zurückspulen schneidet auf ein Präfix zurück, das bereits zwischengespeichert ist, anstatt ein neues zu erstellen, wie es die Komprimierung tut.211 Komprimierung funktioniert zu Ihrem Vorteil, wenn der Kontext, den Sie verwerfen, Inhalte sind, die Sie nicht mehr benötigen. Um zu wählen, wann ihr Overhead auftritt, führen Sie `/compact` an einer natürlichen Pause in Ihrer Arbeit aus, z. B. zwischen Aufgaben, anstatt zu warten, bis die automatische Komprimierung während einer Aufgabe ausgelöst wird. Wenn Sie einen Weg eingeschlagen haben, den Sie vollständig aufgeben möchten, springen Sie stattdessen mit [`/rewind`](#rewinding-the-conversation) zu einem früheren Turn zurück. Das Zurückspulen schneidet auf ein Präfix zurück, das bereits zwischengespeichert ist, anstatt ein neues zu erstellen, wie es die Komprimierung tut.


310 310 

311Gecachte Präfixe verfallen nach einer Inaktivitätsperiode. Jede Anfrage, die den Cache trifft, setzt den Timer zurück, daher bleibt der Cache warm, solange Sie arbeiten. Nach einer langen genug Pause berechnet die nächste Anfrage die vollständige Eingabe neu und stellt den Cache wieder her, weshalb der erste Turn nach einer Pause noticeably langsamer sein kann.311Gecachte Präfixe verfallen nach einer Inaktivitätsperiode. Jede Anfrage, die den Cache trifft, setzt den Timer zurück, daher bleibt der Cache warm, solange Sie arbeiten. Nach einer langen genug Pause berechnet die nächste Anfrage die vollständige Eingabe neu und stellt den Cache wieder her, weshalb der erste Turn nach einer Pause noticeably langsamer sein kann.

312 312 

313Bei einem Pro- oder Max-Plan bietet Claude Code beim Fortsetzen einer großen Sitzung nach einer langen Pause [die Möglichkeit, von einer Zusammenfassung fortzufahren](/docs/de/sessions#resume-from-a-summary), damit spätere Anfragen nicht die vollständige Historie tragen.

314 

315Die Time to Live (TTL) kontrolliert, wie lange eine Pause der Cache überlebt. Die API bietet zwei: eine fünf-Minuten-TTL und eine [eine-Stunden-TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration), die den Cache durch längere Pausen warm hält, aber [Cache-Schreibvorgänge zu einer höheren Rate abrechnet](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Die längere TTL hilft, wenn Sie eine Sitzung untätig lassen und später zu ihr zurückkehren, da Sie die Neuverarbeitung eines abgelaufenen Präfix sparen. Sie kostet mehr bei kurzen Arbeitsphasen, die nie länger als fünf Minuten untätig sind, wo die höhere Schreibrate gilt und die längere Cache-Lebensdauer ungenutzt bleibt.313Die Time to Live (TTL) kontrolliert, wie lange eine Pause der Cache überlebt. Die API bietet zwei: eine fünf-Minuten-TTL und eine [eine-Stunden-TTL](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#1-hour-cache-duration), die den Cache durch längere Pausen warm hält, aber [Cache-Schreibvorgänge zu einer höheren Rate abrechnet](https://platform.claude.com/docs/en/build-with-claude/prompt-caching#pricing). Die längere TTL hilft, wenn Sie eine Sitzung untätig lassen und später zu ihr zurückkehren, da Sie die Neuverarbeitung eines abgelaufenen Präfix sparen. Sie kostet mehr bei kurzen Arbeitsphasen, die nie länger als fünf Minuten untätig sind, wo die höhere Schreibrate gilt und die längere Cache-Lebensdauer ungenutzt bleibt.

316 314 

317<h3 id="which-ttl-each-request-gets">315<h3 id="which-ttl-each-request-gets">

sandboxing.md +14 −0

Details

1080* **`Command line arguments`**: Wenn Sie Claude Code mit [`--settings`](/docs/de/settings#change-a-setting-for-one-session) gestartet haben, prüfen Sie, ob die übergebene Datei oder das übergebene JSON einen dieser Schlüssel setzt. Falls ja, ändern Sie den Wert dort, oder starten Sie Claude Code erneut ohne diese Schlüssel.1080* **`Command line arguments`**: Wenn Sie Claude Code mit [`--settings`](/docs/de/settings#change-a-setting-for-one-session) gestartet haben, prüfen Sie, ob die übergebene Datei oder das übergebene JSON einen dieser Schlüssel setzt. Falls ja, ändern Sie den Wert dort, oder starten Sie Claude Code erneut ohne diese Schlüssel.

1081* **`Enterprise managed settings`**: Die verwalteten Einstellungen Ihrer Organisation sind geladen. Wenn sie einen dieser Schlüssel setzen, können Sie diesen Schlüssel weder über `/sandbox` noch über eine von Ihnen kontrollierte Einstellungsdatei ändern. Wenden Sie sich in diesem Fall an Ihren Administrator.1081* **`Enterprise managed settings`**: Die verwalteten Einstellungen Ihrer Organisation sind geladen. Wenn sie einen dieser Schlüssel setzen, können Sie diesen Schlüssel weder über `/sandbox` noch über eine von Ihnen kontrollierte Einstellungsdatei ändern. Wenden Sie sich in diesem Fall an Ihren Administrator.

1082 1082 

1083<h3 id="/sandbox-prints-sandbox-settings-not-changed">

1084 `/sandbox` gibt `Sandbox settings not changed` aus

1085</h3>

1086 

1087Diese Zeile bedeutet, dass `/sandbox` die Auswahl, die Sie in seinem Panel getroffen haben, nicht in der `.claude/settings.local.json` Ihres Projekts speichern konnte:

1088 

1089```text theme={null}

1090✗ Sandbox settings not changed: /home/you/project/.claude/settings.local.json couldn't be updated (EACCES). Start Claude Code in a project folder you can write to.

1091```

1092 

1093Wenn der Grund in Klammern `EACCES`, `EPERM` oder `EROFS` lautet, starten Sie Claude Code in einem Projektordner, in den Sie schreiben können, und führen Sie `/sandbox` in dieser Sitzung erneut aus.

1094 

1095Wenn der Grund mit `Invalid JSON syntax in settings file` beginnt, korrigieren Sie das JSON in der `.claude/settings.local.json` Ihres Projekts und führen Sie `/sandbox` anschließend erneut aus.

1096 

1083<h2 id="limitations">1097<h2 id="limitations">

1084 Einschränkungen1098 Einschränkungen

1085</h2>1099</h2>

sessions.md +0 −14

Details

102* Der Lauf wird nicht über [Channels](/docs/de/channels) gestartet102* Der Lauf wird nicht über [Channels](/docs/de/channels) gestartet

103* Keine [Ablehnungsregel](/docs/de/permissions#manage-permissions) entfernt das Tool `ExitPlanMode`103* Keine [Ablehnungsregel](/docs/de/permissions#manage-permissions) entfernt das Tool `ExitPlanMode`

104 104 

105<h3 id="resume-from-a-summary">

106 Aus einer Zusammenfassung fortsetzen

107</h3>

108 

109Wenn Sie mit einem Pro- oder Max-Plan eine Sitzung fortsetzen, die länger als etwa eine Stunde inaktiv war und mehr als 100.000 Token umfasst, stellt Claude Code die Konversation wieder her und öffnet dann einen Dialog, bevor Sie Ihre erste Nachricht senden. Der [Prompt-Cache](/docs/de/prompt-caching#cache-lifetime) der Sitzung ist bis dahin abgelaufen, sodass die nächste Anfrage den vollständigen Verlauf einmal verarbeitet, unabhängig davon, welche Option des Dialogs Sie wählen.

110 

111Der Dialog bietet drei Möglichkeiten, die Sitzung fortzusetzen:

112 

113* **Aus Zusammenfassung fortsetzen**: führt [`/compact`](/docs/de/context-window#what-survives-compaction) sofort aus. Spätere Anfragen enthalten die Zusammenfassung anstelle des vollständigen Verlaufs.

114* **Vollständige Sitzung unverändert fortsetzen**: lädt die Konversation unverändert.

115* **Nicht mehr fragen**: setzt die vollständige Sitzung fort und zeigt den Dialog bei allen zukünftigen Fortsetzungen nicht mehr an.

116 

117Das unveränderte Fortsetzen hält jedes Detail der Konversation verfügbar, mit Kosten pro Anfrage, die mit der Größe der Konversation steigen. Das Fortsetzen aus der Zusammenfassung kostet bei jeder späteren Anfrage weniger, weil es die Zusammenfassung anstelle des vollständigen Verlaufs enthält, aber was die Zusammenfassung auslässt, ist nicht mehr in Claudes Kontext. Siehe [warum die Nutzung in einer langen Sitzung steigt](/docs/de/costs#why-usage-climbs-in-a-long-session), um zu erfahren, woher diese Kosten pro Anfrage stammen.

118 

119<h3 id="where-the-session-picker-looks">105<h3 id="where-the-session-picker-looks">

120 Wo die Sitzungsauswahl sucht106 Wo die Sitzungsauswahl sucht

121</h3>107</h3>

sub-agents.md +18 −6

Details

316| `name` | Ja | Eindeutige Kennung mit höchstens 256 Zeichen, wie `code-reviewer` oder `reviewer-v2`. [Hooks](/docs/de/hooks#subagentstart) erhalten diesen Wert als `agent_type`. Der Dateiname muss nicht übereinstimmen. Namen können kein `:` enthalten, das für [Plugin-Umfang-Identifier](/docs/de/plugins/overview) wie `my-plugin:reviewer` reserviert ist |316| `name` | Ja | Eindeutige Kennung mit höchstens 256 Zeichen, wie `code-reviewer` oder `reviewer-v2`. [Hooks](/docs/de/hooks#subagentstart) erhalten diesen Wert als `agent_type`. Der Dateiname muss nicht übereinstimmen. Namen können kein `:` enthalten, das für [Plugin-Umfang-Identifier](/docs/de/plugins/overview) wie `my-plugin:reviewer` reserviert ist |

317| `description` | Ja | Wann Claude an diesen Subagenten delegieren sollte |317| `description` | Ja | Wann Claude an diesen Subagenten delegieren sollte |

318| `tools` | Nein | [Werkzeuge](#available-tools), die der Subagent verwenden kann, als kommagetrennte Zeichenkette wie `Read, Grep, Bash` oder eine YAML-Liste. Erbt jedes Werkzeug, das für Subagenten verfügbar ist, wenn weggelassen. Wenn kein Eintrag in der Liste sich zu einem Werkzeug auflöst, schlägt der Subagent normalerweise [fehl zu starten](/docs/de/errors#agent-would-be-spawned-with-zero-tools) mit einem Fehler, der die Einträge benennt. Um Skills in den Kontext zu laden, verwenden Sie das `skills`-Feld statt `Skill` hier aufzulisten |318| `tools` | Nein | [Werkzeuge](#available-tools), die der Subagent verwenden kann, als kommagetrennte Zeichenkette wie `Read, Grep, Bash` oder eine YAML-Liste. Erbt jedes Werkzeug, das für Subagenten verfügbar ist, wenn weggelassen. Wenn kein Eintrag in der Liste sich zu einem Werkzeug auflöst, schlägt der Subagent normalerweise [fehl zu starten](/docs/de/errors#agent-would-be-spawned-with-zero-tools) mit einem Fehler, der die Einträge benennt. Um Skills in den Kontext zu laden, verwenden Sie das `skills`-Feld statt `Skill` hier aufzulisten |

319| `disallowedTools` | Nein | Werkzeuge zum Verweigern, entfernt aus geerbter oder angegebener Liste. Gleiches Format wie `tools`. Ein Eintrag mit einem Spezifizierer, wie `Bash(git push *)`, entfernt immer noch das [ganze Werkzeug](#available-tools) |319| `disallowedTools` | Nein | Zu verweigernde Tools, entfernt aus der geerbten oder angegebenen Liste. Gleiches Format wie `tools`. Ein Eintrag mit einem Spezifizierer, wie `Bash(git push *)`, [entfernt trotzdem das ganze Tool](#restrict-which-tools-a-subagent-can-use) |

320| `model` | Nein | [Modell](#choose-a-model) zu verwenden: `sonnet`, `opus`, `haiku`, `fable`, eine vollständige Modell-ID wie `claude-opus-5-5` oder `inherit`. Wenn Sie es weglassen, wählt Claude Code das Modell in der [Subagenten-Modell-Reihenfolge](#choose-a-model) |320| `model` | Nein | [Modell](#choose-a-model) zu verwenden: `sonnet`, `opus`, `haiku`, `fable`, eine vollständige Modell-ID wie `claude-opus-5-5` oder `inherit`. Wenn Sie es weglassen, wählt Claude Code das Modell in der [Subagenten-Modell-Reihenfolge](#choose-a-model) |

321| `permissionMode` | Nein | [Berechtigungsmodus](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan` oder `manual` als Alias für `default`. Ignoriert für [Plugin-Subagenten](#choose-the-subagent-scope) |321| `permissionMode` | Nein | [Berechtigungsmodus](#permission-modes): `default`, `acceptEdits`, `auto`, `dontAsk`, `bypassPermissions`, `plan` oder `manual` als Alias für `default`. Ignoriert für [Plugin-Subagenten](#choose-the-subagent-scope) |

322| `maxTurns` | Nein | Maximale Anzahl von Agenten-Turns, bevor der Subagent stoppt. Wenn der Subagent die Grenze erreicht, gibt Claude Code seine Ausgabe als teilweise markiert zurück, und Claude kann [ihn fortsetzen](#resume-subagents), um fortzufahren. Die teilweise Markierung erfordert Claude Code v2.1.246 oder später |322| `maxTurns` | Nein | Maximale Anzahl von Agenten-Turns, bevor der Subagent stoppt. Wenn der Subagent die Grenze erreicht, gibt Claude Code seine Ausgabe als teilweise markiert zurück, und Claude kann [ihn fortsetzen](#resume-subagents), um fortzufahren. Die teilweise Markierung erfordert Claude Code v2.1.246 oder später |


475 475 

476In einer [Sitzung ohne die Task-Werkzeuge](/docs/de/tools-reference#task-tool-availability) stellt Claude Code die Task-Werkzeuge auch nicht für Subagenten bereit, auch wenn der Subagent ein anderes Modell ausführt. Ein In-Process-Teammate folgt Ihrer Sitzung auf die gleiche Weise, während ein Teammate in seinem eigenen [Split-Pane](/docs/de/agent-teams#choose-a-display-mode) als separater Claude Code-Prozess läuft, sodass sein eigenes Modell entscheidet.476In einer [Sitzung ohne die Task-Werkzeuge](/docs/de/tools-reference#task-tool-availability) stellt Claude Code die Task-Werkzeuge auch nicht für Subagenten bereit, auch wenn der Subagent ein anderes Modell ausführt. Ein In-Process-Teammate folgt Ihrer Sitzung auf die gleiche Weise, während ein Teammate in seinem eigenen [Split-Pane](/docs/de/agent-teams#choose-a-display-mode) als separater Claude Code-Prozess läuft, sodass sein eigenes Modell entscheidet.

477 477 

478Um Werkzeuge einzuschränken, verwenden Sie das `tools`-Feld als Allowlist oder das `disallowedTools`-Feld als Denylist. Dieses Beispiel verwendet `tools`, um ausschließlich Read, Grep, Glob und Bash zuzulassen. Der Subagent kann keine Dateien bearbeiten, keine Dateien schreiben oder MCP-Werkzeuge verwenden:478<h4 id="restrict-which-tools-a-subagent-can-use">

479 Beschränken Sie, welche Tools ein Subagent verwenden kann

480</h4>

481 

482Um Tools einzuschränken, verwenden Sie das `tools`-Feld als Allowlist oder das `disallowedTools`-Feld als Denylist. Wenn beide gesetzt sind, wird `disallowedTools` zuerst angewendet, dann wird `tools` gegen den verbleibenden Pool aufgelöst. Ein Tool, das in beiden aufgelistet ist, wird entfernt.

483 

484Dieses Beispiel verwendet `tools`, um ausschließlich Read, Grep, Glob und Bash zuzulassen. Der Subagent kann keine Dateien bearbeiten, keine Dateien schreiben und keine MCP-Tools verwenden:

479 485 

480```yaml theme={null}486```yaml theme={null}

481---487---


495---501---

496```502```

497 503 

498Wenn beide gesetzt sind, wird `disallowedTools` zuerst angewendet, dann wird `tools` gegen den verbleibenden Pool aufgelöst. Ein Werkzeug, das in beiden aufgelistet ist, wird entfernt.

499 

500Wenn nichts in der `tools`-Liste sich zu einem Werkzeug auflöst, beispielsweise weil jeder Eintrag falsch geschrieben ist oder ein Werkzeug benennt, das nicht für Subagenten verfügbar ist, weigert sich Claude Code normalerweise, den Subagenten zu starten, und das Agent-Werkzeug gibt einen Fehler zurück, der die ungelösten Einträge benennt; siehe [Agent würde mit null Werkzeugen gespawnt](/docs/de/errors#agent-would-be-spawned-with-zero-tools) für die Nachricht und wie man jeden Eintrag behebt. Vor v2.1.208 startete dieser Subagent mit keinen Werkzeugen und konnte ein leeres oder verwirrendes Ergebnis zurückgeben.504Wenn nichts in der `tools`-Liste sich zu einem Werkzeug auflöst, beispielsweise weil jeder Eintrag falsch geschrieben ist oder ein Werkzeug benennt, das nicht für Subagenten verfügbar ist, weigert sich Claude Code normalerweise, den Subagenten zu starten, und das Agent-Werkzeug gibt einen Fehler zurück, der die ungelösten Einträge benennt; siehe [Agent würde mit null Werkzeugen gespawnt](/docs/de/errors#agent-would-be-spawned-with-zero-tools) für die Nachricht und wie man jeden Eintrag behebt. Vor v2.1.208 startete dieser Subagent mit keinen Werkzeugen und konnte ein leeres oder verwirrendes Ergebnis zurückgeben.

501 505 

502Beide Felder akzeptieren MCP-Server-Level-Muster zusätzlich zu exakten Werkzeugnamen: `mcp__<server>` oder `mcp__<server>__*` gewährt oder entfernt jedes Werkzeug vom benannten Server. In `disallowedTools` entfernt `mcp__*` auch jedes MCP-Werkzeug von jedem Server. Dieses Beispiel entfernt jedes Werkzeug vom `github` MCP-Server, während Werkzeuge von anderen Servern und die integrierten Werkzeuge in seinem Pool beibehalten werden:506Die Felder `tools` und `disallowedTools` akzeptieren auch Einträge für einen ganzen MCP-Server:

507 

508| Ziel | Feld | Beispieleintrag |

509| :- | :- | :- |

510| Dem Subagenten jedes Tool eines Servers geben | `tools` | `mcp__github__*` |

511| Die Tools eines Servers vorenthalten | `disallowedTools` | `mcp__github` oder `mcp__github__*` |

512| Jedes MCP-Tool jedes Servers vorenthalten | `disallowedTools` | `mcp__*` |

513 

514Dieses Beispiel entfernt jedes Tool des `github`-MCP-Servers, während Tools anderer Server und die integrierten Tools im Pool des Subagenten erhalten bleiben:

503 515 

504```yaml theme={null}516```yaml theme={null}

505---517---


757 Deaktivieren Sie spezifische Subagenten769 Deaktivieren Sie spezifische Subagenten

758</h4>770</h4>

759 771 

760Sie können verhindern, dass Claude bestimmte Subagenten verwendet, indem Sie sie zum `deny`-Array in Ihren [Einstellungen](/docs/de/settings-reference#permission-settings) hinzufügen. Verwenden Sie das Format `Agent(subagent-name)`, wobei `subagent-name` dem `name`-Feld des Subagenten entspricht.772Sie können verhindern, dass Claude bestimmte Subagenten verwendet, indem Sie sie zum `deny`-Array in Ihren [Einstellungen](/docs/de/settings-reference#permission-settings) hinzufügen. Verwenden Sie das Format `Agent(subagent-name)`, wobei `subagent-name` dem Namensfeld des Subagenten entspricht.

761 773 

762```json theme={null}774```json theme={null}

763{775{