SpyBara
Go Premium

Documentation 2026-10-06 23:59 UTC to 2026-10-07 11:02 UTC

39 files changed +183 −135. View all changes and history on the product overview
2026
Wed 7 11:02 Tue 6 23:59 Mon 5 23:58 Sun 4 23:58 Sat 3 23:57 Fri 2 22:59 Thu 1 23:59

agent-sdk/hooks.md +14 −14

Details

36 </Step>36 </Step>

37 37 

38 <Step title="Ihr Callback gibt eine Entscheidung zurück">38 <Step title="Ihr Callback gibt eine Entscheidung zurück">

39 Nach dem Ausführen von Operationen (Protokollierung, API-Aufrufe, Validierung) gibt Ihr Callback ein [Ausgabeobjekt](#outputs) zurück, das dem Agent mitteilt, was zu tun ist: die Operation zulassen, blockieren, die Eingabe ändern oder Kontext in das Gespräch einfügen.39 Nach dem Ausführen von Operationen (Protokollierung, API-Aufrufe, Validierung) gibt Ihr Callback ein [Ausgabeobjekt](#outputs) zurück, das dem Agenten mitteilt, was zu tun ist: die Operation zulassen, blockieren, die Eingabe ändern oder Kontext in die Konversation einfügen.

40 </Step>40 </Step>

41</Steps>41</Steps>

42 42 


140 ```140 ```

141</CodeGroup>141</CodeGroup>

142 142 

143Wenn Sie eines der Skripte ausführen, versucht Claude, die `.env`-Datei zu erstellen, der Hook verweigert den Tool-Aufruf, und Claudes endgültige Antwort erklärt, dass es keine `.env`-Dateien erstellen kann.143Wenn Sie eines der Skripte ausführen, versucht Claude, die `.env`-Datei zu erstellen, und der Hook verweigert den Tool-Aufruf.

144 144 

145<h2 id="available-hooks">145<h2 id="available-hooks">

146 Verfügbare Hooks146 Verfügbare Hooks


179| `ConfigChange` | Nein | Ja | Konfigurationsdatei ändert sich | Einstellungen dynamisch neu laden |179| `ConfigChange` | Nein | Ja | Konfigurationsdatei ändert sich | Einstellungen dynamisch neu laden |

180| `InstructionsLoaded` | Nein | Ja | Eine `CLAUDE.md`- oder Regeldatei wird in den Kontext geladen | Überprüfen, welche Anweisungsdateien geladen werden |180| `InstructionsLoaded` | Nein | Ja | Eine `CLAUDE.md`- oder Regeldatei wird in den Kontext geladen | Überprüfen, welche Anweisungsdateien geladen werden |

181| `WorktreeCreate` | Nein | Ja | Git Worktree erstellt | Isolierte Workspaces verfolgen |181| `WorktreeCreate` | Nein | Ja | Git Worktree erstellt | Isolierte Workspaces verfolgen |

182| `WorktreeRemove` | Nein | Ja | Git Worktree entfernt | Workspace-Ressourcen bereinigen |182| `WorktreeRemove` | Nein | Ja | Ein durch einen `WorktreeCreate`-Hook erstellter Worktree wird entfernt | Workspace-Ressourcen bereinigen |

183| `CwdChanged` | Nein | Ja | Das Arbeitsverzeichnis ändert sich während einer Sitzung | Umgebungsvariablen pro Verzeichnis neu laden |183| `CwdChanged` | Nein | Ja | Das Arbeitsverzeichnis ändert sich während einer Sitzung | Umgebungsvariablen pro Verzeichnis neu laden |

184| `FileChanged` | Nein | Ja | Eine überwachte Datei wird geändert, erstellt oder gelöscht | Konfiguration neu laden, wenn sich Projektdateien ändern |184| `FileChanged` | Nein | Ja | Eine überwachte Datei wird geändert, erstellt oder gelöscht | Konfiguration neu laden, wenn sich Projektdateien ändern |

185| `DirectoryAdded` | Nein | Ja | Ein Arbeitsverzeichnis wird während einer Sitzung hinzugefügt | Abhängigkeiten für ein während der Sitzung hinzugefügtes Repository installieren |185| `DirectoryAdded` | Nein | Ja | Ein Arbeitsverzeichnis wird während einer Sitzung hinzugefügt | Abhängigkeiten für ein während der Sitzung hinzugefügtes Repository installieren |


249 249 

250* **Eingabedaten:** ein typisiertes Objekt mit Ereignisdetails. Jeder Hook-Typ hat seine eigene Eingabeform. Beispielsweise enthält `PreToolUseHookInput` `tool_name` und `tool_input`, während `NotificationHookInput` `message` enthält. Siehe die vollständigen Typdefinitionen in den [TypeScript](/docs/de/agent-sdk/typescript#hookinput) und [Python](/docs/de/agent-sdk/python#hookinput) SDK-Referenzen.250* **Eingabedaten:** ein typisiertes Objekt mit Ereignisdetails. Jeder Hook-Typ hat seine eigene Eingabeform. Beispielsweise enthält `PreToolUseHookInput` `tool_name` und `tool_input`, während `NotificationHookInput` `message` enthält. Siehe die vollständigen Typdefinitionen in den [TypeScript](/docs/de/agent-sdk/typescript#hookinput) und [Python](/docs/de/agent-sdk/python#hookinput) SDK-Referenzen.

251 * Alle Hook-Eingaben teilen `session_id`, `cwd` und `hook_event_name`.251 * Alle Hook-Eingaben teilen `session_id`, `cwd` und `hook_event_name`.

252 * `agent_id` und `agent_type` werden ausgefüllt, wenn der Hook in einem Subagent ausgelöst wird. In TypeScript befinden sich diese in der Basis-Hook-Eingabe und sind für alle Hook-Typen verfügbar. In Python sind sie optionale Felder auf `PreToolUse`, `PostToolUse`, `PostToolUseFailure` und `PermissionRequest`, und erforderliche Felder auf `SubagentStart` und `SubagentStop`.252 * `agent_id` und `agent_type` werden ausgefüllt, wenn der Hook in einem Subagenten ausgelöst wird. In TypeScript befinden sich diese in der Basis-Hook-Eingabe und sind für alle Hook-Typen verfügbar. In Python sind sie optionale Felder auf `PreToolUse`, `PostToolUse`, `PostToolUseFailure` und `PermissionRequest`, und erforderliche Felder auf `SubagentStart` und `SubagentStop`.

253* **Tool-Verwendungs-ID** (`str | None` / `string | undefined`): korreliert `PreToolUse` und `PostToolUse` Ereignisse für denselben Tool-Aufruf.253* **Tool-Verwendungs-ID** (`str | None` / `string | undefined`): korreliert `PreToolUse` und `PostToolUse` Ereignisse für denselben Tool-Aufruf.

254* **Kontext:** In TypeScript enthält eine `signal` Eigenschaft (`AbortSignal`) für Abbruch. In Python ist dieses Argument für zukünftige Verwendung reserviert.254* **Kontext:** In TypeScript enthält eine `signal` Eigenschaft (`AbortSignal`) für Abbruch. In Python ist dieses Argument für zukünftige Verwendung reserviert.

255 255 


262* **Top-Level-Felder** werden bei jedem Ereignis akzeptiert: `systemMessage` zeigt eine Nachricht für den Benutzer an, und `continue` (`continue_` in Python) bestimmt, ob der Agent nach diesem Hook weiterläuft. Einige Ereignisse verwerfen sie oder liefern sie an anderer Stelle. Jeder [Abschnitt des Ereignisses](/docs/de/hooks#hook-events) auf der Hooks-Seite sagt, wo sie landen.262* **Top-Level-Felder** werden bei jedem Ereignis akzeptiert: `systemMessage` zeigt eine Nachricht für den Benutzer an, und `continue` (`continue_` in Python) bestimmt, ob der Agent nach diesem Hook weiterläuft. Einige Ereignisse verwerfen sie oder liefern sie an anderer Stelle. Jeder [Abschnitt des Ereignisses](/docs/de/hooks#hook-events) auf der Hooks-Seite sagt, wo sie landen.

263* **`hookSpecificOutput`** steuert die aktuelle Operation. Die Felder, die Sie darin setzen, hängen vom Hook-Ereignistyp ab:263* **`hookSpecificOutput`** steuert die aktuelle Operation. Die Felder, die Sie darin setzen, hängen vom Hook-Ereignistyp ab:

264 * Für `PreToolUse` Hooks ist dies der Ort, an dem Sie `permissionDecision` (`"allow"`, `"deny"`, `"ask"` oder `"defer"`), `permissionDecisionReason` und `updatedInput` setzen. Wenn Sie `"defer"` zurückgeben, endet der Turn mit einer Ergebnisnachricht, deren `stop_reason` `"tool_deferred"` ist, sodass Sie den Aufruf [später fortsetzen](/docs/de/hooks#defer-a-tool-call-for-later) können.264 * Für `PreToolUse` Hooks ist dies der Ort, an dem Sie `permissionDecision` (`"allow"`, `"deny"`, `"ask"` oder `"defer"`), `permissionDecisionReason` und `updatedInput` setzen. Wenn Sie `"defer"` zurückgeben, endet der Turn mit einer Ergebnisnachricht, deren `stop_reason` `"tool_deferred"` ist, sodass Sie den Aufruf [später fortsetzen](/docs/de/hooks#defer-a-tool-call-for-later) können.

265 * Für `PostToolUse` Hooks können Sie `additionalContext` setzen, um Informationen zum Tool-Ergebnis anzuhängen. Um die Ausgabe des Tools zu ersetzen, bevor Claude sie sieht, setzen Sie `updatedToolOutput`, das für jedes Tool in beiden SDKs funktioniert. Das ältere `updatedMCPToolOutput` Feld ersetzt nur MCP-Tool-Ausgabe und ist veraltet.265 * Für `PostToolUse` Hooks können Sie `additionalContext` setzen, um Informationen zum Tool-Ergebnis anzuhängen. Um die Ausgabe des Tools zu ersetzen, bevor Claude sie sieht, setzen Sie `updatedToolOutput`, das für jedes Tool in beiden SDKs funktioniert. Das ältere `updatedMCPToolOutput` Feld ersetzt nur MCP-Tool-Ausgabe.

266 * Im TypeScript SDK kann ein `PostToolUse` Callback auch `classifierContext` zurückgeben, eine kurze Notiz über das Ergebnis des Tool-Aufrufs für den Berechtigungsklassifikator des [Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode). Da Ihr Callback in Ihrem eigenen Anwendungsprozess ausgeführt wird, kann der Klassifikator eine Benutzeraussage, die Sie in der Notiz weitergeben, als Benutzerabsicht gewichten. Das Feld erfordert TypeScript Agent SDK v0.3.236 oder später. [Ein Ergebnis für den Auto-Modus-Klassifikator annotieren](/docs/de/hooks#annotate-a-result-for-the-auto-mode-classifier) behandelt die Längenbegrenzung, die Nur-Synchron-Regel und was nicht in die Notiz gehört.266 * Im TypeScript SDK kann ein `PostToolUse` Callback auch `classifierContext` zurückgeben, eine kurze Notiz über das Ergebnis des Tool-Aufrufs für den Berechtigungsklassifikator des [Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode). Da Ihr Callback in Ihrem eigenen Anwendungsprozess ausgeführt wird, kann der Klassifikator eine Benutzeraussage, die Sie in der Notiz weitergeben, als Benutzerabsicht gewichten. Das Feld erfordert TypeScript Agent SDK v0.3.236 oder später. [Ein Ergebnis für den Auto-Modus-Klassifikator annotieren](/docs/de/hooks#annotate-a-result-for-the-auto-mode-classifier) behandelt die Längenbegrenzung, die Nur-Synchron-Regel und was nicht in die Notiz gehört.

267 267 

268Geben Sie `{}` zurück, um die Operation ohne Änderungen zuzulassen. SDK-Callback-Hooks verwenden das gleiche JSON-Ausgabeformat wie [Claude Code Shell-Befehls-Hooks](/docs/de/hooks#json-output), das jedes Feld und ereignisspezifische Option dokumentiert. Für die SDK-Typdefinitionen siehe die [TypeScript](/docs/de/agent-sdk/typescript#synchookjsonoutput) und [Python](/docs/de/agent-sdk/python#synchookjsonoutput) SDK-Referenzen.268Geben Sie `{}` zurück, um die Operation ohne Änderungen zuzulassen. SDK-Callback-Hooks verwenden das gleiche JSON-Ausgabeformat wie [Claude Code Shell-Befehls-Hooks](/docs/de/hooks#json-output), das jedes Feld und ereignisspezifische Option dokumentiert. Für die SDK-Typdefinitionen siehe die [TypeScript](/docs/de/agent-sdk/typescript#synchookjsonoutput) und [Python](/docs/de/agent-sdk/python#synchookjsonoutput) SDK-Referenzen.


275 Asynchrone Ausgabe275 Asynchrone Ausgabe

276</h4>276</h4>

277 277 

278Standardmäßig wartet der Agent darauf, dass Ihr Hook zurückkommt, bevor er fortfährt. Wenn Ihr Hook einen Nebeneffekt ausführt, wie Protokollierung oder Webhook-Versand, und das Verhalten des Agenten nicht beeinflussen muss, können Sie stattdessen eine asynchrone Ausgabe zurückgeben. Dies teilt dem Agent mit, dass er sofort fortfahren soll, ohne auf die Fertigstellung des Hooks zu warten. In diesem Ausschnitt stehen `send_to_logging_service` in Python und `sendToLoggingService` in TypeScript für jede Protokollierungsfunktion, die Sie definieren:278Standardmäßig wartet der Agent darauf, dass Ihr Hook zurückkommt, bevor er fortfährt. Wenn Ihr Hook einen Nebeneffekt ausführt, wie Protokollierung oder Webhook-Versand, und das Verhalten des Agenten nicht beeinflussen muss, können Sie stattdessen eine asynchrone Ausgabe zurückgeben. Dies teilt dem Agenten mit, dass er sofort fortfahren soll, ohne auf die Fertigstellung des Hooks zu warten. In diesem Ausschnitt stehen `send_to_logging_service` in Python und `sendToLoggingService` in TypeScript für jede Protokollierungsfunktion, die Sie definieren:

279 279 

280<CodeGroup>280<CodeGroup>

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


834 834 

835* `PreToolUse`: Claude Code führt den Tool-Aufruf nicht aus, Claude erhält ein Tool-Ergebnis, das besagt, dass der Hook nicht vor seinem Timeout geantwortet hat, und der Turn wird fortgesetzt. Wenn ein anderer `PreToolUse` Hook eine explizite Ablehnung zurückgegeben hat, erhält Claude stattdessen diese Ablehnung. Vor v2.1.210 meldete Claude Code das Timeout an Claude als Benutzerabweisung, was unbeaufsichtigte Sitzungen zum Stoppen und Warten auf Eingabe führte.835* `PreToolUse`: Claude Code führt den Tool-Aufruf nicht aus, Claude erhält ein Tool-Ergebnis, das besagt, dass der Hook nicht vor seinem Timeout geantwortet hat, und der Turn wird fortgesetzt. Wenn ein anderer `PreToolUse` Hook eine explizite Ablehnung zurückgegeben hat, erhält Claude stattdessen diese Ablehnung. Vor v2.1.210 meldete Claude Code das Timeout an Claude als Benutzerabweisung, was unbeaufsichtigte Sitzungen zum Stoppen und Warten auf Eingabe führte.

836* `PostToolUse` und `PostToolUseFailure`: Claude Code behält das Tool-Ergebnis bei und der Turn wird fortgesetzt.836* `PostToolUse` und `PostToolUseFailure`: Claude Code behält das Tool-Ergebnis bei und der Turn wird fortgesetzt.

837* `UserPromptSubmit` und [`UserPromptExpansion`](/docs/de/hooks#userpromptexpansion): Claude Code blockiert die Aufforderung mit einer Nachricht, die den Hook und das Timeout benennt, und die Sitzung wird fortgesetzt. Da ein Callback bei diesen Ereignissen als Richtlinien-Gate fungieren kann, lässt Claude Code niemals eine abgelaufene Aufforderung ungeprüft durch. Vor v2.1.208 endete Claude Code die Abfrage mit `error_during_execution`, wenn ein Callback bei diesen Ereignissen abgelaufen ist.837* `UserPromptSubmit` und [`UserPromptExpansion`](/docs/de/hooks#userpromptexpansion): Claude Code blockiert den Prompt mit einer Nachricht, die den Hook und das Timeout benennt, und die Sitzung wird fortgesetzt. Da ein Callback bei diesen Ereignissen als Richtlinien-Gate fungieren kann, lässt Claude Code niemals einen Prompt mit abgelaufenem Timeout ungeprüft durch. Vor v2.1.208 beendete Claude Code die Abfrage mit `error_during_execution`, wenn ein Callback bei diesen Ereignissen abgelaufen ist.

838* `Stop` und `SubagentStop`: der abgelaufene Callback zählt als Rückgabe ohne Entscheidung. Der Agent oder Subagent stoppt, als hätte dieser Callback es erlaubt, und eine Entscheidung von Ihren anderen Hooks bei dem Ereignis wird immer noch angewendet. Vor Claude Code v2.1.273 zählte ein abgelaufener `Stop` oder `SubagentStop` Callback als fehlgeschlagener Hook-Lauf, und Claude Code verwarf die Entscheidungen Ihrer anderen Hooks bei dem Ereignis.838* `Stop` und `SubagentStop`: der abgelaufene Callback zählt als Rückgabe ohne Entscheidung. Der Agent oder Subagent stoppt, als hätte dieser Callback es erlaubt, und eine Entscheidung von Ihren anderen Hooks bei dem Ereignis wird immer noch angewendet. Vor Claude Code v2.1.273 zählte ein abgelaufener `Stop` oder `SubagentStop` Callback als fehlgeschlagener Hook-Lauf, und Claude Code verwarf die Entscheidungen Ihrer anderen Hooks bei dem Ereignis.

839* `SessionStart`: der abgelaufene Callback zählt als Rückgabe ohne Ausgabe, und die Sitzung wird mit der Ausgabe Ihrer anderen `SessionStart` Hooks fortgesetzt.839* `SessionStart`: der abgelaufene Callback zählt als Rückgabe ohne Ausgabe, und die Sitzung wird mit der Ausgabe Ihrer anderen `SessionStart` Hooks fortgesetzt.

840* `PreModelSwitch`: Claude Code blockiert den Modellwechsel. Ein Hook, der nicht antwortet, hat den Wechsel nicht genehmigt.840* `PreModelSwitch`: Claude Code blockiert den Modellwechsel. Ein Hook, der nicht antwortet, hat den Wechsel nicht genehmigt.


851</h3>851</h3>

852 852 

853* Überprüfen Sie alle `PreToolUse` Hooks auf `permissionDecision: 'deny'` Rückgaben853* Überprüfen Sie alle `PreToolUse` Hooks auf `permissionDecision: 'deny'` Rückgaben

854* Fügen Sie Protokollierung zu Ihren Hooks hinzu, um zu sehen, welche `permissionDecisionReason` sie zurückgeben854* Fügen Sie Logging zu Ihren Hooks hinzu, um zu sehen, welche `permissionDecisionReason` sie zurückgeben

855* Überprüfen Sie, ob Matcher-Muster nicht zu breit sind: ein leerer Matcher gleicht alle Tools ab855* Überprüfen Sie, ob Matcher-Muster nicht zu breit sind: ein leerer Matcher gleicht alle Tools ab

856 856 

857<h3 id="modified-input-not-applied">857<h3 id="modified-input-not-applied">


878 Sitzungs-Hooks nicht in Python verfügbar878 Sitzungs-Hooks nicht in Python verfügbar

879</h3>879</h3>

880 880 

881`SessionStart` und `SessionEnd` können als SDK-Callback-Hooks in TypeScript registriert werden, sind aber im Python SDK nicht verfügbar, da sein `HookEvent` Typ sie auslässt. In Python sind sie nur als [Shell-Befehls-Hooks](/docs/de/hooks#hook-events) verfügbar, die in Einstellungsdateien wie `.claude/settings.json` definiert sind. Um Shell-Befehls-Hooks aus Ihrer SDK-Anwendung zu laden, schließen Sie die entsprechende Einstellungsquelle mit [`setting_sources`](/docs/de/agent-sdk/python#settingsource) oder [`settingSources`](/docs/de/agent-sdk/typescript#settingsource) ein:881`SessionStart` und `SessionEnd` können als SDK-Callback-Hooks in TypeScript registriert werden, sind aber im Python SDK nicht verfügbar, da sein `HookEvent` Typ sie auslässt. In Python sind sie nur als [Shell-Befehls-Hooks](/docs/de/hooks#hook-events) verfügbar, die in Einstellungsdateien wie `.claude/settings.json` definiert sind. Welche Einstellungsdateien Ihre SDK-Anwendung lädt, hängt von [`setting_sources`](/docs/de/agent-sdk/python#settingsource) bzw. [`settingSources`](/docs/de/agent-sdk/typescript#settingsource) ab. Wenn Sie diese Option festlegen, schließen Sie die Quelle ein, die die Hooks enthält:

882 882 

883<CodeGroup>883<CodeGroup>

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


897Um stattdessen Initialisierungslogik als Python SDK-Callback auszuführen, verwenden Sie die erste Nachricht von `client.receive_response()` als Auslöser.897Um stattdessen Initialisierungslogik als Python SDK-Callback auszuführen, verwenden Sie die erste Nachricht von `client.receive_response()` als Auslöser.

898 898 

899<h3 id="subagent-permission-prompts-multiplying">899<h3 id="subagent-permission-prompts-multiplying">

900 Subagent-Berechtigungsaufforderungen vervielfachen sich900 Berechtigungsabfragen von Subagenten vervielfachen sich

901</h3>901</h3>

902 902 

903Beim Spawnen mehrerer Subagents kann jeder einzelne Berechtigungen separat anfordern. Um wiederholte Aufforderungen zu vermeiden, verwenden Sie `PreToolUse` Hooks, um spezifische Tools automatisch zu genehmigen, oder konfigurieren Sie Berechtigungsregeln, die Subagents [vom übergeordneten Gespräch erben](/docs/de/sub-agents#permission-modes).903Beim Starten mehrerer Subagenten kann jeder einzelne für seine eigenen Tool-Aufrufe separat Berechtigungen anfordern. Um wiederholte Abfragen zu vermeiden, verwenden Sie `PreToolUse` Hooks, um spezifische Tools automatisch zu genehmigen, oder konfigurieren Sie Berechtigungsregeln, die Subagenten [von der übergeordneten Konversation erben](/docs/de/sub-agents#permission-modes).

904 904 

905<h3 id="recursive-hook-loops-with-subagents">905<h3 id="recursive-hook-loops-with-subagents">

906 Rekursive Hook-Schleifen mit Subagents906 Rekursive Hook-Schleifen mit Subagenten

907</h3>907</h3>

908 908 

909Ein `UserPromptSubmit` Hook, der Subagents spawnt, kann unendliche Schleifen erzeugen, wenn diese Subagents denselben Hook auslösen. Um dies zu verhindern:909Ein `UserPromptSubmit` Hook, der Subagenten startet, kann unendliche Schleifen erzeugen, wenn diese Subagenten denselben Hook auslösen. Um dies zu verhindern:

910 910 

911* Verwenden Sie eine gemeinsame Variable oder Sitzungsstatus, um zu verfolgen, ob Sie bereits in einem Subagent sind911* Verwenden Sie eine gemeinsame Variable oder Sitzungsstatus, um zu verfolgen, ob Sie sich bereits in einem Subagenten befinden

912* Beschränken Sie Hooks so, dass sie nur für die Top-Level-Agent-Sitzung ausgeführt werden912* Beschränken Sie Hooks so, dass sie nur für die Top-Level-Agent-Sitzung ausgeführt werden

913 913 

914<h3 id="systemmessage-not-appearing-in-output">914<h3 id="systemmessage-not-appearing-in-output">

Details

194 `ToolAnnotations`194 `ToolAnnotations`

195</h4>195</h4>

196 196 

197Verhaltenshinweise für ein Tool, die als `annotations`-Argument von [`tool()`](#tool) übergeben werden. `ToolAnnotations` erweitert die `mcp.types.ToolAnnotations` des MCP SDK um ein `maxResultSizeChars`-Feld, und Sie können jeden Hinweis in camelCase oder snake\_case schreiben: `ToolAnnotations(readOnlyHint=True)` und `ToolAnnotations(read_only_hint=True)` sind gleichwertig. Sie können auch überall dort, wo das SDK Anmerkungen akzeptiert, ein einfaches `mcp.types.ToolAnnotations` übergeben.197Verhaltenshinweise für ein Tool, die als `annotations`-Argument von [`tool()`](#tool) übergeben werden. `ToolAnnotations` erweitert die `mcp.types.ToolAnnotations` des MCP SDK um ein `maxResultSizeChars`-Feld, und Sie können jeden Hinweis in camelCase oder snake\_case schreiben: `ToolAnnotations(readOnlyHint=True)` und `ToolAnnotations(read_only_hint=True)` sind gleichwertig. Um einen Hinweis aus dem Objekt wieder auszulesen, verwenden Sie die Schreibweise, die Ihr installiertes `mcp`-Paket deklariert: `.readOnlyHint` unter `mcp` 1.x und `.read_only_hint` unter 2.x, während `.maxResultSizeChars` unter beiden funktioniert. Sie können auch überall dort, wo das SDK Anmerkungen akzeptiert, ein einfaches `mcp.types.ToolAnnotations` übergeben.

198 198 

199Die snake\_case-Namen und das typisierte `maxResultSizeChars`-Feld erfordern Python Agent SDK 0.2.140 oder später. Versionen 0.1.31 bis 0.2.139 exportieren `mcp.types.ToolAnnotations` unverändert erneut. In Versionen 0.1.55 bis 0.2.139 können Sie `maxResultSizeChars` immer noch als Schlüsselwortargument übergeben: Die MCP-Klasse akzeptiert zusätzliche Felder, und das SDK leitet den Wert an Claude Code weiter.199Die snake\_case-Namen und das typisierte `maxResultSizeChars`-Feld erfordern Python Agent SDK 0.2.140 oder später. Versionen 0.1.31 bis 0.2.139 exportieren `mcp.types.ToolAnnotations` unverändert erneut. In Versionen 0.1.55 bis 0.2.139 können Sie `maxResultSizeChars` immer noch als Schlüsselwortargument übergeben: Die MCP-Klasse akzeptiert zusätzliche Felder, und das SDK leitet den Wert an Claude Code weiter.

200 200 


1465| `enabled` | `type`, `budget_tokens`, `display` | Aktivieren Sie Thinking mit einem bestimmten Token-Budget |1465| `enabled` | `type`, `budget_tokens`, `display` | Aktivieren Sie Thinking mit einem bestimmten Token-Budget |

1466| `disabled` | `type` | Deaktivieren Sie Thinking |1466| `disabled` | `type` | Deaktivieren Sie Thinking |

1467 1467 

1468Das optionale Feld `display` steuert, ob Thinking-Text `"summarized"` oder `"omitted"` zurückgegeben wird. Bei Claude Opus 4.7 und später ist der API-Standard `"omitted"`, setzen Sie daher `"summarized"`, um Thinking-Inhalte in [`ThinkingBlock`](#thinkingblock)-Ausgaben zu erhalten. Claude Code sendet `display` nicht an Amazon Bedrock oder die Agent Platform von Google Cloud, daher geben Opus 4.7 und später bei diesen Anbietern leere `ThinkingBlock`-Ausgaben zurück, auch wenn Sie `display` auf `"summarized"` setzen.1468Das optionale Feld `display` steuert, ob Thinking-Text `"summarized"` oder `"omitted"` zurückgegeben wird. Bei Claude Opus 4.7 und später ist der API-Standard `"omitted"`, setzen Sie daher `"summarized"`, um Thinking-Inhalte in [`ThinkingBlock`](#thinkingblock)-Ausgaben zu erhalten. Claude Code lässt `display` bei Anfragen an einige Anbieter weg, etwa Amazon Bedrock und die Agent Platform von Google Cloud. Bei diesen Anbietern geben Opus 4.7 und später leere `ThinkingBlock`-Ausgaben zurück, auch wenn Sie `display` auf `"summarized"` setzen.

1469 1469 

1470Da dies `TypedDict`-Klassen sind, sind sie zur Laufzeit einfache Dicts. Konstruieren Sie sie entweder als Dict-Literale oder rufen Sie die Klasse wie einen Konstruktor auf; beide Varianten erzeugen ein `dict`. Greifen Sie auf Felder mit `config["budget_tokens"]` zu, nicht mit `config.budget_tokens`:1470Da dies `TypedDict`-Klassen sind, sind sie zur Laufzeit einfache Dicts. Konstruieren Sie sie entweder als Dict-Literale oder rufen Sie die Klasse wie einen Konstruktor auf; beide Varianten erzeugen ein `dict`. Greifen Sie auf Felder mit `config["budget_tokens"]` zu, nicht mit `config.budget_tokens`:

1471 1471 


1875| `maxOutputTokens` | `int` | Maximale Ausgabe-Token-Grenze für dieses Modell. |1875| `maxOutputTokens` | `int` | Maximale Ausgabe-Token-Grenze für dieses Modell. |

1876| `canonicalModel` | `str` | Kanonische Modell-ID, die für die Preissuche verwendet wird. Kann sich vom Raw-Modell-String unterscheiden, nach dem der Eintrag verschlüsselt ist, wie eine anbieter-spezifische ID oder ein Alias. Nicht immer vorhanden. |1876| `canonicalModel` | `str` | Kanonische Modell-ID, die für die Preissuche verwendet wird. Kann sich vom Raw-Modell-String unterscheiden, nach dem der Eintrag verschlüsselt ist, wie eine anbieter-spezifische ID oder ein Alias. Nicht immer vorhanden. |

1877| `provider` | `str` | API-Anbieter, der dieses Modell bereitgestellt hat, wie `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` oder `gateway`. Nicht immer vorhanden. |1877| `provider` | `str` | API-Anbieter, der dieses Modell bereitgestellt hat, wie `firstParty`, `bedrock`, `vertex`, `foundry`, `anthropicAws`, `mantle` oder `gateway`. Nicht immer vorhanden. |

1878| `costBasis` | `str` | Preistabelle, nach der die letzte Anfrage dieses Modells bepreist wurde: `list` für den Listenpreis, `managed` für eine [`modelPricing`](/docs/de/settings-reference#modelpricing)-Tabelle oder `unknown`, wenn keine der beiden zur Modell-ID passte. Nicht immer vorhanden und nicht auf dem TypedDict deklariert, daher lesen Sie es mit `.get()`. Erfordert Claude Code v2.1.246 oder später. |

1878 1879 

1879<h3 id="streamevent">1880<h3 id="streamevent">

1880 `StreamEvent`1881 `StreamEvent`


2166 """Base error for Claude SDK."""2167 """Base error for Claude SDK."""

2167```2168```

2168 2169 

2169Wenn eine einmalige `query()` mit einem Fehlerergebnis endet, beispielsweise ein Turn-Limit-Fehler, löst das SDK eine [`ResultError`](#resulterror) aus, nachdem die endgültige Ergebnismeldung ausgegeben wurde. Python Agent SDK-Versionen vor 0.2.140 lösten eine einfache `Exception` aus, die keine `ClaudeSDKError`-Unterklasse war.2170Wenn eine einmalige `query()` mit einem Fehlerergebnis endet, beispielsweise ein Turn-Limit-Fehler, löst das SDK eine [`ResultError`](#resulterror) aus.

2170 2171 

2171<h3 id="clinotfounderror">2172<h3 id="clinotfounderror">

2172 `CLINotFoundError`2173 `CLINotFoundError`


2216 `ResultError`2217 `ResultError`

2217</h3>2218</h3>

2218 2219 

2219Wird ausgelöst, nachdem die endgültige [`ResultMessage`](#resultmessage) ausgegeben wurde, wenn der Claude Code-Prozess beendet wird, weil die Ausführung mit einem Fehlerergebnis endete, z. B. ein Turn-Limit-Fehler oder ein API-Fehler. `ResultError` ist eine Unterklasse von `ProcessError`, daher fängt ein vorhandener `except ProcessError`-Handler auch diesen ab. Seine Attribute enthalten die Felder dieser Ergebnismeldung, sodass Sie verzweigen können, warum die Ausführung fehlgeschlagen ist, ohne den Meldungstext zu analysieren. Erfordert Python Agent SDK 0.2.140 oder später.2220Wird ausgelöst, wenn der Claude Code-Prozess beendet wird, weil die Ausführung mit einer Fehler-[Ergebnismeldung](#resultmessage) endete, z. B. ein Turn-Limit-Fehler oder ein API-Fehler. `ResultError` ist eine Unterklasse von `ProcessError`, daher fängt ein vorhandener `except ProcessError`-Handler auch diesen ab. Seine Attribute enthalten die Felder dieser Ergebnismeldung, sodass Sie verzweigen können, warum die Ausführung fehlgeschlagen ist, ohne den Meldungstext zu analysieren. Erfordert Python Agent SDK 0.2.140 oder später.

2220 2221 

2221```python theme={null}2222```python theme={null}

2222class ResultError(ProcessError):2223class ResultError(ProcessError):


2649 hookEventName: Literal["PostToolUse"]2650 hookEventName: Literal["PostToolUse"]

2650 additionalContext: NotRequired[str]2651 additionalContext: NotRequired[str]

2651 updatedToolOutput: NotRequired[Any]2652 updatedToolOutput: NotRequired[Any]

2652 updatedMCPToolOutput: NotRequired[Any] # Deprecated: use updatedToolOutput, which works for all tools2653 updatedMCPToolOutput: NotRequired[Any] # MCP tools only. Prefer updatedToolOutput, which works for all tools

2653 2654 

2654 2655 

2655class PostToolUseFailureHookSpecificOutput(TypedDict):2656class PostToolUseFailureHookSpecificOutput(TypedDict):


2767 Eingabe-/Ausgabetypen für Tools2768 Eingabe-/Ausgabetypen für Tools

2768</h2>2769</h2>

2769 2770 

2770Dokumentation der Eingabe-/Ausgabeschemas für alle integrierten Claude Code-Tools. Obwohl das Python SDK diese nicht als Typen exportiert, stellen sie die Struktur von Tool-Eingaben und -Ausgaben in Nachrichten dar.2771Dokumentation der Eingabe-/Ausgabeschemas für integrierte Claude Code-Tools. Obwohl das Python SDK diese nicht als Typen exportiert, stellen sie die Struktur von Tool-Eingaben und -Ausgaben in Nachrichten dar.

2771 2772 

2772Jede angezeigte Ausgabe ist der Wert, den Sie aus [`UserMessage.tool_use_result`](#usermessage) für dieses Tool lesen. Schlüsselnamen erscheinen genau so, wie Claude Code sie ausgibt. Ein Schlüssel, der mit `| None` annotiert ist und einen Kommentar „vorhanden wenn“ oder „optional“ hat, wird weggelassen, wenn er nicht zutrifft.2773Jede angezeigte Ausgabe ist der Wert, den Sie aus [`UserMessage.tool_use_result`](#usermessage) für dieses Tool lesen. Schlüsselnamen erscheinen genau so, wie Claude Code sie ausgibt. Ein Schlüssel, der mit `| None` annotiert ist und einen Kommentar „vorhanden wenn“ oder „optional“ hat, wird weggelassen, wenn er nicht zutrifft.

2773 2774 

Details

60 60 

61Um strukturierte Ausgaben zu verwenden, definieren Sie ein [JSON Schema](https://json-schema.org/understanding-json-schema/about), das die Form der gewünschten Daten beschreibt, und übergeben Sie es dann an `query()` über die Option `outputFormat` (TypeScript) oder `output_format` (Python). Wenn der Agent fertig ist, enthält die Ergebnismeldung ein Feld `structured_output` mit validierten Daten, die Ihrem Schema entsprechen.61Um strukturierte Ausgaben zu verwenden, definieren Sie ein [JSON Schema](https://json-schema.org/understanding-json-schema/about), das die Form der gewünschten Daten beschreibt, und übergeben Sie es dann an `query()` über die Option `outputFormat` (TypeScript) oder `output_format` (Python). Wenn der Agent fertig ist, enthält die Ergebnismeldung ein Feld `structured_output` mit validierten Daten, die Ihrem Schema entsprechen.

62 62 

63Das folgende Beispiel fordert den Agenten auf, Anthropic zu recherchieren und den Firmennamen, das Gründungsjahr und den Hauptsitz als strukturierte Ausgabe zurückzugeben.63Bevor Sie die Beispiele auf dieser Seite ausführen, installieren Sie das Claude Agent SDK, indem Sie dem [Schnellstart](/docs/de/agent-sdk/quickstart#setup) folgen. Das folgende Beispiel fordert den Agenten auf, Anthropic zu recherchieren und den Firmennamen, das Gründungsjahr und den Hauptsitz als strukturierte Ausgabe zurückzugeben.

64 64 

65<CodeGroup>65<CodeGroup>

66 ```typescript TypeScript theme={null}66 ```typescript TypeScript theme={null}


390 Fehlerbehandlung390 Fehlerbehandlung

391</h2>391</h2>

392 392 

393Die Generierung strukturierter Ausgaben kann fehlschlagen, wenn der Agent kein gültiges JSON erzeugen kann, das Ihrem Schema entspricht. Dies geschieht normalerweise, wenn das Schema für die Aufgabe zu komplex ist, die Aufgabe selbst mehrdeutig ist, oder der Agent sein Wiederholungslimit beim Versuch, Validierungsfehler zu beheben, erreicht. Es kann auch ohne Validierungsfehler geschehen: Ein [Modell-Fallback](/docs/de/model-config#automatic-model-fallback) kann eine bereits abgeschlossene Ausgabe mitten im Stream zurückziehen, und wenn kein erfolgreicher Wiederholungsversuch sie ersetzt, endet der Durchlauf mit demselben Fehler. Überprüfen Sie die `errors`-Liste der Ergebnismeldung, um die beiden Ursachen auseinanderzuhalten, bevor Sie Ihr Schema debuggen.393Die Generierung strukturierter Ausgaben kann fehlschlagen, wenn der Agent kein gültiges JSON erzeugen kann, das Ihrem Schema entspricht. Dies geschieht normalerweise, wenn das Schema für die Aufgabe zu komplex ist, die Aufgabe selbst mehrdeutig ist, oder der Agent sein Wiederholungslimit beim Versuch, Validierungsfehler zu beheben, erreicht. Es kann auch ohne Validierungsfehler geschehen: Ein [Modell-Fallback](/docs/de/model-config#automatic-model-fallback) kann eine bereits abgeschlossene Ausgabe mitten im Stream zurückziehen, und wenn kein erfolgreicher Wiederholungsversuch sie ersetzt, endet der Durchlauf mit demselben Fehler. Überprüfen Sie die `errors`-Liste der Fehler-Ergebnismeldung, um die beiden Ursachen auseinanderzuhalten, bevor Sie Ihr Schema debuggen.

394 394 

395Wenn ein Fehler auftritt, hat die Ergebnismeldung einen `subtype`, der angibt, was schief gelaufen ist:395Wenn ein Fehler auftritt, hat die Ergebnismeldung einen `subtype`, der angibt, was schief gelaufen ist:

396 396 


399| `success` | Ausgabe wurde erfolgreich generiert und validiert |399| `success` | Ausgabe wurde erfolgreich generiert und validiert |

400| `error_max_structured_output_retries` | Keine gültige Ausgabe überstand mehrere Versuche (Validierungsfehler oder ein Modell-Fallback-Rückzug ohne erfolgreichen Wiederholungsversuch) |400| `error_max_structured_output_retries` | Keine gültige Ausgabe überstand mehrere Versuche (Validierungsfehler oder ein Modell-Fallback-Rückzug ohne erfolgreichen Wiederholungsversuch) |

401 401 

402Ein Ergebnis kann auch mit dem Subtype `success` enden, aber ohne `structured_output`-Wert, beispielsweise wenn der Durchlauf endet, ohne dass der Agent eine strukturierte Ausgabe erzeugt. Behandeln Sie diesen Fall auch als Fehler. Der Troubleshooting-Eintrag [structured\_output ist None, aber das Ergebnis sagt success](/docs/de/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) behandelt diesen Fall. Das folgende Beispiel behandelt ein Ergebnis als erfolgreich nur, wenn der `subtype` `success` ist und `structured_output` vorhanden ist, und behandelt jedes andere Ergebnis als Fehler:402Ein Ergebnis kann auch mit dem Subtype `success` enden, aber ohne `structured_output`-Wert, beispielsweise wenn der Durchlauf endet, ohne dass der Agent eine strukturierte Ausgabe erzeugt. Behandeln Sie diesen Fall auch als Fehler. Der Eintrag zur Fehlerbehebung [structured\_output ist None, aber das Ergebnis sagt success](/docs/de/agent-sdk/troubleshooting#structured_output-is-none-but-the-result-says-success) behandelt diesen Fall. Das folgende Beispiel behandelt ein Ergebnis als erfolgreich nur, wenn der `subtype` `success` ist und `structured_output` vorhanden ist, und behandelt jedes andere Ergebnis als Fehler:

403 403 

404<CodeGroup>404<CodeGroup>

405 ```typescript TypeScript theme={null}405 ```typescript TypeScript theme={null}

Details

181});181});

182 182 

183spare.claimed.catch((error: Error) => {183spare.claimed.catch((error: Error) => {

184 // Wenn die Nachricht nicht mit "option_not_applied" beginnt, wurde die Eingabeaufforderung nicht ausgeführt:184 // Wenn die Nachricht nicht mit "option_not_applied" beginnt, wurde der Prompt nicht ausgeführt:

185 // starten Sie diese Sitzung stattdessen mit query()185 // starten Sie diese Sitzung stattdessen mit query()

186 console.error("Claim failed:", error.message);186 console.error("Claim failed:", error.message);

187});187});

188 188 

189for await (const message of claimedQuery) {189try {

190 for await (const message of claimedQuery) {

190 console.log(message);191 console.log(message);

192 }

193} catch (error) {

194 // Nach einem abgelehnten Claim wirft die beanspruchte Query einen Fehler, sobald sie das Fehlerergebnis ausgegeben hat

195 console.error(`Session ended with an error: ${error}`);

191}196}

192```197```

193 198 


717| `accountInfo()` | Gibt Kontoinformationen zurück |722| `accountInfo()` | Gibt Kontoinformationen zurück |

718| `reconnectMcpServer(serverName)` | Verbinden Sie einen MCP-Server nach Name erneut. Wenn der Name auch einem Eintrag in einer Einstellungsdatei wie `.mcp.json` oder `~/.claude.json` entspricht, verbindet Claude Code den Server, den Sie über [`mcpServers`](#options) oder `setMcpServers()` konfiguriert haben, nicht den Einstellungsdatei-Eintrag. Diese Auflösungsreihenfolge erfordert Claude Code v2.1.257 oder später |723| `reconnectMcpServer(serverName)` | Verbinden Sie einen MCP-Server nach Name erneut. Wenn der Name auch einem Eintrag in einer Einstellungsdatei wie `.mcp.json` oder `~/.claude.json` entspricht, verbindet Claude Code den Server, den Sie über [`mcpServers`](#options) oder `setMcpServers()` konfiguriert haben, nicht den Einstellungsdatei-Eintrag. Diese Auflösungsreihenfolge erfordert Claude Code v2.1.257 oder später |

719| `toggleMcpServer(serverName, enabled)` | Einen MCP-Server anhand des Namens aktivieren oder deaktivieren, mit derselben Namensauflösung wie `reconnectMcpServer()`. Das Deaktivieren eines Servers trennt die Verbindung und entfernt seine Tools. Unter [`toggleMcpServer()`](#togglemcpserver) erfahren Sie, welche Claude Code-Version dafür für die einzelnen Serverarten erforderlich ist |724| `toggleMcpServer(serverName, enabled)` | Einen MCP-Server anhand des Namens aktivieren oder deaktivieren, mit derselben Namensauflösung wie `reconnectMcpServer()`. Das Deaktivieren eines Servers trennt die Verbindung und entfernt seine Tools. Unter [`toggleMcpServer()`](#togglemcpserver) erfahren Sie, welche Claude Code-Version dafür für die einzelnen Serverarten erforderlich ist |

720| `setMcpServers(servers)` | Ersetzen Sie dynamisch die Menge der MCP-Server für diese Sitzung. Wird mit einem [`McpSetServersResult`](#mcpsetserversresult) aufgelöst, das benennt, welche Server hinzugefügt und entfernt wurden, und alle Fehler |725| `setMcpServers(servers)` | Die MCP-Server ersetzen, die diese Methode verwaltet: über sie hinzugefügte Server und [In-Process-SDK-Server](#createsdkmcpserver). Wird mit einem [`McpSetServersResult`](#mcpsetserversresult) aufgelöst, das nennt, welche Server hinzugefügt und entfernt wurden, sowie etwaige Fehler; dieser Abschnitt beschreibt, welche anderen Server verbunden bleiben |

721| `readMcpResource(serverName, uri)` | *Alpha.* Liest eine MCP Apps `ui://`-Ressource von einem verbundenen MCP-Server, damit Ihre Anwendung das Widget eines Tools rendern kann. Wird mit einer [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse) aufgelöst. Erfordert TypeScript Agent SDK v0.3.280 oder später |726| `readMcpResource(serverName, uri)` | *Alpha.* Liest eine MCP Apps `ui://`-Ressource von einem verbundenen MCP-Server, damit Ihre Anwendung das Widget eines Tools rendern kann. Wird mit einer [`SDKControlMcpReadResourceResponse`](#sdkcontrolmcpreadresourceresponse) aufgelöst. Erfordert TypeScript Agent SDK v0.3.280 oder später |

722| `streamInput(stream)` | Streamen Sie Eingabenachrichten zur Abfrage für Multi-Turn-Gespräche |727| `streamInput(stream)` | Streamen Sie Eingabenachrichten zur Abfrage für Multi-Turn-Gespräche |

723| `stopTask(taskId)` | Beenden Sie eine laufende Hintergrund-Task nach ID |728| `stopTask(taskId)` | Beenden Sie eine laufende Hintergrund-Task nach ID |


844 849 

845`options.cwd` ist erforderlich. Eine Beanspruchung kann auch `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, eine Flag-Einstellungs-Überlagerung in `settings`, `appendSystemPrompt`, `title`, `agents` und sitzungsspezifische Token in `env` setzen.850`options.cwd` ist erforderlich. Eine Beanspruchung kann auch `additionalDirectories`, `model`, `permissionMode`, `maxThinkingTokens`, eine Flag-Einstellungs-Überlagerung in `settings`, `appendSystemPrompt`, `title`, `agents` und sitzungsspezifische Token in `env` setzen.

846 851 

847Claude Code kann eine Beanspruchung verweigern, z. B. für einen Ordner, der nicht existiert, oder einen, dessen Projekteinstellungen `env`, `agent` oder `model` setzen. Wenn `claimed` mit einer Nachricht ablehnt, die mit `option_not_applied` beginnt, läuft die Sitzung ohne das `model` oder `maxThinkingTokens`, das Sie angefordert haben. Nach jeder anderen Ablehnung ist Ihre Eingabeaufforderung nicht gelaufen, daher starten Sie die Sitzung stattdessen mit `query()`.852Claude Code kann eine Beanspruchung verweigern, zum Beispiel für einen Ordner, der nicht existiert, oder für einen, dessen Projekteinstellungen `env`, `agent` oder `model` setzen. Nach einer Verweigerung erhält ein Prompt, den `claim()` bereits gesendet hat, ein Fehlerergebnis, dessen Text mit `not_claimed` beginnt, und die zurückgegebene Query löst anschließend eine Ausnahme aus. Umschließen Sie die Schleife der Query mit einem try-Block, um nach der Ausnahme fortzufahren. Wenn `claimed` mit einer Meldung abgelehnt wird, die mit `option_not_applied` beginnt, läuft die Sitzung ohne das angeforderte `model` oder `maxThinkingTokens`. Nach jeder anderen Ablehnung wurde Ihr Prompt nicht ausgeführt; starten Sie die Sitzung daher stattdessen mit `query()`.

848 853 

849<h3 id="sdkcontrolinitializeresponse">854<h3 id="sdkcontrolinitializeresponse">

850 `SDKControlInitializeResponse`855 `SDKControlInitializeResponse`


1337| `mcpServer` | `{ name: string; source: string }` | Für ein `mcp__*`-Tool, der MCP-Server, der es bedient, und woher diese Server-Definition kam, mit den Feldern von [`McpServerProvenance`](#mcpserverprovenance). Abwesend für andere Tools. Erfordert Agent SDK v0.3.274 oder später |1342| `mcpServer` | `{ name: string; source: string }` | Für ein `mcp__*`-Tool, der MCP-Server, der es bedient, und woher diese Server-Definition kam, mit den Feldern von [`McpServerProvenance`](#mcpserverprovenance). Abwesend für andere Tools. Erfordert Agent SDK v0.3.274 oder später |

1338| `decisionReason` | `string` | Erklärt, warum diese Berechtigungsanfrage ausgelöst wurde |1343| `decisionReason` | `string` | Erklärt, warum diese Berechtigungsanfrage ausgelöst wurde |

1339| `defaultToNo` | `boolean` | Wenn `true`, muss ein einzelner Tippfehler diese Anfrage nicht genehmigen: öffnen Sie Ihre Eingabeaufforderung auf ihrer Ablehnungsoption, wählen Sie nicht vorab genehmigen, und bieten Sie keine Eintasten-Genehmigungsverknüpfung. Erfordert Agent SDK v0.3.268 oder später |1344| `defaultToNo` | `boolean` | Wenn `true`, muss ein einzelner Tippfehler diese Anfrage nicht genehmigen: öffnen Sie Ihre Eingabeaufforderung auf ihrer Ablehnungsoption, wählen Sie nicht vorab genehmigen, und bieten Sie keine Eintasten-Genehmigungsverknüpfung. Erfordert Agent SDK v0.3.268 oder später |

1340| `suppressAlwaysAllowRule` | `boolean` | Wenn `true`, bieten Sie keine persistente Always-Allow-Wahl für diese Anfrage, da die Regel, die sie schreiben würde, mehr als die Aktion der Anfrage selbst gewährt. Erfordert Agent SDK v0.3.268 oder später |1345| `suppressAlwaysAllowRule` | `boolean` | Wenn `true`, bieten Sie für diese Anfrage keine dauerhafte Option „Immer erlauben“ an. Erfordert Agent SDK v0.3.268 oder höher |

1341| `toolUseID` | `string` | Eindeutige Kennung für diesen spezifischen Tool-Aufruf innerhalb der Assistent-Nachricht |1346| `toolUseID` | `string` | Eindeutige Kennung für diesen spezifischen Tool-Aufruf innerhalb der Assistent-Nachricht |

1342| `agentID` | `string` | Wenn innerhalb eines Sub-Agenten läuft, die ID des Sub-Agenten |1347| `agentID` | `string` | Wenn innerhalb eines Sub-Agenten läuft, die ID des Sub-Agenten |

1343| `requestId` | `string` | Die `request_id` des `control_request`-Umschlags. Eine `control_response`, die Ihre Anwendung außerhalb des SDK sendet, z. B. ein signierter HTTP POST, muss diesen Wert widerspiegeln, damit der Claude Code-Prozess die Antwort mit der Anfrage abgleichen kann |1348| `requestId` | `string` | Die `request_id` des `control_request`-Umschlags. Eine `control_response`, die Ihre Anwendung außerhalb des SDK sendet, z. B. ein signierter HTTP POST, muss diesen Wert widerspiegeln, damit der Claude Code-Prozess die Antwort mit der Anfrage abgleichen kann |


5459 | { type: "disabled" }; // Kein Extended Thinking5464 | { type: "disabled" }; // Kein Extended Thinking

5460```5465```

5461 5466 

5462Das optionale `display`-Feld steuert, ob Thinking-Text `"summarized"` oder `"omitted"` zurückgegeben wird. Bei Claude Opus 4.7 und später ist der API-Standard `"omitted"`, daher setzen Sie `"summarized"`, um Thinking-Inhalte in `thinking`-Blöcken zu erhalten. Claude Code sendet `display` nicht an Amazon Bedrock oder Google Cloud's Agent Platform, daher geben Opus 4.7 und später auf diesen Anbietern leere `thinking`-Blöcke zurück, auch wenn Sie `display` auf `"summarized"` setzen.5467Das optionale `display`-Feld steuert, ob Thinking-Text `"summarized"` oder `"omitted"` zurückgegeben wird. Bei Claude Opus 4.7 und später ist der API-Standard `"omitted"`, daher setzen Sie `"summarized"`, um Thinking-Inhalte in `thinking`-Blöcken zu erhalten. Claude Code lässt `display` bei Anfragen an einige Anbieter weg, etwa Amazon Bedrock und Google Clouds Agent Platform. Bei diesen Anbietern geben Opus 4.7 und später leere `thinking`-Blöcke zurück, auch wenn Sie `display` auf `"summarized"` setzen.

5463 5468 

5464<h3 id="spawnedprocess">5469<h3 id="spawnedprocess">

5465 `SpawnedProcess`5470 `SpawnedProcess`


5530 5535 

5531Wenn Sie `setMcpServers()` aufrufen, wendet Claude Code diese Regeln an:5536Wenn Sie `setMcpServers()` aufrufen, wendet Claude Code diese Regeln an:

5532 5537 

5533* **Server, die der Aufruf nicht benennt**: Claude Code hält von Plugins bereitgestellte Server am Laufen. Erfordert Agent SDK v0.3.210 oder später.5538* **Server, die der Aufruf nicht benennt**: Außerhalb einer [Cloud-Sitzung](/docs/de/claude-code-on-the-web) trennt Claude Code die Server, die ein früherer `setMcpServers()`-Aufruf hinzugefügt hat, sowie die In-Process-SDK-Server und listet sie in `removed` auf. Andere Server laufen weiter und werden nicht in `removed` aufgeführt, darunter die Stdio-, HTTP- und SSE-Server aus der [`mcpServers`](#options)-Option, Server aus Einstellungsdateien und von Plugins bereitgestellte Server.

5534* **Server, die der Aufruf benennt**: außer für integrierte Server, die die CLI beim Start gestartet hat, ersetzt Claude Code einen laufenden Server nur, wenn sich seine Konfiguration von der unterscheidet, die Sie übergeben haben.5539* **Server, die der Aufruf benennt**: Claude Code ersetzt einen Stdio-, HTTP- oder SSE-Server, den ein früherer `setMcpServers()`-Aufruf hinzugefügt hat, nur, wenn sich seine Konfiguration von der unterscheidet, die Sie übergeben haben. Ein In-Process-SDK-Server, der bereits unter diesem Namen registriert ist, bleibt unverändert; um einen auszutauschen, lassen Sie ihn in einem Aufruf weg und fügen Sie ihn im nächsten hinzu.

5535* **Integrierte Server, die die CLI beim Start gestartet hat**: Wenn der Aufruf einen benennt, verwirft Claude Code diesen Eintrag und meldet ihn in `errors`.5540* **Integrierte Server, die die CLI beim Start gestartet hat**: Wenn der Aufruf einen benennt, verwirft Claude Code diesen Eintrag und meldet ihn in `errors`.

5536 5541 

5537Das Promise wird aufgelöst, nachdem neu hinzugefügte Stdio-, HTTP- und SSE-Server verbunden oder fehlgeschlagen sind, daher sind Tools von Servern, die verbunden sind, im nächsten Turn verfügbar.5542Das Promise wird aufgelöst, nachdem neu hinzugefügte Stdio-, HTTP- und SSE-Server verbunden oder fehlgeschlagen sind, daher sind Tools von Servern, die verbunden sind, im nächsten Turn verfügbar.

agent-view.md +1 −0

Details

819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Eine Sitzung löschen, deren Löschung wegen nicht gepushter Commits abgelehnt wurde, und dabei den Worktree zusammen mit seinem Branch und seinen Commits verwerfen. Übergeben Sie den genauen Wert, den die Ablehnung gedruckt hat; siehe [Was das Löschen einer Sitzung entfernt](#what-deleting-a-session-removes). Erfordert v2.1.260 oder später |819| `claude rm <id> --discard-unpushed <commit>@<worktree-id>` | Eine Sitzung löschen, deren Löschung wegen nicht gepushter Commits abgelehnt wurde, und dabei den Worktree zusammen mit seinem Branch und seinen Commits verwerfen. Übergeben Sie den genauen Wert, den die Ablehnung gedruckt hat; siehe [Was das Löschen einer Sitzung entfernt](#what-deleting-a-session-removes). Erfordert v2.1.260 oder später |

820| `claude rm <id> --force-remove-worktree <worktree-id>` | Eine Sitzung löschen, deren Löschung abgelehnt wurde, weil git oder der `WorktreeRemove`-Hook seinen Worktree nicht entfernen konnte, und dabei das Worktree-Verzeichnis trotzdem löschen und seinen Branch im Repository belassen. Übergeben Sie den genauen Wert, den die Ablehnung gedruckt hat; siehe [Was das Löschen einer Sitzung entfernt](#what-deleting-a-session-removes). Erfordert v2.1.268 oder später |820| `claude rm <id> --force-remove-worktree <worktree-id>` | Eine Sitzung löschen, deren Löschung abgelehnt wurde, weil git oder der `WorktreeRemove`-Hook seinen Worktree nicht entfernen konnte, und dabei das Worktree-Verzeichnis trotzdem löschen und seinen Branch im Repository belassen. Übergeben Sie den genauen Wert, den die Ablehnung gedruckt hat; siehe [Was das Löschen einer Sitzung entfernt](#what-deleting-a-session-removes). Erfordert v2.1.268 oder später |

821| `claude daemon status` | Den Status des [Supervisors](#the-supervisor-process), die Version, das Socket-Verzeichnis und die Anzahl der Worker drucken |821| `claude daemon status` | Den Status des [Supervisors](#the-supervisor-process), die Version, das Socket-Verzeichnis und die Anzahl der Worker drucken |

822| `claude daemon logs` | Der Logdatei des Supervisors, [`~/.claude/daemon.log`](#where-state-is-stored), folgen und neue Zeilen drucken, sobald sie eintreffen, bis Sie `Ctrl+C` drücken |

822| `claude daemon stop --any` | Den Supervisor-Prozess und die Hintergrund-Sitzungen, die er hostet, stoppen. Übergeben Sie `--keep-workers`, um Hintergrund-Sitzungen laufen zu lassen, damit der nächste Supervisor sich mit ihnen verbinden kann. Der nächste `claude agents` oder `claude --bg` startet einen neuen Supervisor |823| `claude daemon stop --any` | Den Supervisor-Prozess und die Hintergrund-Sitzungen, die er hostet, stoppen. Übergeben Sie `--keep-workers`, um Hintergrund-Sitzungen laufen zu lassen, damit der nächste Supervisor sich mit ihnen verbinden kann. Der nächste `claude agents` oder `claude --bg` startet einen neuen Supervisor |

823 824 

824`claude attach` und `claude logs` akzeptieren anstelle der ID auch einen Teil des Namens einer laufenden Sitzung, wie in `claude logs "auth refactor"`. Die Angabe eines Namens erfordert Claude Code v2.1.290 oder später.825`claude attach` und `claude logs` akzeptieren anstelle der ID auch einen Teil des Namens einer laufenden Sitzung, wie in `claude logs "auth refactor"`. Die Angabe eines Namens erfordert Claude Code v2.1.290 oder später.

agents.md +1 −1

Details

20 20 

21Drei weitere Tools unterstützen diese Arbeit, ohne selbst eine Möglichkeit zu sein, Agenten auszuführen:21Drei weitere Tools unterstützen diese Arbeit, ohne selbst eine Möglichkeit zu sein, Agenten auszuführen:

22 22 

23* [Worktrees](/docs/de/worktrees) geben jeder Sitzung einen separaten Git-Checkout, sodass parallele Sitzungen niemals dieselben Dateien bearbeiten. Verwenden Sie sie für Sitzungen, die Sie selbst ausführen. Eine Sitzung, die Sie aus der Agent-Ansicht versenden, [wird vor der Bearbeitung von Dateien in ihren eigenen Worktree verschoben](/docs/de/agent-view#how-file-edits-are-isolated), und Subagenten, die Sie spawnen, können jeweils einen erhalten.23* [Worktrees](/docs/de/worktrees) geben jeder Sitzung einen separaten Git-Checkout, sodass parallele Sitzungen jeweils ihre eigene Kopie der Dateien bearbeiten. Verwenden Sie sie für Sitzungen, die Sie selbst ausführen. Eine Sitzung, die Sie aus der Agent-Ansicht versenden, [wird vor der Bearbeitung von Dateien in ihren eigenen Worktree verschoben](/docs/de/agent-view#how-file-edits-are-isolated), und Subagenten, die Sie spawnen, können ebenfalls jeweils einen erhalten.

24* [Sitzungsübergreifendes Messaging](/docs/de/cross-session-messaging) ermöglicht es Claude, Ihre anderen Claude Code-Sitzungen auf diesem Computer, auf einem anderen Computer oder [in der Cloud](/docs/de/claude-code-on-the-web) aufzulisten und zu kontaktieren, sodass Sitzungen, die Sie selbst ausführen, Ergebnisse und Status untereinander weitergeben können.24* [Sitzungsübergreifendes Messaging](/docs/de/cross-session-messaging) ermöglicht es Claude, Ihre anderen Claude Code-Sitzungen auf diesem Computer, auf einem anderen Computer oder [in der Cloud](/docs/de/claude-code-on-the-web) aufzulisten und zu kontaktieren, sodass Sitzungen, die Sie selbst ausführen, Ergebnisse und Status untereinander weitergeben können.

25* [`/batch`](/docs/de/commands) ist ein [Skill](/docs/de/skills), der Claude eine große Änderung in 5 bis 30 Worktree-isolierte Subagenten aufteilt. Es ist eine gepackte Verwendung von Subagenten und Worktrees, keine separate Koordinationsstil.25* [`/batch`](/docs/de/commands) ist ein [Skill](/docs/de/skills), der Claude eine große Änderung in 5 bis 30 Worktree-isolierte Subagenten aufteilt. Es ist eine gepackte Verwendung von Subagenten und Worktrees, keine separate Koordinationsstil.

26 26 

Details

681 681 

682Amazon Bedrock streamt `InvokeModelWithResponseStream`-Antworten in einem binären Event-Stream-Format mit dem Header `Content-Type: application/vnd.amazon.eventstream`. Ein Gateway oder Proxy zwischen Claude Code und Amazon Bedrock muss den Antwortkörper und seine Header, einschließlich `Content-Type`, so durchleiten, wie Amazon Bedrock sie gesendet hat.682Amazon Bedrock streamt `InvokeModelWithResponseStream`-Antworten in einem binären Event-Stream-Format mit dem Header `Content-Type: application/vnd.amazon.eventstream`. Ein Gateway oder Proxy zwischen Claude Code und Amazon Bedrock muss den Antwortkörper und seine Header, einschließlich `Content-Type`, so durchleiten, wie Amazon Bedrock sie gesendet hat.

683 683 

684Wenn das Gateway `Content-Type` in einen anderen Wert umschreibt, lehnt Claude Code die Antwort mit einem Fehler ab, der mit `Bedrock streaming response has content-type` beginnt und den empfangenen Wert nennt. Die häufige Umschreibung ist `text/event-stream`, von einer Integration, die den Stream als Server-Sent Events erneut aussendet.684Wenn das Gateway `Content-Type` in einen anderen Wert umschreibt, lehnt Claude Code die Antwort mit einem Fehler ab, der mit `Bedrock streaming response has content-type` beginnt und den empfangenen Wert nennt. Die häufige Umschreibung ist `text/event-stream`, von einer Integration, die den Stream als Server-Sent Events erneut aussendet. Informationen zur Variable `CLAUDE_CODE_DISABLE_BEDROCK_CONTENT_TYPE_GUARD`, die in der Fehlermeldung genannt wird, finden Sie unter [Bedrock streaming response has an unexpected content-type](/docs/de/errors#bedrock-streaming-response-has-an-unexpected-content-type).

685 685 

686Wenn das Gateway den Header stattdessen löscht oder leer lässt, geht Claude Code davon aus, dass der Body Amazons Bedrock-Event-Stream ist, und dekodiert ihn, sodass ein Body, den das Gateway unverändert durchgeleitet hat, weiterhin streamt.686Wenn das Gateway den Header stattdessen löscht oder leer lässt, geht Claude Code davon aus, dass der Body Amazons Bedrock-Event-Stream ist, und dekodiert ihn, sodass ein Body, den das Gateway unverändert durchgeleitet hat, weiterhin streamt.

687 687 

Details

9[Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) ermöglicht es Claude Code, ohne routinemäßige Berechtigungsaufforderungen zu laufen, indem Werkzeugaufrufe durch einen Klassifizierer geleitet werden, der alles blockiert, das irreversibel, destruktiv oder außerhalb Ihrer Umgebung ausgerichtet ist. Deny- und explizite Ask-Regeln werden vor dem Klassifizierer ausgewertet und blockieren oder fordern weiterhin auf. Verwenden Sie den `autoMode`-Einstellungsblock, um diesem Klassifizierer mitzuteilen, welche Repos, Buckets und Domains Ihre Organisation vertraut, damit er routinemäßige interne Operationen nicht mehr blockiert.9[Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) ermöglicht es Claude Code, ohne routinemäßige Berechtigungsaufforderungen zu laufen, indem Werkzeugaufrufe durch einen Klassifizierer geleitet werden, der alles blockiert, das irreversibel, destruktiv oder außerhalb Ihrer Umgebung ausgerichtet ist. Deny- und explizite Ask-Regeln werden vor dem Klassifizierer ausgewertet und blockieren oder fordern weiterhin auf. Verwenden Sie den `autoMode`-Einstellungsblock, um diesem Klassifizierer mitzuteilen, welche Repos, Buckets und Domains Ihre Organisation vertraut, damit er routinemäßige interne Operationen nicht mehr blockiert.

10 10 

11<Note>11<Note>

12 Diese Seite ist die Konfigurationsreferenz. Das Aktivieren und Deaktivieren des Auto-Modus wird auf der Seite „Berechtigungsmodi" behandelt:12 Diese Seite ist die Konfigurationsreferenz. Das Aktivieren und Deaktivieren des Auto-Modus wird auf der Seite „Berechtigungsmodi“ behandelt:

13 13 

14 * **Wechseln Sie während einer Sitzung zum Auto-Modus oder kehren Sie aus ihm zurück**: siehe [Berechtigungsmodi wechseln](/docs/de/permission-modes#switch-permission-modes)14 * **Wechseln Sie während einer Sitzung zum Auto-Modus oder kehren Sie aus ihm zurück**: siehe [Berechtigungsmodi wechseln](/docs/de/permission-modes#switch-permission-modes)

15 * **Starten Sie eine Sitzung im Auto-Modus**: siehe [In einem anderen Berechtigungsmodus starten](/docs/de/permission-modes#start-in-a-different-mode)15 * **Starten Sie eine Sitzung im Auto-Modus**: siehe [In einem anderen Berechtigungsmodus starten](/docs/de/permission-modes#start-in-a-different-mode)


59| :- | :- | :- |59| :- | :- | :- |

60| Aufforderung vor der Aktion | `permissions.ask` | Fordert immer für einen Befehl auf, der einer inhaltsgebundenen Regel wie dem obigen Rezept entspricht. Der Klassifizierer kann eine übereinstimmende Aktion nicht automatisch genehmigen. |60| Aufforderung vor der Aktion | `permissions.ask` | Fordert immer für einen Befehl auf, der einer inhaltsgebundenen Regel wie dem obigen Rezept entspricht. Der Klassifizierer kann eine übereinstimmende Aktion nicht automatisch genehmigen. |

61| Aktion niemals ausführen | `permissions.deny` | Blockiert, bevor der Klassifizierer konsultiert wird. Weder der Klassifizierer noch die Benutzerabsicht können dies überschreiben. |61| Aktion niemals ausführen | `permissions.deny` | Blockiert, bevor der Klassifizierer konsultiert wird. Weder der Klassifizierer noch die Benutzerabsicht können dies überschreiben. |

62| Einmalige Grenze für diese Sitzung | Geben Sie es im Gespräch an, z. B. „nicht pushen, bis ich überprüft habe" | Der Klassifizierer blockiert übereinstimmende Aktionen, aber die Grenze kann verloren gehen, wenn die [Kontext-Komprimierung](/docs/de/costs#reduce-token-usage) die Nachricht entfernt, die sie angegeben hat. Verwenden Sie eine Ask- oder Deny-Regel für eine dauerhafte Garantie. |62| Einmalige Grenze für diese Sitzung | Geben Sie es im Gespräch an, z. B. „nicht pushen, bis ich überprüft habe“ | Der Klassifizierer blockiert übereinstimmende Aktionen, aber die Grenze kann verloren gehen, wenn die [Kontext-Komprimierung](/docs/de/costs#reduce-token-usage) die Nachricht entfernt, die sie angegeben hat. Verwenden Sie eine Ask- oder Deny-Regel für eine dauerhafte Garantie. |

63 63 

64<h2 id="where-the-classifier-reads-configuration">64<h2 id="where-the-classifier-reads-configuration">

65 Wo der Klassifizierer die Konfiguration liest65 Wo der Klassifizierer die Konfiguration liest

66</h2>66</h2>

67 67 

68Der Klassifizierer liest denselben [CLAUDE.md](/docs/de/memory)-Inhalt, den Claude selbst lädt, sodass eine Anweisung wie „niemals force push" in der CLAUDE.md deines Projekts sowohl Claude als auch den Klassifizierer gleichzeitig steuert. Beginne dort mit Projektkonventionen und Verhaltensregeln.68Der Klassifizierer liest denselben [CLAUDE.md](/docs/de/memory)-Inhalt, den Claude selbst lädt, sodass eine Anweisung wie „niemals force push“ in der CLAUDE.md deines Projekts sowohl Claude als auch den Klassifizierer gleichzeitig steuert. Beginne dort mit Projektkonventionen und Verhaltensregeln.

69 69 

70Für Regeln, die projektübergreifend gelten, wie vertrauenswürdige Infrastruktur oder organisationsweite Ablehnungsregeln, verwende den `autoMode`-Einstellungsblock. Der Klassifizierer liest `autoMode` aus den folgenden Bereichen:70Für Regeln, die projektübergreifend gelten, wie vertrauenswürdige Infrastruktur oder organisationsweite Ablehnungsregeln, verwende den `autoMode`-Einstellungsblock. Der Klassifizierer liest `autoMode` aus den folgenden Bereichen:

71 71 


87 Vertrauenswürdige Infrastruktur definieren87 Vertrauenswürdige Infrastruktur definieren

88</h2>88</h2>

89 89 

90Für die meisten Organisationen ist `autoMode.environment` das einzige Feld, das Sie festlegen müssen. Es teilt dem Klassifizierer mit, welche Repos, Buckets und Domains vertrauenswürdig sind: Der Klassifizierer nutzt dies, um zu entscheiden, was „extern" bedeutet, sodass jedes Ziel, das nicht aufgelistet ist, ein potenzielles Exfiltrationsziel darstellt.90Für die meisten Organisationen ist `autoMode.environment` das einzige Feld, das Sie festlegen müssen. Es teilt dem Klassifizierer mit, welche Repos, Buckets und Domains vertrauenswürdig sind: Der Klassifizierer nutzt dies, um zu entscheiden, was „extern“ bedeutet, sodass jedes Ziel, das nicht aufgelistet ist, ein potenzielles Exfiltrationsziel darstellt.

91 91 

92`claude auto-mode defaults` gibt drei Arten von Umgebungseinträgen aus.92`claude auto-mode defaults` gibt drei Arten von Umgebungseinträgen aus.

93 93 


204 `/auto-mode-setup` ausschalten204 `/auto-mode-setup` ausschalten

205</h3>205</h3>

206 206 

207Sobald der Auto-Modus mehrere Aktionen blockiert hat und Sie immer noch keine `autoMode.environment`-Einträge haben, zeigt Claude Code am Ende einer Runde ein Dialogfeld mit dem Titel „Auto-Modus über Ihre Umgebung unterrichten?" an und bietet an, `/auto-mode-setup` für Sie auszuführen. Um das Angebot zu stoppen, aber den Befehl zu behalten, wählen Sie **Nicht mehr anzeigen** in diesem Dialogfeld.207Sobald der Auto-Modus mehrere Aktionen blockiert hat und Sie immer noch keine `autoMode.environment`-Einträge haben, zeigt Claude Code am Ende einer Runde ein Dialogfeld mit dem Titel „Auto-Modus über Ihre Umgebung unterrichten?“ an und bietet an, `/auto-mode-setup` für Sie auszuführen. Um das Angebot zu stoppen, aber den Befehl zu behalten, wählen Sie **Nicht mehr anzeigen** in diesem Dialogfeld.

208 208 

209Um sowohl den Befehl als auch das Angebot auszuschalten, fügen Sie diesen [`skillOverrides`](/docs/de/skills#override-skill-visibility-from-settings)-Eintrag zu `~/.claude/settings.json` hinzu:209Um sowohl den Befehl als auch das Angebot auszuschalten, fügen Sie diesen [`skillOverrides`](/docs/de/skills#override-skill-visibility-from-settings)-Eintrag zu `~/.claude/settings.json` hinzu:

210 210 


237* `allow`-Regeln überschreiben dann übereinstimmende `soft_deny`-Regeln als Ausnahmen.237* `allow`-Regeln überschreiben dann übereinstimmende `soft_deny`-Regeln als Ausnahmen.

238* Explizite Benutzerabsicht überschreibt die verbleibenden weichen Blöcke: Wenn die Nachricht des Benutzers direkt und spezifisch die genaue Aktion beschreibt, die Claude ausführen wird, erlaubt der Klassifizierer es, auch wenn eine `soft_deny`-Regel zutrifft.238* Explizite Benutzerabsicht überschreibt die verbleibenden weichen Blöcke: Wenn die Nachricht des Benutzers direkt und spezifisch die genaue Aktion beschreibt, die Claude ausführen wird, erlaubt der Klassifizierer es, auch wenn eine `soft_deny`-Regel zutrifft.

239 239 

240Allgemeine Anfragen zählen nicht als explizite Absicht. Claude zu bitten, das Repo „aufzuräumen", autorisiert keinen Force-Push, aber Claude zu bitten, „diesen Branch zu force-pushen", tut es.240Allgemeine Anfragen zählen nicht als explizite Absicht. Claude zu bitten, das Repo „aufzuräumen“, autorisiert keinen Force-Push, aber Claude zu bitten, „diesen Branch zu force-pushen“, tut es.

241 241 

242Um zu lockern, fügen Sie zu `allow` hinzu, wenn der Klassifizierer wiederholt ein routinemäßiges Muster kennzeichnet, das die Standard-Ausnahmen nicht abdecken. Um zu straffen, fügen Sie zu `soft_deny` für destruktive Risiken hinzu, die spezifisch für Ihre Umgebung sind und die Standardwerte übersehen, oder zu `hard_deny` für Sicherheitsgrenzen, die niemals überschritten werden dürfen.242Um zu lockern, fügen Sie zu `allow` hinzu, wenn der Klassifizierer wiederholt ein routinemäßiges Muster kennzeichnet, das die Standard-Ausnahmen nicht abdecken. Um zu straffen, fügen Sie zu `soft_deny` für destruktive Risiken hinzu, die spezifisch für Ihre Umgebung sind und die Standardwerte übersehen, oder zu `hard_deny` für Sicherheitsgrenzen, die niemals überschritten werden dürfen.

243 243 


351}351}

352```352```

353 353 

354Erhalten Sie KI-Feedback zu Ihren benutzerdefinierten Regeln `allow`, `soft_deny` und `hard_deny`:354Erhalten Sie KI-Feedback zu Ihren benutzerdefinierten Einträgen für `allow`, `soft_deny`, `hard_deny` und `environment`:

355 355 

356```bash theme={null}356```bash theme={null}

357claude auto-mode critique357claude auto-mode critique

chrome.md +1 −1

Details

343 343 

344| Fehler | Ursache | Behebung |344| Fehler | Ursache | Behebung |

345| - | - | - |345| - | - | - |

346| „Browser-Erweiterung ist nicht verbunden“ | Der native Messaging-Host kann die Erweiterung nicht erreichen, oder die IP-Allowlist Ihrer Organisation lehnt die Verbindung zu `bridge.claudeusercontent.com` ab | Starten Sie Chrome und Claude Code neu und führen Sie dann `/chrome` aus, um die Verbindung wiederherzustellen. Wenn Ihre Organisation IP-Allowlisting verwendet und der Fehler weiterhin besteht, siehe [Organization IP allowlists and proxy egress](/docs/de/network-config#organization-ip-allowlists-and-proxy-egress) |346| „Browser-Erweiterung ist nicht verbunden“ | Der native Messaging-Host kann die Erweiterung nicht erreichen, oder die IP-Allowlist Ihrer Organisation lehnt die Verbindung zu `bridge.claudeusercontent.com` ab | Überprüfen Sie, ob die Erweiterung beim selben claude.ai-Konto angemeldet ist wie Claude Code, starten Sie Chrome und Claude Code neu und führen Sie dann `/chrome` aus, um die Verbindung wiederherzustellen. Wenn Ihre Organisation IP-Allowlisting verwendet und der Fehler weiterhin besteht, siehe [Organization IP allowlists and proxy egress](/docs/de/network-config#organization-ip-allowlists-and-proxy-egress) |

347| Erweiterung zeigt „Nicht erkannt“ in `/chrome` | Chrome-Erweiterung ist nicht installiert oder deaktiviert | Installieren oder aktivieren Sie die Erweiterung in `chrome://extensions` |347| Erweiterung zeigt „Nicht erkannt“ in `/chrome` | Chrome-Erweiterung ist nicht installiert oder deaktiviert | Installieren oder aktivieren Sie die Erweiterung in `chrome://extensions` |

348| „Keine Registerkarte verfügbar“ | Claude versuchte zu handeln, bevor eine Registerkarte bereit war | Bitten Sie Claude, eine neue Registerkarte zu erstellen und es erneut zu versuchen |348| „Keine Registerkarte verfügbar“ | Claude versuchte zu handeln, bevor eine Registerkarte bereit war | Bitten Sie Claude, eine neue Registerkarte zu erstellen und es erneut zu versuchen |

349| „Empfänger existiert nicht“ | Der Service Worker der Erweiterung ist in den Leerlauf gegangen | Führen Sie `/chrome` aus und wählen Sie „Erweiterung erneut verbinden“ |349| „Empfänger existiert nicht“ | Der Service Worker der Erweiterung ist in den Leerlauf gegangen | Führen Sie `/chrome` aus und wählen Sie „Erweiterung erneut verbinden“ |

Details

75| - | - |75| - | - |

76| Claude Code v2.1.195 oder später | Der `claude gateway`-Unterbefehl und der Gateway-Anmeldungsfluss werden in v2.1.195 ausgeliefert. Frühere öffentliche Builds enthalten sie nicht. Sowohl die Maschine, auf der der Gateway-Server läuft, als auch die Maschine jedes Entwicklers müssen v2.1.195 oder später sein; führen Sie `claude update` aus, um die neueste Version zu erhalten. Die [Claude Platform auf AWS Upstream](/docs/de/claude-apps-gateway-config#claude-platform-on-aws) erfordert Claude Code v2.1.198 oder später auf dem Gateway-Server. |76| Claude Code v2.1.195 oder später | Der `claude gateway`-Unterbefehl und der Gateway-Anmeldungsfluss werden in v2.1.195 ausgeliefert. Frühere öffentliche Builds enthalten sie nicht. Sowohl die Maschine, auf der der Gateway-Server läuft, als auch die Maschine jedes Entwicklers müssen v2.1.195 oder später sein; führen Sie `claude update` aus, um die neueste Version zu erhalten. Die [Claude Platform auf AWS Upstream](/docs/de/claude-apps-gateway-config#claude-platform-on-aws) erfordert Claude Code v2.1.198 oder später auf dem Gateway-Server. |

77| OpenID Connect (OIDC)-Identitätsanbieter | Okta, Microsoft Entra ID, Google Workspace, Keycloak oder Dex, oder ein anderer OIDC-konformer IdP wie PingFederate. Das Gateway führt Standard-OIDC-Erkennung und den Authorization-Code-Flow dagegen aus. SAML und LDAP werden nicht unterstützt. |77| OpenID Connect (OIDC)-Identitätsanbieter | Okta, Microsoft Entra ID, Google Workspace, Keycloak oder Dex, oder ein anderer OIDC-konformer IdP wie PingFederate. Das Gateway führt Standard-OIDC-Erkennung und den Authorization-Code-Flow dagegen aus. SAML und LDAP werden nicht unterstützt. |

78| PostgreSQL 14 oder später | Unterstützt den Geräte-Anmeldungsfluss, bei dem der Browser-Callback schreibt und die Polling-CLI liest, sowie Rate-Limit-Zähler. Jedes verwaltete Postgres funktioniert, einschließlich der kleinsten Stufe. Ohne konfigurierte Ausgabenlimits speichert das Gateway einige KB kurzlebigen Auth-Status; mit [Ausgabenlimits](/docs/de/claude-apps-gateway-spend-limits) enthält es auch dauerhafte Ausgaben-, Audit- und Identitätstabellen, die gesichert werden sollten. TLS über `?sslmode=require` wird empfohlen. |78| PostgreSQL 11 oder später | Unterstützt den Geräte-Anmeldungsfluss und Rate-Limit-Zähler. Ein verwalteter PostgreSQL-Dienst funktioniert, einschließlich der kleinsten Stufe; siehe [welche Datenbanken unterstützt werden](/docs/de/claude-apps-gateway-deploy#postgres). Mit [Ausgabenlimits](/docs/de/claude-apps-gateway-spend-limits) enthält es auch dauerhafte Ausgaben-, Audit- und Identitätstabellen, die gesichert werden sollten. TLS über `?sslmode=require` wird empfohlen. PostgreSQL 11, 12 und 13 erfordern Claude Code v2.1.290 oder später auf dem Gateway-Server. Das PostgreSQL-Projekt pflegt diese Versionen nicht mehr, verwenden Sie daher nach Möglichkeit eine neuere. |

79| Modell-Upstream | Amazon-Bedrock-Anmeldedaten, Claude Platform auf AWS Anmeldedaten, Google-Cloud-Anmeldedaten, eine Microsoft-Foundry-Ressource oder einen Anthropic-API-Schlüssel. Mehrere Upstreams werden mit Failover unterstützt. |79| Modell-Upstream | Amazon-Bedrock-Anmeldedaten, Claude Platform auf AWS Anmeldedaten, Google-Cloud-Anmeldedaten, eine Microsoft-Foundry-Ressource oder einen Anthropic-API-Schlüssel. Mehrere Upstreams werden mit Failover unterstützt. |

80| HTTPS | Das Gateway muss über `https://` von Entwickler-Laptops und von jedem Browser, der für die Anmeldung verwendet wird, erreichbar sein; das Gateway bedient die Geräteüberprüfungsseite auf dem gleichen Listener. Stellen Sie entweder ein TLS-Zertifikat über `listen.tls` bereit, oder führen Sie hinter einem TLS-terminierenden Ingress aus und setzen Sie `listen.public_url` auf den externen Ursprung in beiden Fällen. Bei `/login` akzeptiert Claude Code einen einfachen `http://`-Ursprung nur, wenn der Gateway-Host Loopback ist: `localhost`, `127.0.0.1` oder `::1`. |80| HTTPS | Das Gateway muss über `https://` von Entwickler-Laptops und von jedem Browser, der für die Anmeldung verwendet wird, erreichbar sein; das Gateway bedient die Geräteüberprüfungsseite auf dem gleichen Listener. Stellen Sie entweder ein TLS-Zertifikat über `listen.tls` bereit, oder führen Sie hinter einem TLS-terminierenden Ingress aus und setzen Sie `listen.public_url` auf den externen Ursprung in beiden Fällen. Bei `/login` akzeptiert Claude Code einen einfachen `http://`-Ursprung nur, wenn der Gateway-Host Loopback ist: `localhost`, `127.0.0.1` oder `::1`. |

81| Private-Netzwerk-Adresse | Bei `/login` erfordert Claude Code, dass der Hostname oder die IP-Adresse des Gateways nur zu privaten Adressen aufgelöst wird: RFC 1918, Link-lokal, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` oder Loopback. Für ein von Ihnen gehostetes Gateway wird jede öffentliche Adresse außerhalb eines Blocks, den Sie deklarieren, abgelehnt; siehe das [Bedrohungsmodell](/docs/de/claude-apps-gateway-deploy#threat-model-summary) im Bereitstellungsleitfaden. Wenn Entwicklermaschinen HTTPS über einen Unternehmens-Proxy leiten, erfordert die Anmeldung auch, dass der Proxy-Host zu privaten Adressen aufgelöst wird; wenn nicht, fügen Sie den Gateway-Host zu `NO_PROXY` hinzu, damit die CLI direkt verbunden wird. Wenn Ihr internes Netzwerk aus öffentlichem IPv4-Adressraum nummeriert ist, den Ihre Organisation besitzt, [deklarieren Sie diese Blöcke](#allow-a-gateway-on-public-address-space-you-own), damit `/login` ein Gateway dort akzeptiert. |81| Private-Netzwerk-Adresse | Bei `/login` erfordert Claude Code, dass der Hostname oder die IP-Adresse des Gateways nur zu privaten Adressen aufgelöst wird: RFC 1918, Link-lokal, CGNAT `100.64.0.0/10`, IPv6 ULA `fc00::/7` oder Loopback. Für ein von Ihnen gehostetes Gateway wird jede öffentliche Adresse außerhalb eines Blocks, den Sie deklarieren, abgelehnt; siehe das [Bedrohungsmodell](/docs/de/claude-apps-gateway-deploy#threat-model-summary) im Bereitstellungsleitfaden. Wenn Entwicklermaschinen HTTPS über einen Unternehmens-Proxy leiten, erfordert die Anmeldung auch, dass der Proxy-Host zu privaten Adressen aufgelöst wird; wenn nicht, fügen Sie den Gateway-Host zu `NO_PROXY` hinzu, damit die CLI direkt verbunden wird. Wenn Ihr internes Netzwerk aus öffentlichem IPv4-Adressraum nummeriert ist, den Ihre Organisation besitzt, [deklarieren Sie diese Blöcke](#allow-a-gateway-on-public-address-space-you-own), damit `/login` ein Gateway dort akzeptiert. |


91 </Step>91 </Step>

92 92 

93 <Step title="Stellen Sie eine PostgreSQL-Datenbank bereit">93 <Step title="Stellen Sie eine PostgreSQL-Datenbank bereit">

94 Jedes Postgres 14 oder später funktioniert, einschließlich der kleinsten verwalteten Stufe. Das Gateway führt seine eigenen Schema-Migrationen beim Start aus, daher benötigt die Datenbankrolle Rechte zum Erstellen und Ändern von Tabellen; siehe [`store`](/docs/de/claude-apps-gateway-config#store).94 Verwenden Sie PostgreSQL 11 oder später. Die kleinste verwaltete Stufe reicht aus. Das Gateway führt seine eigenen Schema-Migrationen beim Start aus, daher benötigt die Datenbankrolle Rechte zum Erstellen und Ändern von Tabellen; siehe [`store`](/docs/de/claude-apps-gateway-config#store).

95 </Step>95 </Step>

96 96 

97 <Step title="Schreiben Sie gateway.yaml">97 <Step title="Schreiben Sie gateway.yaml">


132 auto_include_builtin_models: true132 auto_include_builtin_models: true

133 ```133 ```

134 134 

135 Diese Konfiguration reicht für eine funktionierende Anmeldeschleife mit dem Standard-Bedrock-Modellkatalog aus. Sobald es läuft, fügen Sie Pro-Gruppen-RBAC und verwaltete Einstellungen über [`managed.policies`](/docs/de/claude-apps-gateway-config#managed) hinzu, Telemetrie-Verteilung über [`telemetry`](/docs/de/claude-apps-gateway-config#telemetry) und Multi-Upstream-Failover, bereitgestellte Durchsatz-ARNs oder Nicht-US-Regionen über [`models`](/docs/de/claude-apps-gateway-config#models).135 Diese Konfiguration reicht für eine funktionierende Anmeldeschleife mit dem Standard-Modellkatalog von Amazon Bedrock aus. Sobald es läuft, fügen Sie Pro-Gruppen-RBAC und verwaltete Einstellungen über [`managed.policies`](/docs/de/claude-apps-gateway-config#managed) hinzu, Telemetrie-Verteilung über [`telemetry`](/docs/de/claude-apps-gateway-config#telemetry) und Multi-Upstream-Failover, bereitgestellte Durchsatz-ARNs oder Nicht-US-Regionen über [`models`](/docs/de/claude-apps-gateway-config#models).

136 136 

137 <Note>137 <Note>

138 Der Amazon-Bedrock-Upstream benötigt einen AWS-Principal mit `bedrock:InvokeModel` und `bedrock:InvokeModelWithResponseStream` auf beiden `inference-profile/us.anthropic.*`-ARNs und den zugrunde liegenden `foundation-model/anthropic.*`-ARNs. Er benötigt auch Anthropics einmalige Anwendungsform, die für das Konto aus der Bedrock-Konsole des Modellkatalogs eingereicht werden muss. Stellen Sie die Anmeldedaten mit IRSA auf EKS, einer ECS-Task-Rolle oder einem EC2-Instance-Profil bereit, anstatt statische Schlüssel zu verwenden. Die [`upstreams`-Referenz](/docs/de/claude-apps-gateway-config#upstreams) hat die vollständigen IAM-Details, die Cloud-übergreifende Anmeldedaten-Matrix und die `auth`-Blöcke für die anderen Anbieter.138 Der Amazon-Bedrock-Upstream benötigt einen AWS-Principal mit `bedrock:InvokeModel` und `bedrock:InvokeModelWithResponseStream` auf beiden `inference-profile/us.anthropic.*`-ARNs und den zugrunde liegenden `foundation-model/anthropic.*`-ARNs. Er benötigt auch Anthropics einmaliges Anwendungsfall-Formular, das für das Konto über den Modellkatalog der Bedrock-Konsole eingereicht werden muss.

139 

140 Stellen Sie die Anmeldedaten mit IRSA auf EKS, einer ECS-Task-Rolle oder einem EC2-Instance-Profil bereit, anstatt statische Schlüssel zu verwenden. Die [`upstreams`-Referenz](/docs/de/claude-apps-gateway-config#upstreams) hat die vollständigen IAM-Details, die Cloud-übergreifende Anmeldedaten-Matrix und die `auth`-Blöcke für die anderen Anbieter.

139 </Note>141 </Note>

140 </Step>142 </Step>

141 143 


170 volumes: { pgdata: }172 volumes: { pgdata: }

171 ```173 ```

172 174 

173 Das Gateway ist eine einzelne Linux-Binärdatei, die die Konfiguration liest, sich mit Postgres verbindet und seine Schema-Migrationen anwendet, OIDC-Erkennung gegen Ihren IdP ausführt, Upstream-Clients erstellt und mit dem Abhören beginnt. Der Start ist fail-closed für die Konfiguration, die Postgres-Verbindung, OIDC-Erkennung und Upstream-Client-Konstruktion. Wenn einer dieser Punkte unerreichbar oder falsch konfiguriert ist, beendet sich das Gateway mit einem Fehler, anstatt Datenverkehr in einem degradierten Zustand zu bedienen.175 Das Gateway ist eine einzelne Linux-Binärdatei, die die Konfiguration liest, sich mit Postgres verbindet und seine Schema-Migrationen anwendet, OIDC-Erkennung gegen Ihren IdP ausführt, Upstream-Clients erstellt und mit dem Abhören beginnt.

176 

177 Der Start ist fail-closed für die Konfiguration, die Postgres-Verbindung, OIDC-Erkennung und Upstream-Client-Konstruktion. Wenn einer dieser Punkte unerreichbar oder falsch konfiguriert ist, beendet sich das Gateway mit einem Fehler, anstatt Datenverkehr in einem degradierten Zustand zu bedienen.

174 178 

175 Ein erfolgreicher Start validiert nicht den Inferenzpfad, da Amazon Bedrock und Google Clouds Agent Platform Instance-Anmeldedaten bei der ersten Anfrage aufgelöst werden, nicht beim Start.179 Ein erfolgreicher Start validiert nicht den Inferenzpfad, da Amazon Bedrock und Google Clouds Agent Platform Instance-Anmeldedaten bei der ersten Anfrage aufgelöst werden, nicht beim Start.

176 180 


247 * **Erste Überprüfung schlägt fehl**: Der Start wurde nicht abgeschlossen; überprüfen Sie stderr251 * **Erste Überprüfung schlägt fehl**: Der Start wurde nicht abgeschlossen; überprüfen Sie stderr

248 * **Zweite Überprüfung schlägt fehl**: Postgres ist vom Gateway nicht erreichbar oder die Rolle kann nicht schreiben; überprüfen Sie die Verbindungszeichenfolge und Berechtigungen252 * **Zweite Überprüfung schlägt fehl**: Postgres ist vom Gateway nicht erreichbar oder die Rolle kann nicht schreiben; überprüfen Sie die Verbindungszeichenfolge und Berechtigungen

249 * **Dritte Überprüfung erreicht den IdP nicht**: Überprüfen Sie, dass der Redirect-URI des IdP genau `https://<gateway>/oauth/callback` entspricht253 * **Dritte Überprüfung erreicht den IdP nicht**: Überprüfen Sie, dass der Redirect-URI des IdP genau `https://<gateway>/oauth/callback` entspricht

250 * **Dritte Überprüfung erreicht den IdP, springt aber mit einem Fehler zurück**: Lesen Sie das Audit-Protokoll des Gateways, das jede Auth-Ablehnung mit dem Grund aufzeichnet, z. B. `email domain not allowed`254 * **Dritte Überprüfung erreicht den IdP, springt aber mit einem Fehler zurück**: Lesen Sie das Audit-Log des Gateways, das jede Auth-Ablehnung mit dem Grund aufzeichnet, z. B. `email domain not allowed`

251 </Step>255 </Step>

252 256 

253 <Step title="Melden Sie einen Entwickler an">257 <Step title="Melden Sie einen Entwickler an">


295 299 

296Der Entwickler drückt Enter, um sich zu verbinden. Die [Fingerabdruck-Abfrage beim ersten Verbinden](#connect-developers) wird immer noch angezeigt. Sobald die Datei auf einer Maschine vorhanden ist, sieht ein Entwickler, der die Gateway-Anmeldung nicht abgeschlossen hat, eine der unter [Administratorrichtlinie erfordert eine Cloud-Gateway-Anmeldung](/docs/de/errors#administrator-policy-requires-a-cloud-gateway-sign-in) beschriebenen Meldungen. Entwickler, die einen Cloud-Anbieter über eine Umgebungsvariable wie `CLAUDE_CODE_USE_BEDROCK` auswählen, benötigen die Gateway-Anmeldung nicht.300Der Entwickler drückt Enter, um sich zu verbinden. Die [Fingerabdruck-Abfrage beim ersten Verbinden](#connect-developers) wird immer noch angezeigt. Sobald die Datei auf einer Maschine vorhanden ist, sieht ein Entwickler, der die Gateway-Anmeldung nicht abgeschlossen hat, eine der unter [Administratorrichtlinie erfordert eine Cloud-Gateway-Anmeldung](/docs/de/errors#administrator-policy-requires-a-cloud-gateway-sign-in) beschriebenen Meldungen. Entwickler, die einen Cloud-Anbieter über eine Umgebungsvariable wie `CLAUDE_CODE_USE_BEDROCK` auswählen, benötigen die Gateway-Anmeldung nicht.

297 301 

298Ein Entwickler kann dies nicht manuell einrichten. Die Anmeldungsauswahl hat keine Gateway-Option, und `forceLoginGatewayUrl` wird in den eigenen Einstellungsdateien eines Entwicklers ignoriert. `forceLoginMethod` allein, ohne URL, lässt den Entwickler bei einer „Kontaktieren Sie Ihren IT-Administrator"-Nachricht. Die Anmeldeschlüssel gehören in die Datei, die Sie auf Maschinen pushen, nicht in den `managed.policies[].cli`-Block des Gateways, der nur bereits verbundene Clients erreicht.302Ein Entwickler kann dies nicht manuell einrichten. Die Anmeldungsauswahl hat keine Gateway-Option, und `forceLoginGatewayUrl` wird in den eigenen Einstellungsdateien eines Entwicklers ignoriert. `forceLoginMethod` allein, ohne URL, lässt den Entwickler bei einer „Kontaktieren Sie Ihren IT-Administrator“-Nachricht. Die Anmeldeschlüssel gehören in die Datei, die Sie auf Maschinen pushen, nicht in den `managed.policies[].cli`-Block des Gateways, der nur bereits verbundene Clients erreicht.

299 303 

300<h3 id="allow-a-gateway-on-public-address-space-you-own">304<h3 id="allow-a-gateway-on-public-address-space-you-own">

301 Ein Gateway auf öffentlichem Adressraum zulassen, den Sie besitzen305 Ein Gateway auf öffentlichem Adressraum zulassen, den Sie besitzen


460* **`blockedMarketplaces`**: eine übergeordnete Marketplace-Blockliste passiert und ergänzt jede Blockliste, die eine verwaltete Quelle setzt, da eine Blockliste nur weiter einschränken kann. Erfordert Claude Code v2.1.282 oder später.464* **`blockedMarketplaces`**: eine übergeordnete Marketplace-Blockliste passiert und ergänzt jede Blockliste, die eine verwaltete Quelle setzt, da eine Blockliste nur weiter einschränken kann. Erfordert Claude Code v2.1.282 oder später.

461* **`strictPluginOnlyCustomization`**: dieser Schlüssel passiert den Filter unabhängig von jeder Sperre, und er lässt Claude Code die eigene Anpassung des Entwicklers ignorieren, einschließlich schützender Hooks. Keine Sperre blockiert ihn.465* **`strictPluginOnlyCustomization`**: dieser Schlüssel passiert den Filter unabhängig von jeder Sperre, und er lässt Claude Code die eigene Anpassung des Entwicklers ignorieren, einschließlich schützender Hooks. Keine Sperre blockiert ihn.

462 466 

463Unter der Standardeinstellung „first wins" blockiert ein Admin-Wert den übergeordneten nur, wenn er sich in der Admin-Quelle mit der höchsten Priorität befindet, außer bei `allowedMcpServers`, solange die [MCP-Server-Sperre](#lock-behavior-across-sources) aktiv ist. Unter dem Merge-Opt-in `managedSourcesBehavior` legt [wie Claude Code verwaltete Quellen kombiniert](/docs/de/managed-settings#how-claude-code-combines-managed-sources) fest, welcher Quellenwert stattdessen gilt.467Unter der Standardeinstellung „first wins“ blockiert ein Admin-Wert den übergeordneten nur, wenn er sich in der Admin-Quelle mit der höchsten Priorität befindet, außer bei `allowedMcpServers`, solange die [MCP-Server-Sperre](#lock-behavior-across-sources) aktiv ist. Unter dem Merge-Opt-in `managedSourcesBehavior` legt [wie Claude Code verwaltete Quellen kombiniert](/docs/de/managed-settings#how-claude-code-combines-managed-sources) fest, welcher Quellenwert stattdessen gilt.

464 468 

465<h3 id="connect-claude-desktop">469<h3 id="connect-claude-desktop">

466 Claude Desktop verbinden470 Claude Desktop verbinden

Details

91| `extra_auth_params` | Nein | Zusätzliche Abfrageparameter, die wörtlich an die IdP-Autorisierungsanfrage angehängt werden. Dies ist der Überschreibungsmechanismus für IdP-spezifisches Verhalten, wie `access_type: offline` für Google-Aktualisierungstoken, `domain_hint` für einige Entra-Mandanten oder `acr_values` für Step-up-Flows. Kann die vom Gateway verwalteten Protokollparameter nicht überschreiben: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode` und `client_id`. |91| `extra_auth_params` | Nein | Zusätzliche Abfrageparameter, die wörtlich an die IdP-Autorisierungsanfrage angehängt werden. Dies ist der Überschreibungsmechanismus für IdP-spezifisches Verhalten, wie `access_type: offline` für Google-Aktualisierungstoken, `domain_hint` für einige Entra-Mandanten oder `acr_values` für Step-up-Flows. Kann die vom Gateway verwalteten Protokollparameter nicht überschreiben: `state`, `nonce`, `redirect_uri`, PKCE, `scope`, `response_type`, `response_mode` und `client_id`. |

92| `userinfo_fallback` | Nein | Wenn das id\_token E-Mail oder Gruppen auslässt, rufen Sie diese von `/userinfo` ab. Erforderlich für Keycloak-Lightweight-Zugriffstokens, den Okta-Org-Server und ADFS-Minimal-Tokens. Das id\_token bleibt maßgeblich; userinfo füllt nur Lücken. Standard `false`. |92| `userinfo_fallback` | Nein | Wenn das id\_token E-Mail oder Gruppen auslässt, rufen Sie diese von `/userinfo` ab. Erforderlich für Keycloak-Lightweight-Zugriffstokens, den Okta-Org-Server und ADFS-Minimal-Tokens. Das id\_token bleibt maßgeblich; userinfo füllt nur Lücken. Standard `false`. |

93| `use_pkce` | Nein | Senden Sie eine PKCE-Herausforderung (S256) in der Autorisierungsanfrage. Standard `true`. Setzen Sie `false` nur, wenn Ihr IdP PKCE für diesen vertraulichen Client ablehnt. |93| `use_pkce` | Nein | Senden Sie eine PKCE-Herausforderung (S256) in der Autorisierungsanfrage. Standard `true`. Setzen Sie `false` nur, wenn Ihr IdP PKCE für diesen vertraulichen Client ablehnt. |

94| `clock_skew_seconds` | Nein | Tolerieren Sie Uhrenabweichungen beim Validieren von id\_token-Zeitansprüchen. Standard `0`, was streng ist. Erhöhen Sie, wenn Sie unmittelbar nach der Anmeldung aufgrund von Host-/IdP-Uhrenabweichung Fehler „Token abgelaufen / noch nicht gültig" sehen. |94| `clock_skew_seconds` | Nein | Tolerieren Sie Uhrenabweichungen beim Validieren von id\_token-Zeitansprüchen. Standard `0`, was streng ist. Erhöhen Sie, wenn Sie unmittelbar nach der Anmeldung aufgrund von Host-/IdP-Uhrenabweichung Fehler „Token abgelaufen / noch nicht gültig“ sehen. |

95| `token_endpoint_auth_method` | Nein | Wie sich das Gateway beim Token-Endpunkt des IdP authentifiziert: `client_secret_basic`, `client_secret_post` oder `private_key_jwt` für [zertifikatbasierte Client-Authentifizierung](#certificate-client-authentication). Standardmäßig wählt das Gateway eine der beiden `client_secret`-Methoden anhand dessen, was der IdP ankündigt. |95| `token_endpoint_auth_method` | Nein | Wie sich das Gateway beim Token-Endpunkt des IdP authentifiziert: `client_secret_basic`, `client_secret_post` oder `private_key_jwt` für [zertifikatbasierte Client-Authentifizierung](#certificate-client-authentication). Standardmäßig wählt das Gateway eine der beiden `client_secret`-Methoden anhand dessen, was der IdP ankündigt. |

96| `client_assertion` | Mit `private_key_jwt` | Ein Block mit `private_key_pem` und `certificate_pem`: der private Schlüssel und das Zertifikat für [zertifikatbasierte Client-Authentifizierung](#certificate-client-authentication). Erfordert v2.1.284 oder später. |96| `client_assertion` | Mit `private_key_jwt` | Ein Block mit `private_key_pem` und `certificate_pem`: der private Schlüssel und das Zertifikat für [zertifikatbasierte Client-Authentifizierung](#certificate-client-authentication). Erfordert v2.1.284 oder später. |

97| `id_token_signed_response_alg` | Nein | Erwarteter id\_token-Signaturalgorithmus. Standard `RS256`. Setzen Sie für IdPs, die mit ES256, PS256 oder EdDSA signieren. |97| `id_token_signed_response_alg` | Nein | Erwarteter id\_token-Signaturalgorithmus. Standard `RS256`. Setzen Sie für IdPs, die mit ES256, PS256 oder EdDSA signieren. |


158Das Gateway liest Schlüssel und Zertifikat einmal beim Start, eine geänderte Datei wird also erst nach einem Neustart wirksam. Rotieren Sie in dieser Reihenfolge, damit keine Token-Anfrage ein Zertifikat vorlegt, das dem IdP nicht vorliegt:158Das Gateway liest Schlüssel und Zertifikat einmal beim Start, eine geänderte Datei wird also erst nach einem Neustart wirksam. Rotieren Sie in dieser Reihenfolge, damit keine Token-Anfrage ein Zertifikat vorlegt, das dem IdP nicht vorliegt:

159 159 

1601. Laden Sie das neue Zertifikat zusätzlich zum alten beim IdP hoch.1601. Laden Sie das neue Zertifikat zusätzlich zum alten beim IdP hoch.

1612. Ersetzen Sie die Schlüssel- und Zertifikatsdateien, die `gateway.yaml` lädt, und starten Sie dann das Gateway neu.1612. Ersetzen Sie die Schlüssel- und Zertifikatsdateien, die `gateway.yaml` lädt, und starten Sie dann das Gateway neu. Wenn Sie mehrere Replikate betreiben, funktioniert ein [Rolling Restart](/docs/de/claude-apps-gateway-deploy#upgrades), da der IdP beide Zertifikate hat, bis Sie das alte entfernen.

1623. Entfernen Sie das alte Zertifikat beim IdP.1623. Nachdem jedes Replikat neu gestartet wurde, entfernen Sie das alte Zertifikat beim IdP.

163 163 

164<h4 id="idp-requests-through-a-forward-proxy">164<h4 id="idp-requests-through-a-forward-proxy">

165 IdP-Anfragen durch einen Forward-Proxy165 IdP-Anfragen durch einen Forward-Proxy


227 227 

228| Feld | Erforderlich | Beschreibung |228| Feld | Erforderlich | Beschreibung |

229| - | - | - |229| - | - | - |

230| `postgres_url` | Ja | `postgres://` oder `postgresql://` URL. Erforderlich: das Device-Grant-Rendezvous, wo der Browser-Callback schreibt und die Polling-CLI liest, benötigt Zustand über Replikate hinweg. Das Gateway führt seine eigenen Schema-Migrationen beim Start und bei Upgrades aus, daher benötigt die Rolle Rechte zum Erstellen und Ändern von Tabellen im Zielschema. Siehe [Upgrades](/docs/de/claude-apps-gateway-deploy#upgrades) und [Postgres](/docs/de/claude-apps-gateway-deploy#postgres). |230| `postgres_url` | Ja | `postgres://`- oder `postgresql://`-URL mit einem einzigen Host, keine kommagetrennte Liste. Das Gateway führt seine eigenen Schema-Migrationen beim Start und bei Upgrades aus, daher benötigt die Rolle Rechte zum Erstellen und Ändern von Tabellen im Zielschema. Siehe [Upgrades](/docs/de/claude-apps-gateway-deploy#upgrades) und [Postgres](/docs/de/claude-apps-gateway-deploy#postgres). |

231| `username` | Nein | Überschreibt den Benutzer in `postgres_url` |231| `username` | Nein | Überschreibt den Benutzer in `postgres_url` |

232| `password` | Nein | Datenbank-Anmeldedaten. Setzen Sie sie hier anstelle von `postgres_url`, damit die Anmeldedaten nicht in der URL stehen. Akzeptiert beliebige Zeichen und hat Vorrang vor Anmeldedaten in der URL. |232| `password` | Nein | Datenbank-Anmeldedaten. Setzen Sie sie hier anstelle von `postgres_url`, damit die Anmeldedaten nicht in der URL stehen. Akzeptiert beliebige Zeichen und hat Vorrang vor Anmeldedaten in der URL. |

233| `max_connections` | Nein | Postgres-Verbindungspool-Größe pro Replikat. Standard `5`, was konservativ und schonend für gemeinsam genutzte Datenbanken ist. Mit aktivierten [Ausgabenlimits](#admin) führt der Hot-Path einige Operationen pro Inference-Anfrage durch, daher erhöhen Sie den Wert für eine dedizierte Datenbank unter Last, und halten Sie Replikate × diesen Wert unter dem `max_connections` der Datenbank. |233| `max_connections` | Nein | Postgres-Verbindungspool-Größe pro Replikat. Standard `5`, was konservativ und schonend für gemeinsam genutzte Datenbanken ist. Mit aktivierten [Ausgabenlimits](#admin) führt der Hot-Path einige Operationen pro Inference-Anfrage durch, daher erhöhen Sie den Wert für eine dedizierte Datenbank unter Last, und halten Sie Replikate × diesen Wert unter dem `max_connections` der Datenbank. |

Details

249 Postgres249 Postgres

250</h3>250</h3>

251 251 

252Das Gateway speichert seinen Zustand in einer PostgreSQL-Datenbank:

253 

254* **Datenbank**: PostgreSQL selbst, selbst gehostet oder verwaltet, in der [Mindestversion](/docs/de/claude-apps-gateway#prerequisites) oder später. Datenbanken, die nur das Postgres-Protokoll implementieren, wie etwa verteilte SQL-Datenbanken, werden nicht unterstützt.

255* **Adresse**: `store.postgres_url` akzeptiert einen Host. Wenn die Datenbank mehrere Knoten hat, verwenden Sie die Adresse, die ihnen vorgelagert ist, etwa den Endpunkt Ihres verwalteten Dienstes, einen Load Balancer oder eine virtuelle IP. Setzen Sie eine [Readiness-Grace-Periode](#readiness-grace-period), die länger ist, als ein Failover dauert.

256 

252Das Gateway hält fünf Datentabellen plus eine `_migrations`-Tabelle, alle erstellt durch seine Boot-Zeit-Migrationen:257Das Gateway hält fünf Datentabellen plus eine `_migrations`-Tabelle, alle erstellt durch seine Boot-Zeit-Migrationen:

253 258 

254| Tabelle | Inhalt | Aufbewahrung |259| Tabelle | Inhalt | Aufbewahrung |


396| CLI `/login`: `Could not resolve the configured HTTP proxy` | Der Hostname in `HTTPS_PROXY` oder `HTTP_PROXY` wird von der Entwicklermaschine nicht aufgelöst, typischerweise weil sie nicht mit dem Unternehmens-Netzwerk verbunden ist | Lassen Sie den Entwickler sich mit Ihrem Netzwerk oder VPN verbinden und versuchen Sie erneut, oder beheben Sie die Proxy-URL |401| CLI `/login`: `Could not resolve the configured HTTP proxy` | Der Hostname in `HTTPS_PROXY` oder `HTTP_PROXY` wird von der Entwicklermaschine nicht aufgelöst, typischerweise weil sie nicht mit dem Unternehmens-Netzwerk verbunden ist | Lassen Sie den Entwickler sich mit Ihrem Netzwerk oder VPN verbinden und versuchen Sie erneut, oder beheben Sie die Proxy-URL |

397| CLI `/login`: `Could not resolve gateway host <host>` | Die Maschine kann den internen DNS-Namen des Gateways nicht auflösen, typischerweise weil sie nicht im Unternehmens-Netzwerk ist | Lassen Sie den Entwickler sich mit Ihrem Netzwerk oder VPN verbinden und versuchen Sie dann `/login` erneut |402| CLI `/login`: `Could not resolve gateway host <host>` | Die Maschine kann den internen DNS-Namen des Gateways nicht auflösen, typischerweise weil sie nicht im Unternehmens-Netzwerk ist | Lassen Sie den Entwickler sich mit Ihrem Netzwerk oder VPN verbinden und versuchen Sie dann `/login` erneut |

398| Boot beendet mit einem Konfigurationsvalidierungsfehler, der `store.postgres_url` benennt | Kein Postgres konfiguriert; das Gateway erfordert Postgres | Setzen Sie `store.postgres_url`. Für lokale Entwicklung verwenden Sie einen Wegwerf-Container: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |403| Boot beendet mit einem Konfigurationsvalidierungsfehler, der `store.postgres_url` benennt | Kein Postgres konfiguriert; das Gateway erfordert Postgres | Setzen Sie `store.postgres_url`. Für lokale Entwicklung verwenden Sie einen Wegwerf-Container: `docker run --rm -p 5432:5432 -e POSTGRES_HOST_AUTH_METHOD=trust postgres`. |

404| Boot beendet: `store.postgres_url in <path> is not a URL the gateway can read`, oder vor v2.1.290 ein bloßes `Invalid URL` oder `URI error` | Die URL kann nicht geparst werden, zum Beispiel weil sie mehr als einen Host auflistet oder ihr Passwort ein nicht kodiertes `/`, `?`, `#` oder `%` enthält | Geben Sie [einen Host](#postgres) an, und verschieben Sie das Passwort in [`store.password`](/docs/de/claude-apps-gateway-config#store) |

399| Boot beendet: `requires the native binary` | Läuft unter Node statt der nativen Binärdatei | Installieren Sie Claude Code mit einer der [Standalone-Installationsmethoden](/docs/de/setup) |405| Boot beendet: `requires the native binary` | Läuft unter Node statt der nativen Binärdatei | Installieren Sie Claude Code mit einer der [Standalone-Installationsmethoden](/docs/de/setup) |

400| Boot beendet mit einem OIDC-Discovery-Fehler nach `config.load` | `oidc.issuer` nicht erreichbar oder TLS-Kette nicht vertraut | Überprüfen Sie, dass der Aussteller vom Pod erreichbar ist und `/.well-known/openid-configuration` bedient. Setzen Sie `ca_cert_pem` für private PKI. Wenn der Pod den IdP nur über einen Forward-Proxy erreicht, setzen Sie [`oidc.use_proxy: true`](/docs/de/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); bei Versionen vor v2.1.227 geben Sie dem Pod stattdessen eine direkte Route zu jedem der IdP-Endpunkte. Wenn der Pod auch den Hostnamen des IdP nicht auflösen kann, oder der Proxy verweigert `CONNECT` zu einer IP-Adresse, siehe [Nur-Proxy-Ausgang](/docs/de/claude-apps-gateway-config#proxy-only-egress), das v2.1.277 oder später erfordert. |406| Boot beendet mit einem OIDC-Discovery-Fehler nach `config.load` | `oidc.issuer` nicht erreichbar oder TLS-Kette nicht vertraut | Überprüfen Sie, dass der Aussteller vom Pod erreichbar ist und `/.well-known/openid-configuration` bedient. Setzen Sie `ca_cert_pem` für private PKI. Wenn der Pod den IdP nur über einen Forward-Proxy erreicht, setzen Sie [`oidc.use_proxy: true`](/docs/de/claude-apps-gateway-config#idp-requests-through-a-forward-proxy); bei Versionen vor v2.1.227 geben Sie dem Pod stattdessen eine direkte Route zu jedem der IdP-Endpunkte. Wenn der Pod auch den Hostnamen des IdP nicht auflösen kann, oder der Proxy verweigert `CONNECT` zu einer IP-Adresse, siehe [Nur-Proxy-Ausgang](/docs/de/claude-apps-gateway-config#proxy-only-egress), das v2.1.277 oder später erfordert. |

401| Boot beendet mit einem Postgres-Berechtigungsfehler | Die Datenbankrolle fehlen DDL-Rechte auf ihrem Schema | Gewähren Sie der Rolle `CREATE` auf dem Gateway-Schema, damit sie seine Tabellen beim Boot erstellen und ändern kann |407| Boot beendet mit einem Postgres-Berechtigungsfehler | Die Datenbankrolle fehlen DDL-Rechte auf ihrem Schema | Gewähren Sie der Rolle `CREATE` auf dem Gateway-Schema, damit sie seine Tabellen beim Boot erstellen und ändern kann |

402| Protokoll: `could not connect to Postgres at boot, attempt 1 of 3` | Die Datenbank war nicht erreichbar, als das Gateway gestartet wurde, zum Beispiel auf einer kalten Instanz, deren Netzwerk noch aufgebaut wird | Wenn das Gateway dann das Booten beendet, ist keine Aktion erforderlich. Wenn die Datenbank nicht erreichbar ist, versucht das Gateway die Verbindung dreimal, zwei Sekunden auseinander, bevor es beendet wird. Wenn es mit `could not connect to Postgres` beendet wird, überprüfen Sie `store.postgres_url` und den Netzwerkpfad zur Datenbank. Wenn die Versuche Timeout statt Ablehnung sind, erhöhen Sie [`store.connect_timeout_seconds`](/docs/de/claude-apps-gateway-config#store), um jedem länger zu geben. |408| Protokoll: `could not connect to Postgres at boot, attempt 1 of 3` | Die Datenbank war nicht erreichbar, als das Gateway gestartet wurde, zum Beispiel auf einer kalten Instanz, deren Netzwerk noch aufgebaut wird | Wenn das Gateway dann das Booten beendet, ist keine Aktion erforderlich. Wenn die Datenbank nicht erreichbar ist, versucht das Gateway die Verbindung dreimal, zwei Sekunden auseinander, bevor es beendet wird. Wenn es mit `could not connect to Postgres` beendet wird, überprüfen Sie `store.postgres_url`, einschließlich dessen, dass sie genau einen Host benennt, sowie den Netzwerkpfad zur Datenbank. Wenn die Versuche Timeout statt Ablehnung sind, erhöhen Sie [`store.connect_timeout_seconds`](/docs/de/claude-apps-gateway-config#store), um jedem länger zu geben. |

403| `/oauth/callback` zeigt "Sign-in could not be completed" | E-Mail-Domain abgelehnt, id\_token-Validierung fehlgeschlagen, oder `email_verified` ist explizit `false`, was das Gateway immer ohne Überschreibung ablehnt | Überprüfen Sie `allowed_email_domains` und dass der IdP einen verifizierten `email`-Claim zurückgibt. Für `email_verified: false` beheben Sie die IdP-seitige Verifikation. Wenn Ihr IdP E-Mail unter einem anderen Claim-Namen ausgibt, setzen Sie `oidc.email_claim`. |409| `/oauth/callback` zeigt "Sign-in could not be completed" | E-Mail-Domain abgelehnt, id\_token-Validierung fehlgeschlagen, oder `email_verified` ist explizit `false`, was das Gateway immer ohne Überschreibung ablehnt | Überprüfen Sie `allowed_email_domains` und dass der IdP einen verifizierten `email`-Claim zurückgibt. Für `email_verified: false` beheben Sie die IdP-seitige Verifikation. Wenn Ihr IdP E-Mail unter einem anderen Claim-Namen ausgibt, setzen Sie `oidc.email_claim`. |

404| Protokoll: `token exchange failed request_id=<id>: id_token missing email claim` | Der IdP enthält `email` nicht standardmäßig im id\_token. Diese Ablehnung wird nur ausgelöst, wenn `allowed_email_domains` gesetzt ist; ohne sie prägt ein fehlende E-Mail eine Sitzung ohne E-Mail | Konfigurieren Sie den IdP, um `email` im id\_token auszugeben. Okta: Fügen Sie `email` zu den ID-Token-Claims eines benutzerdefinierten Autorisierungsservers hinzu. Entra: Fügen Sie `email` als optionalen Claim bei der App-Registrierung hinzu. PingFederate: Aktivieren Sie eine OpenID-Connect-Richtlinie, die `email` ausgibt. Wenn der IdP `email` vom Userinfo-Endpoint bedient, aber nicht im id\_token einbeziehen wird, wie der Okta-Org-Autorisierungsserver, setzen Sie `oidc.userinfo_fallback: true`. |410| Protokoll: `token exchange failed request_id=<id>: id_token missing email claim` | Der IdP enthält `email` nicht standardmäßig im id\_token. Diese Ablehnung wird nur ausgelöst, wenn `allowed_email_domains` gesetzt ist; ohne sie prägt ein fehlende E-Mail eine Sitzung ohne E-Mail | Konfigurieren Sie den IdP, um `email` im id\_token auszugeben. Okta: Fügen Sie `email` zu den ID-Token-Claims eines benutzerdefinierten Autorisierungsservers hinzu. Entra: Fügen Sie `email` als optionalen Claim bei der App-Registrierung hinzu. PingFederate: Aktivieren Sie eine OpenID-Connect-Richtlinie, die `email` ausgibt. Wenn der IdP `email` vom Userinfo-Endpoint bedient, aber nicht im id\_token einbeziehen wird, wie der Okta-Org-Autorisierungsserver, setzen Sie `oidc.userinfo_fallback: true`. |

405| Protokoll: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, und Entwickler sehen `Cloud gateway session expired` alle `session.ttl_hours` | Der IdP akzeptierte den Refresh-Token, gab aber keinen id\_token damit zurück, daher fragte das Gateway den Userinfo-Endpoint des IdP nach den Claims des Benutzers. Der IdP lehnte den erneuerten Access-Token dort ab. Das Gateway antwortet `temporarily_unavailable`, daher behält Claude Code den Refresh-Token, kann aber die Sitzung nicht erneuern. Gateway-Versionen vor v2.1.260 protokollieren dieselbe Zeile ohne das `(at …)`-Detail. | Setzen Sie [`oidc.scope_on_refresh: true`](/docs/de/claude-apps-gateway-config#oidc), verfügbar in Gateway v2.1.260 oder später, damit die Refresh-Anfrage erneut nach `openid` fragt. Einige IdPs, wie Okta, geben einen id\_token bei Refresh nur zurück, wenn gefragt. Auf PingFederate aktivieren Sie stattdessen **Return ID Token On Refresh Grant** unter **Applications > OAuth > OpenID Connect Policy Management**. Der Schlüssel ändert das Verhalten von PingFederate nicht. Für andere IdPs, die ihn immer noch weglassen, überprüfen Sie, ob der Userinfo-Endpoint Access-Token akzeptiert, die von einem Refresh ausgestellt wurden. Als Übergangslösung erhöhen Sie [`session.ttl_hours`](/docs/de/claude-apps-gateway-config#session). Siehe [Identity-Provider-Setup](#identity-provider-setup) für den Deprovisioning-Tradeoff. |411| Protokoll: `refresh failed request_id=<id>: invalid_token (…) (at userinfo_no_id_token, …)`, und Entwickler sehen `Cloud gateway session expired` alle `session.ttl_hours` | Der IdP akzeptierte den Refresh-Token, gab aber keinen id\_token damit zurück, daher fragte das Gateway den Userinfo-Endpoint des IdP nach den Claims des Benutzers. Der IdP lehnte den erneuerten Access-Token dort ab. Das Gateway antwortet `temporarily_unavailable`, daher behält Claude Code den Refresh-Token, kann aber die Sitzung nicht erneuern. Gateway-Versionen vor v2.1.260 protokollieren dieselbe Zeile ohne das `(at …)`-Detail. | Setzen Sie [`oidc.scope_on_refresh: true`](/docs/de/claude-apps-gateway-config#oidc), verfügbar in Gateway v2.1.260 oder später, damit die Refresh-Anfrage erneut nach `openid` fragt. Einige IdPs, wie Okta, geben einen id\_token bei Refresh nur zurück, wenn gefragt. Auf PingFederate aktivieren Sie stattdessen **Return ID Token On Refresh Grant** unter **Applications > OAuth > OpenID Connect Policy Management**. Der Schlüssel ändert das Verhalten von PingFederate nicht. Für andere IdPs, die ihn immer noch weglassen, überprüfen Sie, ob der Userinfo-Endpoint Access-Token akzeptiert, die von einem Refresh ausgestellt wurden. Als Übergangslösung erhöhen Sie [`session.ttl_hours`](/docs/de/claude-apps-gateway-config#session). Siehe [Identity-Provider-Setup](#identity-provider-setup) für den Deprovisioning-Tradeoff. |

Details

169 </Step>169 </Step>

170 170 

171 <Step title="Stellen Sie Amazon RDS für PostgreSQL bereit">171 <Step title="Stellen Sie Amazon RDS für PostgreSQL bereit">

172 Die Instanz läuft in den privaten Subnetzen ohne öffentliche Adresse und mit aktivierter Speicherverschlüsselung. Die Engine-Version ist auf Postgres 16 festgelegt, was den unterstützten Boden des Gateways von PostgreSQL 14 erfüllt und garantiert, dass die Parametergruppe unten mit der Instanz übereinstimmt.172 Die Instanz läuft mit Postgres 16 in den privaten Subnetzen, ohne öffentliche Adresse und mit aktivierter Speicherverschlüsselung.

173 173 

174 Erstellen Sie zunächst die Subnet-Gruppe, die die Datenbank in den privaten Subnetzen platziert, und eine Parametergruppe mit `rds.force_ssl=1`, damit der Server Klartextverbindungen ablehnt. Die Engine-Version ist einmal festgelegt, da die Parametergruppen-Familie mit der Engine-Hauptversion übereinstimmen muss, die die Instanz ausführt:174 Erstellen Sie zunächst die Subnet-Gruppe, die die Datenbank in den privaten Subnetzen platziert, und eine Parametergruppe mit `rds.force_ssl=1`, damit der Server Klartextverbindungen ablehnt. Die Engine-Version ist einmal festgelegt, da die Parametergruppen-Familie mit der Engine-Hauptversion übereinstimmen muss, die die Instanz ausführt:

175 175 


201 --no-publicly-accessible --storage-encrypted201 --no-publicly-accessible --storage-encrypted

202 ```202 ```

203 203 

204 Das Literal `--master-user-password` Argument ist in der Prozesstabelle und in Audit-/EDR-Protokollen sichtbar, während der Befehl ausgeführt wird, die gleiche Exposition, die der Geheimnisse-Schritt behandelt. Auf einem gemeinsamen oder überwachten Host übergeben Sie das Passwort stattdessen über `--cli-input-json` aus einer `0600` Datei, wie es das `setup.sh` des Bundles tut.204 Das Literal `--master-user-password` Argument ist in der Prozesstabelle und in Audit-/EDR-Logs sichtbar, während der Befehl ausgeführt wird, die gleiche Exposition, die der Geheimnisse-Schritt behandelt. Auf einem gemeinsamen oder überwachten Host übergeben Sie das Passwort stattdessen über `--cli-input-json` aus einer `0600` Datei, wie es das `setup.sh` des Bundles tut.

205 205 

206 Warten Sie, bis die Instanz hochfährt, was mehrere Minuten dauern kann, lesen Sie dann ihren privaten Endpunkt und stellen Sie die Verbindungszeichenfolge zusammen, die das Gateway verwendet:206 Warten Sie, bis die Instanz hochfährt, was mehrere Minuten dauern kann, lesen Sie dann ihren privaten Endpunkt und stellen Sie die Verbindungszeichenfolge zusammen, die das Gateway verwendet:

207 207 


223 Zwei `listen` Felder beschreiben, was das Gateway frontet:223 Zwei `listen` Felder beschreiben, was das Gateway frontet:

224 224 

225 * `public_url`: die externe `https://` Herkunft, erforderlich für jeden nicht-Loopback-Bind; siehe die [`listen` Referenz](/docs/de/claude-apps-gateway-config#listen). Das Gateway erstellt den IdP `redirect_uri` und sein Discovery-Dokument nur aus diesem Wert, niemals aus `X-Forwarded-*` Headern.225 * `public_url`: die externe `https://` Herkunft, erforderlich für jeden nicht-Loopback-Bind; siehe die [`listen` Referenz](/docs/de/claude-apps-gateway-config#listen). Das Gateway erstellt den IdP `redirect_uri` und sein Discovery-Dokument nur aus diesem Wert, niemals aus `X-Forwarded-*` Headern.

226 * `trusted_proxies`: die Quellbereiche des Front-End. Das Gateway berücksichtigt `X-Forwarded-For` nur, wenn der TCP-Peer in dieser Liste ist, geht dann die Kette über vertrauenswürdige Hops, sodass Anmelderate-Limits pro IP und Audit-Events Entwickler-IPs statt der Load-Balancer-IP aufzeichnen.226 * `trusted_proxies`: die Quellbereiche des Front-End. Das Gateway berücksichtigt `X-Forwarded-For` nur, wenn der TCP-Peer in dieser Liste ist, geht dann die Kette über vertrauenswürdige Hops, sodass Anmelde-Rate-Limits pro IP und Audit-Events Entwickler-IPs statt der Load-Balancer-IP aufzeichnen.

227 227 

228 Auf beiden Pfaden ist das Front-End ein interner ALB, ob direkt erstellt oder vom AWS Load Balancer Controller, und ALB-Knoten nehmen Adressen aus den Subnetzen, an die sie angehängt sind, daher setzen Sie `trusted_proxies` auf die CIDRs dieser Subnetze. Dies vertraut jedem Host in diesen Subnetzen als Proxy. Halten Sie die Ingress-Quelle des ALB, Ihre Unternehmens-CIDR, davon ab, sich zu überlappen, und teilen Sie die Subnetze nicht mit nicht vertrauenswürdigen Workloads, die Client-IPs über `X-Forwarded-For` fälschen könnten.228 Auf beiden Pfaden ist das Front-End ein interner ALB, ob direkt erstellt oder vom AWS Load Balancer Controller, und ALB-Knoten nehmen Adressen aus den Subnetzen, an die sie angehängt sind, daher setzen Sie `trusted_proxies` auf die CIDRs dieser Subnetze. Dies vertraut jedem Host in diesen Subnetzen als Proxy. Halten Sie die Ingress-Quelle des ALB, Ihre Unternehmens-CIDR, davon ab, sich zu überlappen, und teilen Sie die Subnetze nicht mit nicht vertrauenswürdigen Workloads, die Client-IPs über `X-Forwarded-For` fälschen könnten.

229 229 


286 Beachten Sie die ARN, die jeder Aufruf ausgibt; die ECS-Task-Definition referenziert Geheimnisse nach ARN.286 Beachten Sie die ARN, die jeder Aufruf ausgibt; die ECS-Task-Definition referenziert Geheimnisse nach ARN.

287 287 

288 <Note>288 <Note>

289 Literal `--secret-string` Argumente sind in der Prozesstabelle und in Audit-/EDR-Protokollen sichtbar, während jeder Befehl ausgeführt wird. Auf einem gemeinsamen oder überwachten Host legen Sie den Wert in eine `0600` Datei und übergeben Sie stattdessen `--secret-string file://<path>`. Das `setup.sh` des Bundles hält Geheimniswerte auf die gleiche Weise aus dem Prozess-argv, indem es `0600` temporäre Dateien an `--cli-input-json` übergibt.289 Literal `--secret-string` Argumente sind in der Prozesstabelle und in Audit-/EDR-Logs sichtbar, während jeder Befehl ausgeführt wird. Auf einem gemeinsamen oder überwachten Host legen Sie den Wert in eine `0600` Datei und übergeben Sie stattdessen `--secret-string file://<path>`. Das `setup.sh` des Bundles hält Geheimniswerte auf die gleiche Weise aus dem Prozess-argv, indem es `0600` temporäre Dateien an `--cli-input-json` übergibt.

290 </Note>290 </Note>

291 291 

292 Im Gegensatz zu den Geheimnissen enthält `gateway.yaml` selbst keine Geheimniswerte, da jede Anmeldedaten beim Start über [`${VAR}` oder `${file:...}` Erweiterung](/docs/de/claude-apps-gateway-config#secret-expansion) aufgelöst wird. Wie alles den Container erreicht, unterscheidet sich je nach Pfad:292 Im Gegensatz zu den Geheimnissen enthält `gateway.yaml` selbst keine Geheimniswerte, da alle Anmeldedaten beim Start über [`${VAR}` oder `${file:...}` Erweiterung](/docs/de/claude-apps-gateway-config#secret-expansion) aufgelöst werden. Wie alles den Container erreicht, unterscheidet sich je nach Pfad:

293 293 

294 * Auf ECS kopiert der Build des nächsten Schritts `gateway.yaml` in das Image bei `/etc/claude/gateway.yaml`, und die Task-Definition injiziert die drei Geheimnisse als Umgebungsvariablen über sein `secrets` Feld, daher referenziert die YAML `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` und `${GATEWAY_POSTGRES_URL}`.294 * Auf ECS kopiert der Build des nächsten Schritts `gateway.yaml` in das Image bei `/etc/claude/gateway.yaml`, und die Task-Definition injiziert die drei Geheimnisse als Umgebungsvariablen über ihr `secrets` Feld, daher referenziert die YAML `${GATEWAY_JWT_SECRET}`, `${OIDC_CLIENT_SECRET}` und `${GATEWAY_POSTGRES_URL}`.

295 * Auf EKS mounten Sie `gateway.yaml` aus einer ConfigMap und die Geheimnisse als Dateien bei `/secrets`, referenziert als `${file:/secrets/...}`. Beziehen Sie die Kubernetes Secrets aus Secrets Manager mit dem External Secrets Operator oder dem AWS-Provider des Secrets Store CSI-Treibers, oder erstellen Sie sie direkt mit `kubectl`.295 * Auf EKS mounten Sie `gateway.yaml` aus einer ConfigMap und die Geheimnisse als Dateien bei `/secrets`, referenziert als `${file:/secrets/...}`. Beziehen Sie die Kubernetes Secrets aus Secrets Manager mit dem External Secrets Operator oder dem AWS-Provider des Secrets Store CSI-Treibers, oder erstellen Sie sie direkt mit `kubectl`.

296 </Step>296 </Step>

297 297 


335 <Step title="Bereitstellen">335 <Step title="Bereitstellen">

336 <Tabs>336 <Tabs>

337 <Tab title="ECS Fargate">337 <Tab title="ECS Fargate">

338 Erstellen Sie den Cluster und eine Log-Gruppe für die stderr des Gateways, die sowohl seine Audit-Events als auch Betriebsprotokolle trägt. Die Aufbewahrung ist ein separater Aufruf, und ohne eine CloudWatch behält die Protokolle für immer; richten Sie die 90 Tage auf Ihre Audit-Aufbewahrungsrichtlinie aus:338 Erstellen Sie den Cluster und eine Log-Gruppe für die stderr des Gateways, die sowohl seine Audit-Events als auch Betriebslogs trägt. Die Aufbewahrung ist ein separater Aufruf, und ohne einen behält CloudWatch die Logs für immer; richten Sie die 90 Tage auf Ihre Audit-Aufbewahrungsrichtlinie aus:

339 339 

340 ```bash theme={null}340 ```bash theme={null}

341 aws ecs create-cluster --cluster-name claude-gateway341 aws ecs create-cluster --cluster-name claude-gateway


401 401 

402 Fügen Sie den HTTPS-Listener hinzu. `--ssl-policy` pinnt einen modernen TLS-Boden, da das Weglassen auf die Legacy-Standard-Richtlinie `ELBSecurityPolicy-2016-08` zurückfällt, die immer noch TLS 1.0/1.1 akzeptiert.402 Fügen Sie den HTTPS-Listener hinzu. `--ssl-policy` pinnt einen modernen TLS-Boden, da das Weglassen auf die Legacy-Standard-Richtlinie `ELBSecurityPolicy-2016-08` zurückfällt, die immer noch TLS 1.0/1.1 akzeptiert.

403 403 

404 Der ALB schließt eine Verbindung nach 60 Sekunden ohne Daten standardmäßig. Die Keepalive-Pings des Gateways halten Streams innerhalb dieses Standards, daher erhöht das Erhöhen des Timeouts die Marge über der Ping-Kadenz; die [Troubleshooting](#troubleshooting) Zeile auf abgebrochenen Streams behandelt den Mechanismus und ältere Gateways. Die folgenden Befehle fügen den Listener hinzu und erhöhen das Timeout:404 Der ALB schließt eine Verbindung nach 60 Sekunden ohne Daten standardmäßig. Die Keepalive-Pings des Gateways halten Streams innerhalb dieses Standards, daher erhöht das Erhöhen des Timeouts die Marge über der Ping-Kadenz; die Zeile zu abgebrochenen Streams in der [Fehlerbehebung](#troubleshooting) behandelt den Mechanismus und ältere Gateways. Die folgenden Befehle fügen den Listener hinzu und erhöhen den Timeout:

405 405 

406 ```bash theme={null}406 ```bash theme={null}

407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \407 aws elbv2 create-listener --load-balancer-arn "$ALB_ARN" \


425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"425 --load-balancers "targetGroupArn=$TG_ARN,containerName=gateway,containerPort=8080"

426 ```426 ```

427 427 

428 Die 60-Sekunden-Gnadenfrist gibt einer kalten Task Zeit, das Image zu ziehen, sich mit dem Store zu verbinden und seinen ersten Health-Check zu beantworten, bevor ECS beginnt, Fehler gegen die Bereitstellung zu zählen. Der Health-Check der Zielgruppe auf `GET /readyz` überprüft, ob der Store erreichbar ist, daher kommt eine Task, die Postgres nicht erreichen kann, nie in Rotation. Um Tasks durch einen kurzen Datenbankausfall wie ein RDS-Failover hindurch den Health-Check bestehen zu lassen, setzen Sie `store.readiness_grace_seconds` wie in [Ausfallverhalten](/docs/de/claude-apps-gateway-deploy#outage-behavior) beschrieben, das auch die `/healthz` Alternative abdeckt.428 Die 60-Sekunden-Gnadenfrist gibt einer kalten Task Zeit, das Image zu ziehen, sich mit dem Store zu verbinden und seinen ersten Health-Check zu beantworten, bevor ECS beginnt, Fehler gegen die Bereitstellung zu zählen.

429 

430 Der Health-Check der Zielgruppe auf `GET /readyz` überprüft, ob der Store erreichbar ist, daher kommt eine Task, die Postgres nicht erreichen kann, nie in Rotation. Um Tasks durch einen kurzen Datenbankausfall wie ein RDS-Failover hindurch den Health-Check bestehen zu lassen, setzen Sie `store.readiness_grace_seconds` wie in [Ausfallverhalten](/docs/de/claude-apps-gateway-deploy#outage-behavior) beschrieben, das auch die `/healthz` Alternative abdeckt.

429 431 

430 Die Tasks laufen in privaten Subnetzen ohne öffentliche IP, daher geht der gesamte Egress (zu Bedrock, Ihrem IdP, Secrets Manager, ECR und CloudWatch Logs) durch das NAT-Gateway. Um Bedrock-Verkehr vom öffentlichen Pfad zu halten, erstellen Sie einen `bedrock-runtime` Interface VPC-Endpunkt und zeigen Sie die `base_url` des Upstream darauf, wie in der [Bedrock Upstream-Referenz](/docs/de/claude-apps-gateway-config#amazon-bedrock) gezeigt; der IdP benötigt immer noch Internet-Egress.432 Die Tasks laufen in privaten Subnetzen ohne öffentliche IP, daher geht der gesamte Egress (zu Bedrock, Ihrem IdP, Secrets Manager, ECR und CloudWatch Logs) durch das NAT-Gateway. Um Bedrock-Verkehr vom öffentlichen Pfad zu halten, erstellen Sie einen `bedrock-runtime` Interface VPC-Endpunkt und zeigen Sie die `base_url` des Upstream darauf, wie in der [Bedrock Upstream-Referenz](/docs/de/claude-apps-gateway-config#amazon-bedrock) gezeigt; der IdP benötigt immer noch Internet-Egress.

431 433 

432 Beenden Sie, indem Sie Entwicklern einen privat auflösbaren Hostnamen geben: In einer Route 53 privaten gehosteten Zone, alias den internen DNS-Namen des Gateways zum ALB, und setzen Sie `listen.public_url` auf diesen Hostnamen. Der eigene `*.elb.amazonaws.com` Name des ALB wird zu privaten Adressen auf einem internen ALB aufgelöst, kann aber Ihr ACM-Zertifikat nicht tragen, daher verwenden Sie Ihren eigenen Namen.434 Beenden Sie, indem Sie Entwicklern einen privat auflösbaren Hostnamen geben: In einer Route 53 privaten gehosteten Zone, alias den internen DNS-Namen des Gateways zum ALB, und setzen Sie `listen.public_url` auf diesen Hostnamen. Der eigene `*.elb.amazonaws.com` Name des ALB wird zu privaten Adressen auf einem internen ALB aufgelöst, kann aber Ihr ACM-Zertifikat nicht tragen, daher verwenden Sie Ihren eigenen Namen.

433 435 

434 Aktualisieren Sie die autorisierte Redirect-URI des OAuth-Clients auf `<public_url>/oauth/callback`, bevor die erste Anmeldung. Nach dem Ändern von `public_url` erstellen Sie das Image unter einem neuen Tag neu, registrieren Sie eine neue Task-Definition-Revision und stellen Sie erneut bereit. Auf ECS lebt die Einstellung in der eingebetteten `gateway.yaml` des Images, und das Gateway erstellt seinen öffentlichen Ursprung nur aus dieser Einstellung, ignoriert `X-Forwarded-Host` und `X-Forwarded-Proto`. `X-Forwarded-For` wird nur berücksichtigt, wenn `listen.trusted_proxies` gesetzt ist.436 Aktualisieren Sie die autorisierte Redirect-URI des OAuth-Clients auf `<public_url>/oauth/callback` vor der ersten Anmeldung. Nach dem Ändern von `public_url` erstellen Sie das Image unter einem neuen Tag neu, registrieren Sie eine neue Task-Definition-Revision und stellen Sie erneut bereit. Auf ECS lebt die Einstellung in der eingebetteten `gateway.yaml` des Images, und das Gateway erstellt seinen öffentlichen Ursprung nur aus dieser Einstellung, ignoriert `X-Forwarded-Host` und `X-Forwarded-Proto`. `X-Forwarded-For` wird für Client-IPs nur berücksichtigt, wenn `listen.trusted_proxies` gesetzt ist.

435 </Tab>437 </Tab>

436 438 

437 <Tab title="EKS">439 <Tab title="EKS">

438 Dieser Pfad benötigt `kubectl` und `eksctl` lokal installiert, und einen bestehenden EKS-Cluster mit einem IAM OIDC-Provider und dem AWS Load Balancer Controller installiert. Der Cluster muss auf `$VPC_ID` sein, damit Pods den RDS-Privatendpunkt erreichen können, und die `claude-gateway-db` Sicherheitsgruppe muss die Sicherheitsgruppe des Clusters oder des Pods des Clusters anstelle von `$GW_SG` zulassen.440 Dieser Pfad benötigt `kubectl` und `eksctl` lokal installiert, und einen bestehenden EKS-Cluster mit einem IAM OIDC-Provider und dem AWS Load Balancer Controller installiert. Der Cluster muss auf `$VPC_ID` sein, damit Pods den RDS-Privatendpunkt erreichen können, und die `claude-gateway-db` Sicherheitsgruppe muss die Pod- oder Node-Sicherheitsgruppe des Clusters anstelle von `$GW_SG` zulassen.

439 441 

440 Auf EKS erhält das Gateway seine Bedrock-Anmeldedaten über IRSA statt der ECS-Rollen. Die `ecs-tasks.amazonaws.com` Vertrauensrichtlinie aus dem IAM-Schritt gilt hier nicht; IRSA benötigt eine Rolle, deren Vertrauensrichtlinie auf dem OIDC-Provider des Clusters föderiert ist, begrenzt auf `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` erstellt diese Rolle, hängt die Richtlinien an und kommentiert das Kubernetes-Dienstkonto mit der Rollen-ARN in einem Schritt. Verwandeln Sie die zwei Richtliniendokumente aus dem IAM-Schritt in verwaltete Richtlinien, die es anhängen kann:442 Auf EKS erhält das Gateway seine Bedrock-Anmeldedaten über IRSA statt der ECS-Rollen. Die `ecs-tasks.amazonaws.com` Vertrauensrichtlinie aus dem IAM-Schritt gilt hier nicht; IRSA benötigt eine Rolle, deren Vertrauensrichtlinie auf dem OIDC-Provider des Clusters föderiert ist, begrenzt auf `system:serviceaccount:claude-gateway:gateway`. `eksctl create iamserviceaccount` erstellt diese Rolle, hängt die Richtlinien an und kommentiert das Kubernetes-Dienstkonto mit der Rollen-ARN in einem Schritt. Verwandeln Sie die zwei Richtliniendokumente aus dem IAM-Schritt in verwaltete Richtlinien, die es anhängen kann:

441 443 


453 --approve455 --approve

454 ```456 ```

455 457 

456 Die Geheimnisse-Richtlinie wird nur benötigt, wenn die Pods Secrets Manager selbst lesen, wie es der AWS-Provider des Secrets Store CSI-Treibers mit dem Dienstkonto des Mounting-Pods tut; lassen Sie sie weg, wenn Sie die Kubernetes Secrets auf andere Weise erstellen. Der Provider benötigt beide Aktionen der Richtlinie: Er ruft `DescribeSecret` auf, wenn er rotierte Geheimnisse abstimmt, daher gewährt ein `GetSecretValue`-only Grant Mounts beim ersten Deploy, stoppt aber das Abholen von Rotationen.458 Die Geheimnisse-Richtlinie wird nur benötigt, wenn die Pods Secrets Manager selbst lesen, wie es der AWS-Provider des Secrets Store CSI-Treibers mit dem Dienstkonto des Mounting-Pods tut; lassen Sie sie weg, wenn Sie die Kubernetes Secrets auf andere Weise erstellen. Der Provider benötigt beide Aktionen der Richtlinie: Er ruft `DescribeSecret` auf, wenn er rotierte Geheimnisse abstimmt, daher funktioniert ein Grant nur mit `GetSecretValue` beim ersten Deploy, übernimmt aber keine Rotationen mehr.

457 459 

458 Stellen Sie das Gateway als Standard-Deployment plus Service und Ingress bereit, wie in [Kubernetes-Bereitstellung](/docs/de/claude-apps-gateway-deploy#kubernetes) beschrieben, mit:460 Stellen Sie das Gateway als Standard-Deployment plus Service und Ingress bereit, wie in [Kubernetes-Bereitstellung](/docs/de/claude-apps-gateway-deploy#kubernetes) beschrieben, mit:

459 461 

460 * `serviceAccountName: gateway`462 * `serviceAccountName: gateway`

461 * `gateway.yaml` gemountet aus einer ConfigMap und die Geheimnisse als Dateien bei `/secrets` gemountet463 * `gateway.yaml` gemountet aus einer ConfigMap und die Geheimnisse bei `/secrets` gemountet

462 * die Readiness-Probe auf `GET /readyz` gerichtet464 * die Readiness-Probe auf `GET /readyz` gerichtet

463 465 

464 Für das Front-End, ein Ingress, das vom AWS Load Balancer Controller verwaltet wird, stellt den internen ALB bereit. Kommentieren Sie es mit:466 Für das Front-End stellt ein Ingress, das vom AWS Load Balancer Controller verwaltet wird, den internen ALB bereit. Annotieren Sie es mit:

465 467 

466 * `alb.ingress.kubernetes.io/scheme: internal` und `alb.ingress.kubernetes.io/target-type: ip`468 * `alb.ingress.kubernetes.io/scheme: internal` und `alb.ingress.kubernetes.io/target-type: ip`

467 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, daher werden keine öffentlichen AAAA-Datensätze für die `/login` [private-Netzwerk-Prüfung](/docs/de/claude-apps-gateway#prerequisites) veröffentlicht, die sie ablehnt469 * `alb.ingress.kubernetes.io/ip-address-type: ipv4`, daher werden keine öffentlichen AAAA-Datensätze veröffentlicht, die die `/login` [private-Netzwerk-Prüfung](/docs/de/claude-apps-gateway#prerequisites) ablehnen würde

468 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, daher lässt die Controller-verwaltete Frontend-Sicherheitsgruppe nur Ihr Unternehmensnetzwerk anstelle des `0.0.0.0/0` Standards zu470 * `alb.ingress.kubernetes.io/inbound-cidrs: <your-corporate-cidr>`, daher lässt die Controller-verwaltete Frontend-Sicherheitsgruppe nur Ihr Unternehmensnetzwerk anstelle des `0.0.0.0/0` Standards zu

469 * `alb.ingress.kubernetes.io/certificate-arn` mit dem ACM-Zertifikat471 * `alb.ingress.kubernetes.io/certificate-arn` mit dem ACM-Zertifikat

470 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, daher fällt der Listener nicht auf die Legacy-Standard-Richtlinie zurück, die TLS 1.0 und 1.1 akzeptiert472 * `alb.ingress.kubernetes.io/ssl-policy: ELBSecurityPolicy-TLS13-1-2-2021-06`, daher fällt der Listener nicht auf die Legacy-Standard-Richtlinie zurück, die TLS 1.0 und 1.1 akzeptiert

471 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, eine Marge über dem Streaming-Keepalive des Gateways; siehe [Troubleshooting](#troubleshooting)473 * `alb.ingress.kubernetes.io/load-balancer-attributes: idle_timeout.timeout_seconds=3600`, eine Marge über dem Streaming-Keepalive des Gateways; siehe [Fehlerbehebung](#troubleshooting)

472 474 

473 Mit IRSA liest das AWS SDK ein projiziertes Service-Account-Token und tauscht es mit AWS STS aus, daher benötigt der Pod niemals den EC2-Instanz-Metadaten-Service; eine Egress-NetworkPolicy kann `169.254.169.254` für Gateway-Pods blockieren. Das Node-Hop-Limit-Problem in [Troubleshooting](#troubleshooting) unten gilt nur für Cluster, die IRSA überspringen und sich auf Node-Instanzrollen verlassen.475 Mit IRSA liest das AWS SDK ein projiziertes Service-Account-Token und tauscht es mit AWS STS aus, daher benötigt der Pod niemals den EC2-Instanz-Metadaten-Service; eine Egress-NetworkPolicy kann `169.254.169.254` für Gateway-Pods blockieren. Das Node-Hop-Limit-Problem in der [Fehlerbehebung](#troubleshooting) unten gilt nur für Cluster, die IRSA überspringen und sich auf Node-Instanzrollen verlassen.

474 </Tab>476 </Tab>

475 </Tabs>477 </Tabs>

476 </Step>478 </Step>

477 479 

478 <Step title="Pushen Sie die Gateway-URL zu Entwicklermaschinen">480 <Step title="Pushen Sie die Gateway-URL zu Entwicklermaschinen">

479 Das Gateway läuft jetzt, aber Entwickler können es von `/login` nicht erreichen, bis die Gateway-URL auf ihren Maschinen ist. Setzen Sie `forceLoginMethod` und `forceLoginGatewayUrl` in der [verwalteten Einstellungsdatei](/docs/de/claude-apps-gateway#set-the-gateway-url), die Sie über MDM auf jedes Gerät bereitstellen. Es gibt keine Gateway-Option im Login-Picker für einen Entwickler, um manuell auszuwählen.481 Das Gateway läuft jetzt, aber Entwickler können es von `/login` nicht erreichen, bis die Gateway-URL auf ihren Maschinen ist. Setzen Sie `forceLoginMethod` und `forceLoginGatewayUrl` in der [verwalteten Einstellungsdatei](/docs/de/claude-apps-gateway#set-the-gateway-url), die Sie über MDM auf jedes Gerät bereitstellen. Es gibt keine Gateway-Option im Login-Picker, die ein Entwickler manuell auswählen könnte.

480 </Step>482 </Step>

481</Steps>483</Steps>

482 484 

Details

384 384 

385* **PRs, die in einer Cloud-Sitzung erstellt wurden**: Öffnen Sie die Sitzung unter claude.ai/code, öffnen Sie die CI-Statusleiste und wählen Sie **Auto-fix**385* **PRs, die in einer Cloud-Sitzung erstellt wurden**: Öffnen Sie die Sitzung unter claude.ai/code, öffnen Sie die CI-Statusleiste und wählen Sie **Auto-fix**

386* **Von Ihrem Terminal**: Führen Sie [`/autofix-pr`](/docs/de/commands) aus, während Sie auf dem PR's Branch sind. Claude Code erkennt den offenen PR mit `gh`, spawnt eine Cloud-Sitzung und aktiviert Auto-fix in einem Schritt386* **Von Ihrem Terminal**: Führen Sie [`/autofix-pr`](/docs/de/commands) aus, während Sie auf dem PR's Branch sind. Claude Code erkennt den offenen PR mit `gh`, spawnt eine Cloud-Sitzung und aktiviert Auto-fix in einem Schritt

387* **Von der Mobile-App**: Sagen Sie Claude, den PR zu auto-fixen, zum Beispiel „watch this PR and fix any CI failures or review comments"387* **Von der Mobile-App**: Sagen Sie Claude, den PR zu auto-fixen, zum Beispiel „watch this PR and fix any CI failures or review comments“

388* **Jeder vorhandene PR**: Fügen Sie die PR-URL in eine Sitzung ein und sagen Sie Claude, den PR zu auto-fixen388* **Jeder vorhandene PR**: Fügen Sie die PR-URL in eine Sitzung ein und sagen Sie Claude, den PR zu auto-fixen

389 389 

390Auto-fix ist ein Pro-PR-Toggle. Um die Überwachung zu beenden, öffnen Sie die CI-Statusleiste in der Sitzung unter claude.ai/code und deaktivieren Sie den **Auto-fix**-Toggle, oder sagen Sie Claude, die Überwachung des PR zu beenden.390Auto-fix ist ein Pro-PR-Toggle. Um die Überwachung zu beenden, öffnen Sie die CI-Statusleiste in der Sitzung unter claude.ai/code und deaktivieren Sie den **Auto-fix**-Toggle, oder sagen Sie Claude, die Überwachung des PR zu beenden.


442`claude --cloud` und `claude --teleport` erfordern eine Anmeldung mit einem claude.ai-Konto. Wenn Sie sich mit einem API-Schlüssel authentifizieren oder Ihre gespeicherten Kontodaten veraltet sind, sehen Sie eine der folgenden Meldungen:442`claude --cloud` und `claude --teleport` erfordern eine Anmeldung mit einem claude.ai-Konto. Wenn Sie sich mit einem API-Schlüssel authentifizieren oder Ihre gespeicherten Kontodaten veraltet sind, sehen Sie eine der folgenden Meldungen:

443 443 

444* `Unable to get organization UUID`444* `Unable to get organization UUID`

445* Eine Meldung, dass die Authentifizierung per API-Schlüssel nicht ausreicht445* ``Cloud sessions need a claude.ai sign-in. Run `claude auth login` (or /login in a local session), then try again.``

446* `Error loading Claude Code sessions` in der Sitzungsauswahl, wenn Sie `claude --teleport` ohne eine Sitzungs-ID ausführen446* `Error loading Claude Code sessions` in der Sitzungsauswahl, wenn Sie `claude --teleport` ohne eine Sitzungs-ID ausführen

447 447 

448Führen Sie `/login` aus, um sich mit Ihrem claude.ai-Konto anzumelden, und versuchen Sie dann den Befehl erneut. Wenn der Fehler stattdessen Ihren Anbieter benennt, siehe die [Fehlertabelle](#errors-when-sending-to-a-cloud-session): Cloud-Sitzungen sind nicht über Drittanbieter verfügbar.448Führen Sie [`claude auth login`](/docs/de/cli-reference#cli-commands) in Ihrer Shell aus, um sich mit Ihrem claude.ai-Konto anzumelden, und versuchen Sie dann den Befehl erneut. Innerhalb einer laufenden Sitzung bewirkt `/login` dasselbe. Wenn der Fehler stattdessen Ihren Anbieter benennt, siehe die [Fehlertabelle](#errors-when-sending-to-a-cloud-session): Cloud-Sitzungen sind nicht über Drittanbieter verfügbar.

449 

450Von v2.1.274 bis v2.1.289 lautete die Anmeldemeldung `Claude Code cloud sessions require authentication with a Claude.ai account. API key authentication is not sufficient. Please run /login to authenticate, or check your authentication status with /status.`

449 451 

450<h3 id="remote-control-session-expired-or-access-denied">452<h3 id="remote-control-session-expired-or-access-denied">

451 Remote Control-Sitzung abgelaufen oder Zugriff verweigert453 Remote Control-Sitzung abgelaufen oder Zugriff verweigert

Details

34 oneLiner: 'Project instructions Claude reads every session',34 oneLiner: 'Project instructions Claude reads every session',

35 when: 'Loaded into context at the start of every session',35 when: 'Loaded into context at the start of every session',

36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',36 description: 'Project-specific instructions that shape how Claude works in this repository. Put your conventions, common commands, and architectural context here so Claude operates with the same assumptions your team does.',

37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> on its own or alongside CLAUDE.md</>],37 tips: ['Target under 200 lines. Longer files still load in full but may reduce adherence', <>CLAUDE.md loads into every session. If something only matters for specific tasks, move it to a <A href="/docs/en/skills">skill</A> or a path-scoped <A href="/docs/en/memory#organize-rules-with-claude/rules/">rule</A> so it loads only when needed</>, 'List the commands you run most, like build, test, and format, so Claude knows them without you spelling them out each time', <>Run <C>/memory</C> to open and edit CLAUDE.md from within a session</>, <>Also works at <C>.claude/CLAUDE.md</C> if you prefer to keep the project root clean</>, <>If your repo already has an <C>AGENTS.md</C> for other coding agents, Claude Code <A href="/docs/en/memory#agents-md">can read that</A> in place of a <C>CLAUDE.md</C></>],

38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',38 exampleIntro: 'This example is for a TypeScript and React project. It lists the build and test commands, the framework conventions Claude should follow, and project-specific rules like export style and file layout.',

39 example: `# Project conventions39 example: `# Project conventions

40 40 


1434 1434 

1435Unter Windows wird `~/.claude` zu `%USERPROFILE%\.claude` aufgelöst. Wenn Sie [`CLAUDE_CONFIG_DIR`](/docs/de/env-vars) setzen, lebt jeder `~/.claude`-Pfad auf dieser Seite stattdessen unter diesem Verzeichnis.1435Unter Windows wird `~/.claude` zu `%USERPROFILE%\.claude` aufgelöst. Wenn Sie [`CLAUDE_CONFIG_DIR`](/docs/de/env-vars) setzen, lebt jeder `~/.claude`-Pfad auf dieser Seite stattdessen unter diesem Verzeichnis.

1436 1436 

1437Die meisten Benutzer bearbeiten nur `CLAUDE.md` und `settings.json`. Wenn Ihr Repository bereits eine `AGENTS.md` für andere Coding-Agenten hat, kann Claude Code [diese](/docs/de/memory#agents-md) eigenständig oder zusammen mit `CLAUDE.md` lesen. Der Rest des Verzeichnisses ist optional: Fügen Sie Skills, Rules oder Subagents hinzu, wenn Sie sie benötigen.1437Die meisten Benutzer bearbeiten nur `CLAUDE.md` und `settings.json`. Wenn Ihr Repository bereits eine `AGENTS.md` für andere Coding-Agenten hat, kann Claude Code [diese](/docs/de/memory#agents-md) anstelle einer `CLAUDE.md` lesen. Der Rest des Verzeichnisses ist optional: Fügen Sie Skills, Regeln oder Subagenten hinzu, wenn Sie sie benötigen.

1438 1438 

1439<h2 id="explore-the-directory">1439<h2 id="explore-the-directory">

1440 Erkunden Sie das Verzeichnis1440 Erkunden Sie das Verzeichnis


1454| - | - | - |1454| - | - | - |

1455| `managed-settings.json` | Systemebene, variiert je nach Betriebssystem | Von Unternehmen erzwungene Einstellungen, die Sie nicht überschreiben können, mit Ausnahme von [engen Ausnahmen](/docs/de/settings#security-keys-where-the-stricter-value-applies). Siehe [wo die Datei gespeichert werden soll](/docs/de/managed-settings#deploy-a-managed-settings-file) und [welche verwaltete Quelle Claude Code verwendet](/docs/de/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Systemebene, variiert je nach Betriebssystem | Von Unternehmen erzwungene Einstellungen, die Sie nicht überschreiben können, mit Ausnahme von [engen Ausnahmen](/docs/de/settings#security-keys-where-the-stricter-value-applies). Siehe [wo die Datei gespeichert werden soll](/docs/de/managed-settings#deploy-a-managed-settings-file) und [welche verwaltete Quelle Claude Code verwendet](/docs/de/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Projektstammverzeichnis | Ihre privaten Voreinstellungen für dieses Projekt, geladen zusammen mit CLAUDE.md. Erstellen Sie es manuell und fügen Sie es zu `.gitignore` hinzu. |1456| `CLAUDE.local.md` | Projektstammverzeichnis | Ihre privaten Voreinstellungen für dieses Projekt, geladen zusammen mit CLAUDE.md. Erstellen Sie es manuell und fügen Sie es zu `.gitignore` hinzu. |

1457| `AGENTS.md` | Projektstammverzeichnis, `.claude/` oder ein beliebiges Verzeichnis | Projektanweisungen, die Sie für KI-Codierungs-Agenten schreiben. Claude Code kann [sie laden](/docs/de/memory#agents-md) eigenständig oder zusammen mit `CLAUDE.md`. |1457| `AGENTS.md` | Projektstammverzeichnis, `.claude/` oder ein beliebiges Verzeichnis | Projektanweisungen, die Sie für KI-Codierungs-Agenten schreiben. Claude Code kann sie anstelle einer `CLAUDE.md` [laden](/docs/de/memory#agents-md). |

1458| Installierte Plugins | `~/.claude/plugins` | Geklonte Marketplaces, installierte Plugin-Versionen, der `installed_plugins.json`-Installationsdatensatz und Pro-Plugin-Daten, verwaltet durch `claude plugin`-Befehle. Plugins [synchronisiert von Ihrem claude.ai-Konto](/docs/de/plugins/loading#synced-plugins) werden in `~/.claude/plugins/synced/` heruntergeladen. Für ein Plugin, das von einem Marketplace mit [`command`-Quelle](/docs/de/plugins/marketplace-reference#command-plugin-source) im Link-Modus installiert wurde, speichert Claude Code hier Links statt einer Kopie, und die Dateien des Plugins bleiben in dem Verzeichnis, das der Befehl ausgibt. Eine `command`-Quelle erfordert Claude Code v2.1.229 oder später. Ein Plugin, das nach relativem Pfad in einem Marketplace aufgelistet ist, den Sie über einen lokalen Pfad hinzugefügt haben, wird ebenfalls [an Ort und Stelle geladen](/docs/de/plugins/loading#find-plugins-on-disk) aus seinem Quellverzeichnis statt aus einer Cache-Kopie. Siehe [Plugin-Caching](/docs/de/plugins/loading#find-plugins-on-disk) für die Bereinigung verwaister Versionen. |1458| Installierte Plugins | `~/.claude/plugins` | Geklonte Marketplaces, installierte Plugin-Versionen, der `installed_plugins.json`-Installationsdatensatz und Pro-Plugin-Daten, verwaltet durch `claude plugin`-Befehle. Plugins [synchronisiert von Ihrem claude.ai-Konto](/docs/de/plugins/loading#synced-plugins) werden in `~/.claude/plugins/synced/` heruntergeladen. Für ein Plugin, das von einem Marketplace mit [`command`-Quelle](/docs/de/plugins/marketplace-reference#command-plugin-source) im Link-Modus installiert wurde, speichert Claude Code hier Links statt einer Kopie, und die Dateien des Plugins bleiben in dem Verzeichnis, das der Befehl ausgibt. Eine `command`-Quelle erfordert Claude Code v2.1.229 oder später. Ein Plugin, das nach relativem Pfad in einem Marketplace aufgelistet ist, den Sie über einen lokalen Pfad hinzugefügt haben, wird ebenfalls [an Ort und Stelle geladen](/docs/de/plugins/loading#find-plugins-on-disk) aus seinem Quellverzeichnis statt aus einer Cache-Kopie. Siehe [Plugin-Caching](/docs/de/plugins/loading#find-plugins-on-disk) für die Bereinigung verwaister Versionen. |

1459 1459 

1460`~/.claude` enthält auch Daten, die Claude Code während der Arbeit schreibt: Transkripte, Prompt-Verlauf, Datei-Snapshots, Caches und Logs. Siehe [Anwendungsdaten](#application-data) unten.1460`~/.claude` enthält auch Daten, die Claude Code während der Arbeit schreibt: Transkripte, Prompt-Verlauf, Datei-Snapshots, Caches und Logs. Siehe [Anwendungsdaten](#application-data) unten.

Details

31| `claude attach <id\|name>` | Verbinden Sie sich mit einer [Hintergrundsitzung](/docs/de/agent-view#manage-sessions-from-the-shell) in diesem Terminal. Die Übergabe eines Teils des Namens einer laufenden Sitzung anstelle der ID erfordert Claude Code v2.1.290 oder später | `claude attach 7c5dcf5d` |31| `claude attach <id\|name>` | Verbinden Sie sich mit einer [Hintergrundsitzung](/docs/de/agent-view#manage-sessions-from-the-shell) in diesem Terminal. Die Übergabe eines Teils des Namens einer laufenden Sitzung anstelle der ID erfordert Claude Code v2.1.290 oder später | `claude attach 7c5dcf5d` |

32| `claude auto-mode defaults` | Drucken Sie die integrierten [Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) Klassifikatorregeln als JSON. Verwenden Sie `claude auto-mode config`, um Ihre effektive Konfiguration mit angewendeten Einstellungen anzuzeigen. `--label <prefix>` druckt nur die Regeln, deren Bezeichnung mit diesem Präfix beginnt, Groß- und Kleinschreibung wird nicht beachtet. Erfordert Claude Code v2.1.208 oder später | `claude auto-mode defaults --label 'Git Destructive'` |32| `claude auto-mode defaults` | Drucken Sie die integrierten [Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) Klassifikatorregeln als JSON. Verwenden Sie `claude auto-mode config`, um Ihre effektive Konfiguration mit angewendeten Einstellungen anzuzeigen. `--label <prefix>` druckt nur die Regeln, deren Bezeichnung mit diesem Präfix beginnt, Groß- und Kleinschreibung wird nicht beachtet. Erfordert Claude Code v2.1.208 oder später | `claude auto-mode defaults --label 'Git Destructive'` |

33| `claude auto-mode reset` | Stellen Sie die Standard-[Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) Konfiguration wieder her, indem Sie den `autoMode` Abschnitt aus Ihrer Benutzereinstellungsdatei entfernen. Fordert zur Bestätigung auf, bevor geschrieben wird; übergeben Sie `-y`/`--yes`, um die Eingabeaufforderung zu überspringen. Regeln aus [verwalteten Einstellungen](/docs/de/server-managed-settings) oder dem `--settings` Flag gelten weiterhin. Erfordert Claude Code v2.1.212 oder später. Siehe [Überprüfen Sie die Standardwerte und Ihre effektive Konfiguration](/docs/de/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |33| `claude auto-mode reset` | Stellen Sie die Standard-[Auto-Modus](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) Konfiguration wieder her, indem Sie den `autoMode` Abschnitt aus Ihrer Benutzereinstellungsdatei entfernen. Fordert zur Bestätigung auf, bevor geschrieben wird; übergeben Sie `-y`/`--yes`, um die Eingabeaufforderung zu überspringen. Regeln aus [verwalteten Einstellungen](/docs/de/server-managed-settings) oder dem `--settings` Flag gelten weiterhin. Erfordert Claude Code v2.1.212 oder später. Siehe [Überprüfen Sie die Standardwerte und Ihre effektive Konfiguration](/docs/de/auto-mode-config#inspect-the-defaults-and-your-effective-config) | `claude auto-mode reset --yes` |

34| `claude daemon logs` | Verfolgen Sie die Logdatei des Hintergrund-Sitzungs-[Supervisors](/docs/de/agent-view#the-supervisor-process), `~/.claude/daemon.log`, wobei neue Zeilen ausgegeben werden, sobald sie eintreffen, bis Sie `Ctrl+C` drücken | `claude daemon logs` |

35| `claude daemon run` | Führen Sie den Hintergrund-Sitzungs-[Supervisor](/docs/de/agent-view#the-supervisor-process) im Vordergrund dieses Terminals aus und geben Sie sein Log aus | `claude daemon run` |

34| `claude daemon status` | Drucken Sie den Hintergrund-Sitzungs-[Supervisor](/docs/de/agent-view#the-supervisor-process) Status, Version, Socket-Verzeichnis und Worker-Anzahl für Diagnosen. Beendet mit 1, wenn der Supervisor nicht läuft | `claude daemon status` |36| `claude daemon status` | Drucken Sie den Hintergrund-Sitzungs-[Supervisor](/docs/de/agent-view#the-supervisor-process) Status, Version, Socket-Verzeichnis und Worker-Anzahl für Diagnosen. Beendet mit 1, wenn der Supervisor nicht läuft | `claude daemon status` |

35| `claude daemon stop --any` | Stoppen Sie den Hintergrund-Sitzungs-[Supervisor](/docs/de/agent-view#the-supervisor-process) und die Sitzungen, die er hostet. Übergeben Sie `--keep-workers`, um Hintergrundsitzungen laufen zu lassen, damit sich der nächste Supervisor mit ihnen verbindet. `--any` bestätigt das Stoppen eines On-Demand-Supervisors, was die Standardeinstellung ist. Verwenden Sie dies, um sich von einem [nicht reagierenden Supervisor](/docs/de/agent-view#agent-view-says-the-background-service-did-not-respond) zu erholen | `claude daemon stop --any --keep-workers` |37| `claude daemon stop --any` | Stoppen Sie den Hintergrund-Sitzungs-[Supervisor](/docs/de/agent-view#the-supervisor-process) und die Sitzungen, die er hostet. Übergeben Sie `--keep-workers`, um Hintergrundsitzungen laufen zu lassen, damit sich der nächste Supervisor mit ihnen verbindet. `--any` bestätigt das Stoppen eines On-Demand-Supervisors, was die Standardeinstellung ist. Verwenden Sie dies, um sich von einem [nicht reagierenden Supervisor](/docs/de/agent-view#agent-view-says-the-background-service-did-not-respond) zu erholen | `claude daemon stop --any --keep-workers` |

36| `claude doctor` | Drucken Sie schreibgeschützte Installations- und Einstellungsdiagnosen vom Terminal aus, ohne eine Sitzung zu starten, einschließlich Installationsintegrität, Validierungsfehlern in der Einstellungsdatei und Remote Control-Berechtigung. Für die In-Session-Setup-Überprüfung, die auch Fixes anwenden kann, führen Sie [`/doctor`](/docs/de/commands#all-commands) aus | `claude doctor` |38| `claude doctor` | Drucken Sie schreibgeschützte Installations- und Einstellungsdiagnosen vom Terminal aus, ohne eine Sitzung zu starten, einschließlich Installationsintegrität, Validierungsfehlern in der Einstellungsdatei und Remote Control-Berechtigung. Für die In-Session-Setup-Überprüfung, die auch Fixes anwenden kann, führen Sie [`/doctor`](/docs/de/commands#all-commands) aus | `claude doctor` |

Details

1586 1586 

1587Die Sitzung durchläuft einen realistischen Ablauf mit repräsentativen Token-Zählungen:1587Die Sitzung durchläuft einen realistischen Ablauf mit repräsentativen Token-Zählungen:

1588 1588 

1589* **Bevor Sie etwas eingeben**: CLAUDE.md, automatisches Gedächtnis, MCP-Tool-Namen und Skill-Beschreibungen werden alle in den Kontext geladen. [AGENTS.md-Dateien](/docs/de/memory#agents-md) können auch geladen werden, eigenständig oder zusammen mit CLAUDE.md. Ihr eigenes Setup kann hier mehr hinzufügen, wie ein [Ausgabestil](/docs/de/output-styles) oder Text aus [`--append-system-prompt`](/docs/de/cli-reference).1589* **Bevor Sie etwas eingeben**: CLAUDE.md, Auto-Memory, MCP-Tool-Namen und Skill-Beschreibungen werden alle in den Kontext geladen. [AGENTS.md-Dateien](/docs/de/memory#agents-md) können anstelle von CLAUDE.md geladen werden. Ihr eigenes Setup kann hier mehr hinzufügen, wie ein [Ausgabestil](/docs/de/output-styles) oder Text aus [`--append-system-prompt`](/docs/de/cli-reference).

1590* **Während Claude arbeitet**: Jeder Dateilesevorgang fügt zum Kontext hinzu, [pfadgebundene Regeln](/docs/de/memory#path-specific-rules) werden automatisch zusammen mit übereinstimmenden Dateien geladen, und ein [PostToolUse Hook](/docs/de/hooks-guide) wird nach jeder Bearbeitung ausgelöst.1590* **Während Claude arbeitet**: Jeder Dateilesevorgang fügt zum Kontext hinzu, [pfadgebundene Regeln](/docs/de/memory#path-specific-rules) werden automatisch zusammen mit übereinstimmenden Dateien geladen, und ein [PostToolUse Hook](/docs/de/hooks-guide) wird nach jeder Bearbeitung ausgelöst.

1591* **Die Folgeeingabeaufforderung**: Ein [Subagent](/docs/de/sub-agents) verarbeitet die Recherche in seinem eigenen separaten Kontextfenster, sodass die großen Dateilesevorgang außerhalb des Ihren bleiben. Nur die Zusammenfassung und ein kleiner Metadaten-Trailer kommen zurück.1591* **Die Folgeeingabeaufforderung**: Ein [Subagent](/docs/de/sub-agents) verarbeitet die Recherche in seinem eigenen separaten Kontextfenster, sodass die großen Dateilesevorgang außerhalb des Ihren bleiben. Nur die Zusammenfassung und ein kleiner Metadaten-Trailer kommen zurück.

1592* **Am Ende der Anleitung**: Sie führen `/compact` aus, das die Konversation durch eine strukturierte Zusammenfassung ersetzt. Der meiste Startinhalt wird automatisch neu geladen; die folgende Tabelle zeigt, was mit jedem Mechanismus geschieht.1592* **Am Ende der Anleitung**: Sie führen `/compact` aus, das die Konversation durch eine strukturierte Zusammenfassung ersetzt. Der meiste Startinhalt wird automatisch neu geladen; die folgende Tabelle zeigt, was mit jedem Mechanismus geschieht.

desktop.md +1 −1

Details

1092Um zu sehen, welche Version der Desktop-App Sie ausführen:1092Um zu sehen, welche Version der Desktop-App Sie ausführen:

1093 1093 

1094* **macOS**: Klicken Sie auf **Claude** in der Menüleiste und dann auf **Über Claude**1094* **macOS**: Klicken Sie auf **Claude** in der Menüleiste und dann auf **Über Claude**

1095* **Windows**: Klicken Sie auf **Hilfe** und dann auf **Über**1095* **Windows**: Klicken Sie auf **Hilfe** und dann auf **Über Claude**

1096 1096 

1097Klicken Sie auf die Versionsnummer, um sie in Ihre Zwischenablage zu kopieren.1097Klicken Sie auf die Versionsnummer, um sie in Ihre Zwischenablage zu kopieren.

1098 1098 

Details

92* Speichern Sie einen Screenshot mit **Cmd+S** oder eine Bildschirmaufzeichnung mit **Cmd+R**, indem Sie die Erfassungsschaltflächen des Bereichs oder die Tastenkombinationen verwenden; die Dateien werden auf Ihrem Desktop gespeichert92* Speichern Sie einen Screenshot mit **Cmd+S** oder eine Bildschirmaufzeichnung mit **Cmd+R**, indem Sie die Erfassungsschaltflächen des Bereichs oder die Tastenkombinationen verwenden; die Dateien werden auf Ihrem Desktop gespeichert

93* Beenden Sie das Streaming eines Geräts, ohne es auszuschalten, indem Sie auf **Detach simulator** klicken, das den Bereich in seinen Zustand **Attach simulator** zurückversetzt93* Beenden Sie das Streaming eines Geräts, ohne es auszuschalten, indem Sie auf **Detach simulator** klicken, das den Bereich in seinen Zustand **Attach simulator** zurückversetzt

94 94 

95Um den Videostrom vom Simulator zu optimieren, öffnen Sie das Menü **Display** des Bereichs. Senken Sie **Frame rate** oder **Resolution**, wenn der Bereich Ihren Mac belastet. Beide Einstellungen ändern, wie der Bereich das Gerät anzeigt, nicht wie die App läuft.95Wenn der Bereich ein Menü **Display** anzeigt, verwenden Sie es, um den Videostream vom Simulator anzupassen. Senken Sie **Frame rate** oder **Resolution**, wenn der Bereich Ihren Mac belastet. Beide Einstellungen ändern, wie der Bereich das Gerät anzeigt, nicht wie die App läuft.

96 96 

97Sie und Claude steuern das gleiche Gerät, daher ändern Ihre Taps den App-Status, den Claude sieht. Um Claude einen bestimmten Bildschirm überprüfen zu lassen, navigieren Sie dorthin, indem Sie tippen, und fragen Sie dann. Während Claude das Gerät steuert, zeigt der Bereich ein Badge **Claude is using this device** über dem Bildschirm an; halten Sie mit dem Tippen an, bis das Badge verschwindet, damit das Ergebnis die App und nicht Ihre Eingabe widerspiegelt.97Sie und Claude steuern das gleiche Gerät, daher ändern Ihre Taps den App-Status, den Claude sieht. Um Claude einen bestimmten Bildschirm überprüfen zu lassen, navigieren Sie dorthin, indem Sie tippen, und fragen Sie dann. Während Claude das Gerät steuert, zeigt der Bereich ein Badge **Claude is using this device** über dem Bildschirm an; halten Sie mit dem Tippen an, bis das Badge verschwindet, damit das Ergebnis die App und nicht Ihre Eingabe widerspiegelt.

98 98 

env-vars.md +1 −0

Details

354| `CLAUDE_CODE_PERFORCE_MODE` | Auf `1` setzen, um einen Perforce-kompatiblen Schreibschutz zu aktivieren. Wenn gesetzt, schlagen Edit, Write und NotebookEdit mit dem Hinweis `p4 edit <file>` fehl, wenn der Zieldatei das Schreibbit für den Eigentümer fehlt, das Perforce bei synchronisierten Dateien entfernt, bis `p4 edit` sie öffnet. Dadurch wird verhindert, dass Claude Code die Änderungsverfolgung von Perforce umgeht |354| `CLAUDE_CODE_PERFORCE_MODE` | Auf `1` setzen, um einen Perforce-kompatiblen Schreibschutz zu aktivieren. Wenn gesetzt, schlagen Edit, Write und NotebookEdit mit dem Hinweis `p4 edit <file>` fehl, wenn der Zieldatei das Schreibbit für den Eigentümer fehlt, das Perforce bei synchronisierten Dateien entfernt, bis `p4 edit` sie öffnet. Dadurch wird verhindert, dass Claude Code die Änderungsverfolgung von Perforce umgeht |

355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Überschreibt das Stammverzeichnis für Plugins. Anders als der Name vermuten lässt, legt dies das übergeordnete Verzeichnis fest, nicht den Cache selbst: Marketplaces und der Plugin-Cache liegen in Unterverzeichnissen unter diesem Pfad. Standardmäßig `~/.claude/plugins` |355| `CLAUDE_CODE_PLUGIN_CACHE_DIR` | Überschreibt das Stammverzeichnis für Plugins. Anders als der Name vermuten lässt, legt dies das übergeordnete Verzeichnis fest, nicht den Cache selbst: Marketplaces und der Plugin-Cache liegen in Unterverzeichnissen unter diesem Pfad. Standardmäßig `~/.claude/plugins` |

356| `CLAUDE_CODE_PLUGIN_DIRS` | Plugin-Verzeichnisse, die für die Sitzung geladen werden, jeweils so, wie ein [`--plugin-dir`](/docs/de/plugins/cli-reference#flags-that-load-a-plugin-for-one-session)-Flag sie lädt. Trennen Sie mehrere Pfade mit `:` unter Unix oder `;` unter Windows. Geben Sie jeden Pfad als absoluten Pfad an oder beginnen Sie ihn mit `~`, da Claude Code relative Pfade überspringt. Erfordert Claude Code v2.1.280 oder höher. Siehe [Ein Plugin für eine Sitzung laden](/docs/de/plugins/create#load-a-directory-or-archive-for-one-session) |356| `CLAUDE_CODE_PLUGIN_DIRS` | Plugin-Verzeichnisse, die für die Sitzung geladen werden, jeweils so, wie ein [`--plugin-dir`](/docs/de/plugins/cli-reference#flags-that-load-a-plugin-for-one-session)-Flag sie lädt. Trennen Sie mehrere Pfade mit `:` unter Unix oder `;` unter Windows. Geben Sie jeden Pfad als absoluten Pfad an oder beginnen Sie ihn mit `~`, da Claude Code relative Pfade überspringt. Erfordert Claude Code v2.1.280 oder höher. Siehe [Ein Plugin für eine Sitzung laden](/docs/de/plugins/create#load-a-directory-or-archive-for-one-session) |

357| `CLAUDE_CODE_PLUGIN_DIR_WATCH` | Steuert, ob Claude Code einen [Mod](/docs/de/plugins/mods/overview) neu lädt, wenn sich die Dateien des Mods ändern. Das Neuladen gilt für einen Mod, den Sie mit `--plugin-dir` aus einem Verzeichnis laden, und ist in interaktiven Sitzungen standardmäßig aktiviert. Setzen Sie den Wert auf `1`, um es auch in nicht interaktiven Sitzungen zu aktivieren, oder auf `0`, um es in jeder Sitzung zu deaktivieren. Erfordert Claude Code v2.1.287 oder neuer. Siehe [Einstellungen und Umgebungsvariablen für Mods](/docs/de/plugins/mods/reference#settings-and-environment-variables) |

357| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in Millisekunden für das Klonen oder Aktualisieren eines Plugin-Marketplace (Standard: 120000). Erhöhen Sie diesen Wert bei großen Repositorys oder langsamen Netzwerkverbindungen. Siehe [Git clone timed out](/docs/de/plugins/troubleshooting#git-clone-timed-out-after-120s) |358| `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS` | Timeout in Millisekunden für das Klonen oder Aktualisieren eines Plugin-Marketplace (Standard: 120000). Erhöhen Sie diesen Wert bei großen Repositorys oder langsamen Netzwerkverbindungen. Siehe [Git clone timed out](/docs/de/plugins/troubleshooting#git-clone-timed-out-after-120s) |

358| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Auf `1` setzen, um den erneuten Klonversuch zu überspringen und den vorhandenen Marketplace-Checkout weiter zu verwenden, wenn eine Marketplace-Aktualisierung das Remote nicht erreichen oder sich dort nicht authentifizieren kann. Nützlich in Offline- oder Air-Gap-Umgebungen, in denen ein erneutes Klonen auf dieselbe Weise fehlschlagen würde. Siehe [Marketplace-Updates schlagen in Offline-Umgebungen fehl](/docs/de/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |359| `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE` | Auf `1` setzen, um den erneuten Klonversuch zu überspringen und den vorhandenen Marketplace-Checkout weiter zu verwenden, wenn eine Marketplace-Aktualisierung das Remote nicht erreichen oder sich dort nicht authentifizieren kann. Nützlich in Offline- oder Air-Gap-Umgebungen, in denen ein erneutes Klonen auf dieselbe Weise fehlschlagen würde. Siehe [Marketplace-Updates schlagen in Offline-Umgebungen fehl](/docs/de/plugins/troubleshooting#marketplace-updates-keep-failing-offline) |

359| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Auf `1` setzen, um GitHub-Quellen in der Kurzform `owner/repo` über HTTPS statt über SSH zu klonen. Gilt für die Installation und Aktualisierung von Plugins sowie für `/plugin marketplace add` und `update`. Nützlich in CI-Runnern, Containern oder jeder Umgebung ohne konfigurierten SSH-Schlüssel für `github.com` |360| `CLAUDE_CODE_PLUGIN_PREFER_HTTPS` | Auf `1` setzen, um GitHub-Quellen in der Kurzform `owner/repo` über HTTPS statt über SSH zu klonen. Gilt für die Installation und Aktualisierung von Plugins sowie für `/plugin marketplace add` und `update`. Nützlich in CI-Runnern, Containern oder jeder Umgebung ohne konfigurierten SSH-Schlüssel für `github.com` |

errors.md +2 −3

Details

197| `Cloud sessions cannot be created from a --restricted session` | [Befehlszeilenfehler](#cloud-sessions-cannot-be-created-from-a-restricted-session) |197| `Cloud sessions cannot be created from a --restricted session` | [Befehlszeilenfehler](#cloud-sessions-cannot-be-created-from-a-restricted-session) |

198| `Cloud sessions are disabled by your organization's policy` | [Befehlszeilenfehler](#cloud-sessions-are-disabled-by-your-organizations-policy) |198| `Cloud sessions are disabled by your organization's policy` | [Befehlszeilenfehler](#cloud-sessions-are-disabled-by-your-organizations-policy) |

199| `Couldn't verify your organization's policy for cloud sessions` | [Befehlszeilenfehler](#cloud-sessions-are-disabled-by-your-organizations-policy) |199| `Couldn't verify your organization's policy for cloud sessions` | [Befehlszeilenfehler](#cloud-sessions-are-disabled-by-your-organizations-policy) |

200| `Cloud sessions need a claude.ai sign-in` | [Unable to get organization UUID](/docs/de/claude-code-on-the-web#unable-to-get-organization-uuid) |

200| `Error: --json-schema is not a valid JSON Schema` | [Befehlszeilenfehler](#the-json-schema-value-is-not-a-valid-json-schema) |201| `Error: --json-schema is not a valid JSON Schema` | [Befehlszeilenfehler](#the-json-schema-value-is-not-a-valid-json-schema) |

201| `Error: Invalid --agents configuration:` | [Befehlszeilenfehler](#invalid-agents-configuration) |202| `Error: Invalid --agents configuration:` | [Befehlszeilenfehler](#invalid-agents-configuration) |

202| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Befehlszeilenfehler](#invalid-agents-configuration) |203| `Error: --agents takes a JSON object, or a file path only with --print (-p)` | [Befehlszeilenfehler](#invalid-agents-configuration) |


387* 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`.388* 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`.

388* 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 sendet die Anfrage höchstens einmal erneut, außerhalb des oben genannten Budgets von 10 Versuchen. 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`.389* 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 sendet die Anfrage höchstens einmal erneut, außerhalb des oben genannten Budgets von 10 Versuchen. 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`.

389* 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.390* 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.

391* 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.

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

391 * 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.393 * 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.

392* Eine Anfrage, die abgelehnt wird, weil die Eingabe zuzüglich `max_tokens` das Kontextlimit überschreitet. Ein unverändertes erneutes Senden würde auf dieselbe Weise fehlschlagen, daher versucht Claude Code es mit einem reduzierten `max_tokens` erneut und beendet die Wiederholungsversuche und komprimiert stattdessen in zwei Fällen:394* Eine Anfrage, die abgelehnt wird, weil die Eingabe zuzüglich `max_tokens` das Kontextlimit überschreitet. Ein unverändertes erneutes Senden würde auf dieselbe Weise fehlschlagen, daher versucht Claude Code es mit einem reduzierten `max_tokens` erneut und beendet die Wiederholungsversuche und komprimiert stattdessen in zwei Fällen:


405* Eine [Amazon Bedrock-Streaming-Antwort mit unerwartetem Content-Type](#bedrock-streaming-response-has-an-unexpected-content-type), da das Gateway oder der Proxy, der die Antwort umschreibt, den Wiederholungsversuch auf dieselbe Weise umschreiben würde. Erfordert Claude Code v2.1.208 oder höher.407* Eine [Amazon Bedrock-Streaming-Antwort mit unerwartetem Content-Type](#bedrock-streaming-response-has-an-unexpected-content-type), da das Gateway oder der Proxy, der die Antwort umschreibt, den Wiederholungsversuch auf dieselbe Weise umschreiben würde. Erfordert Claude Code v2.1.208 oder höher.

406* Einen Wiederholungsversuch ohne Streaming für eine fehlgeschlagene Streaming-Anfrage, der einen Erfolgsstatus, aber [keine Claude API-Nachricht im Body](#api-returned-an-empty-or-malformed-response) erhält. Claude Code beendet den Turn mit diesem Fehler.408* Einen Wiederholungsversuch ohne Streaming für eine fehlgeschlagene Streaming-Anfrage, der einen Erfolgsstatus, aber [keine Claude API-Nachricht im Body](#api-returned-an-empty-or-malformed-response) erhält. Claude Code beendet den Turn mit diesem Fehler.

407* Eine Anfrage, die von der Richtlinienprüfung Ihrer Organisation abgelehnt wurde; dies erscheint als `API Error:`-Zeile mit der Ablehnungsmeldung. Die Administratoren Ihrer Organisation richten die Prüfung mit [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks) ein, einer Funktion von Claude Enterprise, und die Meldung endet mit den von ihnen konfigurierten Anweisungen oder fordert Sie standardmäßig auf, sich an sie zu wenden. Claude Code sendet die abgelehnte Anfrage weder erneut an dasselbe Modell noch an ein [Fallback-Modell](/docs/de/model-config#fallback-model-chains), da sich die Ablehnung auf den Inhalt der Anfrage und nicht auf das Modell bezieht. Vor v2.1.239 konnte Claude Code eine abgelehnte Anfrage ohne Streaming oder an ein konfiguriertes Fallback-Modell erneut senden, bevor Ihnen die Ablehnung angezeigt wurde.409* Eine Anfrage, die von der Richtlinienprüfung Ihrer Organisation abgelehnt wurde; dies erscheint als `API Error:`-Zeile mit der Ablehnungsmeldung. Die Administratoren Ihrer Organisation richten die Prüfung mit [Inference hooks](https://platform.claude.com/docs/en/manage-claude/inference-hooks) ein, einer Funktion von Claude Enterprise, und die Meldung endet mit den von ihnen konfigurierten Anweisungen oder fordert Sie standardmäßig auf, sich an sie zu wenden. Claude Code sendet die abgelehnte Anfrage weder erneut an dasselbe Modell noch an ein [Fallback-Modell](/docs/de/model-config#fallback-model-chains), da sich die Ablehnung auf den Inhalt der Anfrage und nicht auf das Modell bezieht. Vor v2.1.239 konnte Claude Code eine abgelehnte Anfrage ohne Streaming oder an ein konfiguriertes Fallback-Modell erneut senden, bevor Ihnen die Ablehnung angezeigt wurde.

408* Eine Antwort, die vom Inhaltsfilter für die Ausgabe der API blockiert wurde. Claude Code zeigt sofort [Output blocked by content filtering policy](#output-blocked-by-content-filtering-policy) an und versucht diese Anfrage weder erneut noch sendet es sie erneut.

409 410 

410<h3 id="what-you-see-while-claude-code-retries-or-waits">411<h3 id="what-you-see-while-claude-code-retries-or-waits">

411 Was Sie sehen, während Claude Code es erneut versucht oder wartet412 Was Sie sehen, während Claude Code es erneut versucht oder wartet


2905API Error: Output blocked by content filtering policy2906API Error: Output blocked by content filtering policy

2906```2907```

2907 2908 

2908Claude Code zeigt den Fehler an, sobald die Blockierung eintrifft, und beendet die Anfrage dort. Es versucht die Anfrage nicht erneut, sendet sie nicht ohne Streaming erneut und wechselt nicht zu einem [Fallback-Modell](/docs/de/model-config#fallback-model-chains). Vor v2.1.285 konnte Claude Code eine blockierte Anfrage erneut senden und erneut versuchen, manchmal minutenlang, bevor Ihnen der Fehler angezeigt wurde.

2909 

2910**Was zu tun ist:**2909**Was zu tun ist:**

2911 2910 

2912* Formulieren Sie Ihre letzte Nachricht um oder wählen Sie einen anderen Ansatz2911* Formulieren Sie Ihre letzte Nachricht um oder wählen Sie einen anderen Ansatz

glossary.md +1 −1

Details

130 130 

131Eine Markdown-Datei mit persistenten Anweisungen, die Sie für Claude schreiben, geladen zu Beginn jeder Sitzung als Benutzernachricht nach dem System-Prompt. Legen Sie Projektkonventionen, Architekturnotizen und „immer X tun“-Regeln hier ab. CLAUDE.md überlebt [Komprimierung](#compaction) und wird danach frisch von der Festplatte neu gelesen.131Eine Markdown-Datei mit persistenten Anweisungen, die Sie für Claude schreiben, geladen zu Beginn jeder Sitzung als Benutzernachricht nach dem System-Prompt. Legen Sie Projektkonventionen, Architekturnotizen und „immer X tun“-Regeln hier ab. CLAUDE.md überlebt [Komprimierung](#compaction) und wird danach frisch von der Festplatte neu gelesen.

132 132 

133Sie können CLAUDE.md im Projektbereich in `./CLAUDE.md` oder `./.claude/CLAUDE.md`, im Benutzerbereich in `~/.claude/CLAUDE.md` oder als [verwaltete Richtlinie](#managed-settings) für Ihre Organisation platzieren. Alle gefundenen Dateien werden in den Kontext verkettet, anstatt sich gegenseitig zu überschreiben, geordnet vom breitesten Bereich zum spezifischsten. Claude Code kann auch die [AGENTS.md](#agents-md)-Dateien eines Projekts laden, eigenständig oder zusammen mit CLAUDE.md.133Sie können CLAUDE.md im Projekt-Geltungsbereich in `./CLAUDE.md` oder `./.claude/CLAUDE.md`, im Benutzer-Geltungsbereich in `~/.claude/CLAUDE.md` oder als [verwaltete Richtlinie](#managed-settings) für Ihre Organisation platzieren. Alle gefundenen Dateien werden in den Kontext verkettet, anstatt sich gegenseitig zu überschreiben, geordnet vom breitesten Geltungsbereich zum spezifischsten. Claude Code kann anstelle von CLAUDE.md auch die [AGENTS.md](#agents-md)-Dateien eines Projekts laden.

134 134 

135Weitere Informationen: [CLAUDE.md-Dateien](/docs/de/memory#claude-md-files)135Weitere Informationen: [CLAUDE.md-Dateien](/docs/de/memory#claude-md-files)

136 136 

Details

151Fordern Sie Zugriff auf Claude-Modelle in Google Cloud's Agent Platform an:151Fordern Sie Zugriff auf Claude-Modelle in Google Cloud's Agent Platform an:

152 152 

1531. Navigieren Sie zum [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)1531. Navigieren Sie zum [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden)

1542. Suchen Sie nach „Claude"-Modellen1542. Suchen Sie nach „Claude“-Modellen

1553. Fordern Sie Zugriff auf gewünschte Claude-Modelle an (z. B. Claude Sonnet 4.6)1553. Fordern Sie Zugriff auf gewünschte Claude-Modelle an (z. B. Claude Sonnet 4.6)

1564. Warten Sie auf Genehmigung (kann 24–48 Stunden dauern)1564. Warten Sie auf Genehmigung (kann 24–48 Stunden dauern)

157 157 


210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1210export VERTEX_REGION_CLAUDE_4_6_SONNET=europe-west1

211```211```

212 212 

213Die meisten Modellversionen haben eine entsprechende `VERTEX_REGION_CLAUDE_*`-Variable. Siehe die [Referenz für Umgebungsvariablen](/docs/de/env-vars) für die vollständige Liste. Überprüfen Sie [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), um zu bestimmen, welche Modelle globale Endpunkte versus nur regionale Endpunkte unterstützen.213Die meisten Modellversionen haben eine entsprechende `VERTEX_REGION_CLAUDE_*`-Variable. Siehe die [Referenz für Umgebungsvariablen](/docs/de/env-vars#variables) für die vollständige Liste. Überprüfen Sie [Google Cloud's Agent Platform Model Garden](https://console.cloud.google.com/vertex-ai/model-garden), um zu bestimmen, welche Modelle globale Endpunkte versus nur regionale Endpunkte unterstützen.

214 214 

215Wenn ein Regionswert nicht wie ein Regions- oder Standortname aussieht, behandelt Claude Code ihn als nicht gesetzt. Beispielsweise behandelt Claude Code einen Wert, der einen Schrägstrich, Punkt oder Leerzeichen enthält, als nicht gesetzt. Claude Code fällt für jede Variable auf eine andere Quelle zurück:215Wenn ein Regionswert nicht wie ein Regions- oder Standortname aussieht, behandelt Claude Code ihn als nicht gesetzt. Beispielsweise behandelt Claude Code einen Wert, der einen Schrägstrich, Punkt oder Leerzeichen enthält, als nicht gesetzt. Claude Code fällt für jede Variable auf eine andere Quelle zurück:

216 216 


350 Fehlerbehebung350 Fehlerbehebung

351</h2>351</h2>

352 352 

353Wenn Sie auf Fehler „Could not load the default credentials" stoßen:353Wenn Sie auf Fehler „Could not load the default credentials“ stoßen:

354 354 

355* Führen Sie `gcloud auth application-default login` aus, um Application Default Credentials einzurichten355* Führen Sie `gcloud auth application-default login` aus, um Application Default Credentials einzurichten

356* Setzen Sie `GOOGLE_APPLICATION_CREDENTIALS` auf einen Pfad zu einer Service-Account-Schlüsseldatei356* Setzen Sie `GOOGLE_APPLICATION_CREDENTIALS` auf einen Pfad zu einer Service-Account-Schlüsseldatei


360 360 

361* Überprüfen Sie aktuelle Kontingente oder fordern Sie eine Kontingenterhöhung über die [Cloud Console](https://cloud.google.com/docs/quotas/view-manage) an361* Überprüfen Sie aktuelle Kontingente oder fordern Sie eine Kontingenterhöhung über die [Cloud Console](https://cloud.google.com/docs/quotas/view-manage) an

362 362 

363Wenn Sie auf Fehler „Modell nicht gefunden" 404 stoßen:363Wenn Sie auf Fehler „Modell nicht gefunden“ 404 stoßen:

364 364 

365* Bestätigen Sie, dass das Modell im [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) aktiviert ist365* Bestätigen Sie, dass das Modell im [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) aktiviert ist

366* Überprüfen Sie, dass das Modell am angegebenen Standort verfügbar ist. Einige Modelle werden nur auf `global` oder Multi-Region-Standorten wie `eu` und `us` angeboten, nicht in spezifischen Regionen366* Überprüfen Sie, dass das Modell am angegebenen Standort verfügbar ist. Einige Modelle werden nur auf `global` oder Multi-Region-Standorten wie `eu` und `us` angeboten, nicht in spezifischen Regionen

367* Wenn Sie `CLOUD_ML_REGION=global` verwenden, überprüfen Sie, dass Ihre Modelle globale Endpunkte im [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) unter „Unterstützte Funktionen" unterstützen. Für Modelle, die globale Endpunkte nicht unterstützen, können Sie entweder:367* Wenn Sie `CLOUD_ML_REGION=global` verwenden, überprüfen Sie, dass Ihre Modelle globale Endpunkte im [Model Garden](https://console.cloud.google.com/vertex-ai/model-garden) unter „Unterstützte Funktionen“ unterstützen. Für Modelle, die globale Endpunkte nicht unterstützen, können Sie entweder:

368 * Ein unterstütztes Modell über `ANTHROPIC_MODEL` oder `ANTHROPIC_DEFAULT_HAIKU_MODEL` angeben, oder368 * Ein unterstütztes Modell über `ANTHROPIC_MODEL` oder `ANTHROPIC_DEFAULT_HAIKU_MODEL` angeben, oder

369 * Einen regionalen oder Multi-Region-Standort mit `VERTEX_REGION_<MODEL_NAME>`-Umgebungsvariablen festlegen369 * Einen regionalen oder Multi-Region-Standort mit der `VERTEX_REGION_CLAUDE_*`-Variablen des Modells festlegen, die in der [Referenz der Umgebungsvariablen](/docs/de/env-vars#variables) aufgeführt ist

370 370 

371Wenn Sie auf 429-Fehler stoßen:371Wenn Sie auf 429-Fehler stoßen:

372 372 

hooks.md +4 −5

Details

63| `DirectoryAdded` | Wenn ein Arbeitsverzeichnis während einer Sitzung über `/add-dir` oder die SDK-Steueranforderung `register_repo_root` hinzugefügt wird |63| `DirectoryAdded` | Wenn ein Arbeitsverzeichnis während einer Sitzung über `/add-dir` oder die SDK-Steueranforderung `register_repo_root` hinzugefügt wird |

64| `FileChanged` | Wenn sich eine überwachte Datei auf der Festplatte ändert. Das Feld `matcher` gibt an, welche Dateinamen überwacht werden sollen |64| `FileChanged` | Wenn sich eine überwachte Datei auf der Festplatte ändert. Das Feld `matcher` gibt an, welche Dateinamen überwacht werden sollen |

65| `WorktreeCreate` | Wenn ein Worktree über `--worktree`, `isolation: "worktree"` oder für eine Hintergrundsitzung erstellt wird. Ersetzt das Standard-Git-Verhalten |65| `WorktreeCreate` | Wenn ein Worktree über `--worktree`, `isolation: "worktree"` oder für eine Hintergrundsitzung erstellt wird. Ersetzt das Standard-Git-Verhalten |

66| `WorktreeRemove` | Wenn ein Worktree beim Sitzungsende, beim Beenden eines Subagenten oder beim Löschen einer Hintergrundsitzung entfernt wird |66| `WorktreeRemove` | Wenn ein Worktree, den ein `WorktreeCreate`-Hook erstellt hat, entfernt wird |

67| `PreCompact` | Vor Kontextkomprimierung |67| `PreCompact` | Vor Kontextkomprimierung |

68| `PostCompact` | Nach Abschluss der Kontextkomprimierung |68| `PostCompact` | Nach Abschluss der Kontextkomprimierung |

69| `PreModelSwitch` | Bevor Claude Code einen Modellwechsel anwendet, den Sie oder ein Client angefordert haben. Kann den Wechsel blockieren |69| `PreModelSwitch` | Bevor Claude Code einen Modellwechsel anwendet, den Sie oder ein Client angefordert haben. Kann den Wechsel blockieren |


3274 WorktreeRemove3274 WorktreeRemove

3275</h3>3275</h3>

3276 3276 

3277Wird ausgeführt, wenn ein Worktree entfernt wird. Dies ist das Gegenstück zu [WorktreeCreate](#worktreecreate) für die Bereinigung. Das Ereignis wird ausgelöst, wenn:3277Wird ausgeführt, wenn Claude Code einen Worktree bereinigt, den Ihr [`WorktreeCreate`](#worktreecreate)-Hook erstellt hat. Das Ereignis wird ausgelöst, wenn:

3278 3278 

3279* Sie eine `--worktree`-Sitzung beenden und sich für das Entfernen entscheiden3279* Sie eine `--worktree`-Sitzung beenden und das Entfernen des Worktrees wählen

3280* ein Subagent mit `isolation: "worktree"` fertig ist3280* Sie eine [Hintergrundsitzung](/docs/de/agent-view#what-deleting-a-session-removes) löschen, die im Worktree läuft

3281* Sie eine [Hintergrundsitzung](/docs/de/agent-view#what-deleting-a-session-removes) löschen, deren Worktree der Hook erstellt hat

3282 3281 

3283Bei Git-basierten Worktrees übernimmt Claude Code die Bereinigung automatisch mit `git worktree remove`. Wenn Sie einen WorktreeCreate-Hook konfiguriert haben, kombinieren Sie ihn mit einem WorktreeRemove-Hook, um die Bereinigung der von ihm erstellten Worktrees zu steuern:3282Bei Git-basierten Worktrees übernimmt Claude Code die Bereinigung automatisch mit `git worktree remove`. Wenn Sie einen WorktreeCreate-Hook konfiguriert haben, kombinieren Sie ihn mit einem WorktreeRemove-Hook, um die Bereinigung der von ihm erstellten Worktrees zu steuern:

3284 3283 

hooks-guide.md +1 −1

Details

526| `DirectoryAdded` | Wenn ein Arbeitsverzeichnis während einer Sitzung über `/add-dir` oder die SDK-Steueranforderung `register_repo_root` hinzugefügt wird |526| `DirectoryAdded` | Wenn ein Arbeitsverzeichnis während einer Sitzung über `/add-dir` oder die SDK-Steueranforderung `register_repo_root` hinzugefügt wird |

527| `FileChanged` | Wenn sich eine überwachte Datei auf der Festplatte ändert. Das Feld `matcher` gibt an, welche Dateinamen überwacht werden sollen |527| `FileChanged` | Wenn sich eine überwachte Datei auf der Festplatte ändert. Das Feld `matcher` gibt an, welche Dateinamen überwacht werden sollen |

528| `WorktreeCreate` | Wenn ein Worktree über `--worktree`, `isolation: "worktree"` oder für eine Hintergrundsitzung erstellt wird. Ersetzt das Standard-Git-Verhalten |528| `WorktreeCreate` | Wenn ein Worktree über `--worktree`, `isolation: "worktree"` oder für eine Hintergrundsitzung erstellt wird. Ersetzt das Standard-Git-Verhalten |

529| `WorktreeRemove` | Wenn ein Worktree beim Sitzungsende, beim Beenden eines Subagenten oder beim Löschen einer Hintergrundsitzung entfernt wird |529| `WorktreeRemove` | Wenn ein Worktree, den ein `WorktreeCreate`-Hook erstellt hat, entfernt wird |

530| `PreCompact` | Vor Kontextkomprimierung |530| `PreCompact` | Vor Kontextkomprimierung |

531| `PostCompact` | Nach Abschluss der Kontextkomprimierung |531| `PostCompact` | Nach Abschluss der Kontextkomprimierung |

532| `PreModelSwitch` | Bevor Claude Code einen Modellwechsel anwendet, den Sie oder ein Client angefordert haben. Kann den Wechsel blockieren |532| `PreModelSwitch` | Bevor Claude Code einen Modellwechsel anwendet, den Sie oder ein Client angefordert haben. Kann den Wechsel blockieren |

Details

34 34 

35[Mehrere Modelle](/docs/de/model-config) sind mit unterschiedlichen Kompromissen verfügbar. Sonnet bewältigt die meisten Codierungsaufgaben gut. Opus bietet stärkeres Denken für komplexe architektonische Entscheidungen. Wechseln Sie mit `/model` während einer Sitzung oder starten Sie mit `claude --model <name>`.35[Mehrere Modelle](/docs/de/model-config) sind mit unterschiedlichen Kompromissen verfügbar. Sonnet bewältigt die meisten Codierungsaufgaben gut. Opus bietet stärkeres Denken für komplexe architektonische Entscheidungen. Wechseln Sie mit `/model` während einer Sitzung oder starten Sie mit `claude --model <name>`.

36 36 

37Wenn dieser Leitfaden sagt „Claude wählt" oder „Claude entscheidet", ist es das Modell, das die Überlegung durchführt.37Wenn dieser Leitfaden sagt „Claude wählt“ oder „Claude entscheidet“, ist es das Modell, das die Überlegung durchführt.

38 38 

39<h3 id="tools">39<h3 id="tools">

40 Tools40 Tools


54 54 

55Dies sind die primären Funktionen. Claude hat auch Tools zum Spawnen von Subagenten, zum Stellen von Fragen und für andere Orchestrierungsaufgaben. Siehe [Tools verfügbar für Claude](/docs/de/tools-reference) für die vollständige Liste.55Dies sind die primären Funktionen. Claude hat auch Tools zum Spawnen von Subagenten, zum Stellen von Fragen und für andere Orchestrierungsaufgaben. Siehe [Tools verfügbar für Claude](/docs/de/tools-reference) für die vollständige Liste.

56 56 

57Claude wählt basierend auf Ihrer Eingabeaufforderung und dem, was er unterwegs lernt, aus, welche Tools er verwenden soll. Wenn Sie sagen „beheben Sie die fehlgeschlagenen Tests", könnte Claude:57Claude wählt basierend auf Ihrer Eingabeaufforderung und dem, was er unterwegs lernt, aus, welche Tools er verwenden soll. Wenn Sie sagen „beheben Sie die fehlgeschlagenen Tests“, könnte Claude:

58 58 

591. Die Test-Suite ausführen, um zu sehen, was fehlschlägt591. Die Test-Suite ausführen, um zu sehen, was fehlschlägt

602. Die Fehlerausgabe lesen602. Die Fehlerausgabe lesen


76* **Ihr Projekt.** Dateien in Ihrem Verzeichnis und Unterverzeichnissen sowie Dateien an anderer Stelle mit Ihrer Genehmigung.76* **Ihr Projekt.** Dateien in Ihrem Verzeichnis und Unterverzeichnissen sowie Dateien an anderer Stelle mit Ihrer Genehmigung.

77* **Ihr Terminal.** Jeden Befehl, den Sie ausführen könnten: Build-Tools, git, Paketmanager, Systemdienstprogramme, Skripte. Wenn Sie es von der Befehlszeile aus tun können, kann Claude es auch.77* **Ihr Terminal.** Jeden Befehl, den Sie ausführen könnten: Build-Tools, git, Paketmanager, Systemdienstprogramme, Skripte. Wenn Sie es von der Befehlszeile aus tun können, kann Claude es auch.

78* **Ihren git-Status.** Aktueller Branch, nicht committete Änderungen und aktuelle Commit-Historie.78* **Ihren git-Status.** Aktueller Branch, nicht committete Änderungen und aktuelle Commit-Historie.

79* **Ihre [CLAUDE.md](/docs/de/memory).** Eine Markdown-Datei, in der Sie projektspezifische Anweisungen, Konventionen und Kontext speichern, den Claude jede Sitzung kennen sollte. Wenn Ihr Repository eine AGENTS.md für andere Coding-Agenten hat, kann Claude [diese selbstständig lesen](/docs/de/memory#agents-md) oder zusammen mit CLAUDE.md.79* **Ihre [CLAUDE.md](/docs/de/memory).** Eine Markdown-Datei, in der Sie projektspezifische Anweisungen, Konventionen und Kontext speichern, den Claude jede Sitzung kennen sollte. Wenn Ihr Repository eine AGENTS.md für andere Coding-Agenten hat, kann Claude [diese anstelle einer CLAUDE.md lesen](/docs/de/memory#agents-md).

80* **[Auto-Speicher](/docs/de/memory#auto-memory).** Erkenntnisse, die Claude automatisch speichert, während Sie arbeiten, wie Ihre Vorlieben. Die ersten 200 Zeilen oder 25 KB von MEMORY.md, je nachdem, was zuerst kommt, werden zu Beginn jeder Sitzung geladen.80* **[Auto-Speicher](/docs/de/memory#auto-memory).** Erkenntnisse, die Claude automatisch speichert, während Sie arbeiten, wie Ihre Vorlieben. Die ersten 200 Zeilen oder 25 KB von MEMORY.md, je nachdem, was zuerst kommt, werden zu Beginn jeder Sitzung geladen.

81* **Erweiterungen, die Sie konfigurieren.** [MCP-Server](/docs/de/mcp) für externe Dienste, [skills](/docs/de/skills) für Workflows, [subagents](/docs/de/sub-agents) für delegierte Arbeit und [Claude in Chrome](/docs/de/chrome) für Browser-Interaktion.81* **Erweiterungen, die Sie konfigurieren.** [MCP-Server](/docs/de/mcp) für externe Dienste, [skills](/docs/de/skills) für Workflows, [subagents](/docs/de/sub-agents) für delegierte Arbeit und [Claude in Chrome](/docs/de/chrome) für Browser-Interaktion.

82 82 

83Da Claude Ihr gesamtes Projekt sieht, kann er darin arbeiten. Wenn Sie Claude bitten, „den Authentifizierungsfehler zu beheben", sucht er nach relevanten Dateien, liest mehrere Dateien, um den Kontext zu verstehen, nimmt koordinierte Bearbeitungen vor, führt Tests aus, um die Behebung zu überprüfen, und committed die Änderungen, wenn Sie es fragen. Dies unterscheidet sich von Inline-Code-Assistenten, die nur die aktuelle Datei sehen.83Da Claude Ihr gesamtes Projekt sieht, kann er darin arbeiten. Wenn Sie Claude bitten, „den Authentifizierungsfehler zu beheben“, sucht er nach relevanten Dateien, liest mehrere Dateien, um den Kontext zu verstehen, nimmt koordinierte Bearbeitungen vor, führt Tests aus, um die Behebung zu überprüfen, und committed die Änderungen, wenn Sie es fragen. Dies unterscheidet sich von Inline-Code-Assistenten, die nur die aktuelle Datei sehen.

84 84 

85<h2 id="environments-and-interfaces">85<h2 id="environments-and-interfaces">

86 Umgebungen und Schnittstellen86 Umgebungen und Schnittstellen


163 163 

164Claude Code verwaltet den Kontext automatisch, wenn Sie sich dem Limit nähern. Es löscht zuerst ältere Tool-Ausgaben, dann fasst die Konversation zusammen, falls erforderlich. Ihre Anfragen und wichtige Code-Snippets werden beibehalten; detaillierte Anweisungen von früh in der Konversation können verloren gehen. Legen Sie persistente Regeln in CLAUDE.md ab, anstatt sich auf die Konversationshistorie zu verlassen.164Claude Code verwaltet den Kontext automatisch, wenn Sie sich dem Limit nähern. Es löscht zuerst ältere Tool-Ausgaben, dann fasst die Konversation zusammen, falls erforderlich. Ihre Anfragen und wichtige Code-Snippets werden beibehalten; detaillierte Anweisungen von früh in der Konversation können verloren gehen. Legen Sie persistente Regeln in CLAUDE.md ab, anstatt sich auf die Konversationshistorie zu verlassen.

165 165 

166Um zu kontrollieren, was während der Komprimierung beibehalten wird, fügen Sie einen Abschnitt „Compact Instructions" zu CLAUDE.md hinzu oder führen Sie `/compact` mit einem Fokus aus (wie `/compact focus on the API changes`).166Um zu kontrollieren, was während der Komprimierung beibehalten wird, fügen Sie einen Abschnitt „Compact Instructions“ zu CLAUDE.md hinzu oder führen Sie `/compact` mit einem Fokus aus (wie `/compact focus on the API changes`).

167 167 

168Wenn eine einzelne Datei oder Tool-Ausgabe so groß ist, dass sich der Kontext unmittelbar nach jeder Zusammenfassung wieder füllt, stoppt Claude Code die automatische Komprimierung nach einigen Versuchen und zeigt stattdessen einen Fehler an. Siehe [Auto-Komprimierung stoppt mit einem Thrashing-Fehler](/docs/de/troubleshooting#auto-compaction-stops-with-a-thrashing-error) für Wiederherstellungsschritte.168Wenn eine einzelne Datei oder Tool-Ausgabe so groß ist, dass sich der Kontext unmittelbar nach jeder Zusammenfassung wieder füllt, stoppt Claude Code die automatische Komprimierung nach einigen Versuchen und zeigt stattdessen einen Fehler an. Siehe [Auto-Komprimierung stoppt mit einem Thrashing-Fehler](/docs/de/troubleshooting#auto-compaction-stops-with-a-thrashing-error) für Wiederherstellungsschritte.

169 169 


220 Fragen Sie Claude Code um Hilfe220 Fragen Sie Claude Code um Hilfe

221</h3>221</h3>

222 222 

223Claude Code kann Ihnen beibringen, wie man ihn verwendet. Stellen Sie Fragen wie „Wie richte ich hooks ein?" oder „Was ist der beste Weg, meine CLAUDE.md zu strukturieren?" und Claude wird erklären.223Claude Code kann Ihnen beibringen, wie man ihn verwendet. Stellen Sie Fragen wie „Wie richte ich hooks ein?“ oder „Was ist der beste Weg, meine CLAUDE.md zu strukturieren?“ und Claude wird erklären.

224 224 

225Integrierte Befehle führen Sie auch durch die Einrichtung:225Integrierte Befehle führen Sie auch durch die Einrichtung:

226 226 

memory.md +2 −2

Details

8 8 

9Jede Claude Code-Sitzung beginnt mit einem frischen Context Window. Zwei Mechanismen tragen Wissen über Sitzungen hinweg:9Jede Claude Code-Sitzung beginnt mit einem frischen Context Window. Zwei Mechanismen tragen Wissen über Sitzungen hinweg:

10 10 

11* **CLAUDE.md-Dateien**: Anweisungen, die Sie schreiben, um Claude persistenten Kontext zu geben. Claude kann auch die [`AGENTS.md`-Dateien](#agents-md) eines Repositorys lesen, eigenständig oder zusammen mit CLAUDE.md11* **CLAUDE.md-Dateien**: Anweisungen, die Sie schreiben, um Claude persistenten Kontext zu geben. Claude kann anstelle von CLAUDE.md auch die [`AGENTS.md`-Dateien](#agents-md) eines Repositorys lesen

12* **Auto-Memory**: Notizen, die Claude selbst basierend auf Ihren Korrektionen und Vorlieben schreibt12* **Auto-Memory**: Notizen, die Claude selbst basierend auf Ihren Korrektionen und Vorlieben schreibt

13 13 

14Diese Seite behandelt folgende Themen:14Diese Seite behandelt folgende Themen:

15 15 

16* [CLAUDE.md-Dateien schreiben und organisieren](#claude-md-files)16* [CLAUDE.md-Dateien schreiben und organisieren](#claude-md-files)

17* [Ein vorhandenes AGENTS.md](#agents-md) als Ihre Projektanweisungen verwenden, eigenständig oder zusammen mit CLAUDE.md17* [Ein vorhandenes AGENTS.md](#agents-md) als Ihre Projektanweisungen verwenden

18* [Regeln auf bestimmte Dateitypen beschränken](#organize-rules-with-claude/rules/) mit `.claude/rules/`18* [Regeln auf bestimmte Dateitypen beschränken](#organize-rules-with-claude/rules/) mit `.claude/rules/`

19* [Auto-Memory konfigurieren](#auto-memory), damit Claude automatisch Notizen macht19* [Auto-Memory konfigurieren](#auto-memory), damit Claude automatisch Notizen macht

20* [Fehlerbehebung](#troubleshoot-memory-issues), wenn Anweisungen nicht befolgt werden20* [Fehlerbehebung](#troubleshoot-memory-issues), wenn Anweisungen nicht befolgt werden

overview.md +2 −2

Details

98 * [Für VS Code installieren](vscode:extension/anthropic.claude-code)98 * [Für VS Code installieren](vscode:extension/anthropic.claude-code)

99 * [Für Cursor installieren](cursor:extension/anthropic.claude-code)99 * [Für Cursor installieren](cursor:extension/anthropic.claude-code)

100 100 

101 Oder suchen Sie nach „Claude Code" in der Ansicht „Erweiterungen" (`Cmd+Shift+X` auf Mac, `Ctrl+Shift+X` auf Windows/Linux). Nach der Installation öffnen Sie die Befehlspalette (`Cmd+Shift+P` / `Ctrl+Shift+P`), geben Sie „Claude Code" ein und wählen Sie **In neuem Tab öffnen**.101 Oder suchen Sie nach „Claude Code“ in der Ansicht „Erweiterungen“ (`Cmd+Shift+X` auf Mac, `Ctrl+Shift+X` auf Windows/Linux). Nach der Installation öffnen Sie die Befehlspalette (`Cmd+Shift+P` / `Ctrl+Shift+P`), geben Sie „Claude Code“ ein und wählen Sie **In neuem Tab öffnen**.

102 102 

103 [Erste Schritte mit VS Code →](/docs/de/vs-code#get-started)103 [Erste Schritte mit VS Code →](/docs/de/vs-code#get-started)

104 </Tab>104 </Tab>


171 </Accordion>171 </Accordion>

172 172 

173 <Accordion title="Passen Sie mit Anweisungen, Skills und Hooks an" icon="sliders">173 <Accordion title="Passen Sie mit Anweisungen, Skills und Hooks an" icon="sliders">

174 [`CLAUDE.md`](/docs/de/memory) ist eine Markdown-Datei, die Sie im Stammverzeichnis Ihres Projekts hinzufügen und die Claude Code zu Beginn jeder Sitzung liest. Verwenden Sie sie, um Codierungsstandards, Architekturentscheidungen, bevorzugte Bibliotheken und Überprüfungschecklisten festzulegen. Wenn Ihr Repository bereits eine `AGENTS.md` für andere Coding-Agents hat, kann Claude Code [diese lesen](/docs/de/memory#agents-md) eigenständig oder zusammen mit `CLAUDE.md`. Claude erstellt auch [automatisches Gedächtnis](/docs/de/memory#auto-memory), während es arbeitet, und speichert Erkenntnisse über Sitzungen hinweg, ohne dass Sie etwas schreiben müssen.174 [`CLAUDE.md`](/docs/de/memory) ist eine Markdown-Datei, die Sie im Stammverzeichnis Ihres Projekts hinzufügen und die Claude Code zu Beginn jeder Sitzung liest. Verwenden Sie sie, um Codierungsstandards, Architekturentscheidungen, bevorzugte Bibliotheken und Überprüfungschecklisten festzulegen. Wenn Ihr Repository bereits eine `AGENTS.md` für andere Coding-Agenten hat, kann Claude Code [diese anstelle einer `CLAUDE.md` lesen](/docs/de/memory#agents-md). Claude erstellt auch [Auto-Memory](/docs/de/memory#auto-memory), während es arbeitet, und speichert Erkenntnisse über Sitzungen hinweg, ohne dass Sie etwas schreiben müssen.

175 175 

176 Erstellen Sie [Skills](/docs/de/skills), um wiederholbare Workflows zu verpacken, die Ihr Team teilen kann, wie `/review-pr` oder `/deploy-staging`.176 Erstellen Sie [Skills](/docs/de/skills), um wiederholbare Workflows zu verpacken, die Ihr Team teilen kann, wie `/review-pr` oder `/deploy-staging`.

177 177 

Details

733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.733You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

734```734```

735 735 

736Dieser Agent wird `my-plugin:security-reviewer` genannt, und der Benutzer kann ihn [explizit aufrufen](/docs/de/sub-agents#invoke-subagents-explicitly) mit `@agent-my-plugin:security-reviewer`. Die Namensform ist `<plugin>:<name>`, wobei `<name>` aus der Frontmatter kommt, oder aus dem Dateinamen, wenn es keine gibt.736Dieser Agent wird `my-plugin:security-reviewer` genannt, und der Benutzer kann ihn [explizit aufrufen](/docs/de/sub-agents#invoke-subagents-explicitly) mit `@agent-my-plugin:security-reviewer`. Die Namensform ist `<plugin>:<name>`, wobei `<name>` aus dem Frontmatter-Feld `name` stammt oder, wenn dieses Feld fehlt, aus dem Dateinamen.

737 737 

738Der `agents`-Manifest-Schlüssel ersetzt den `agents/`-Scan.738Der `agents`-Manifest-Schlüssel ersetzt den `agents/`-Scan.

739 739 

Details

428 428 

429| Element | Was es zeichnet | Wo |429| Element | Was es zeichnet | Wo |

430| :- | :- | :- |430| :- | :- | :- |

431| `Box` | Einen Flex-Container. Akzeptiert Layout-Props wie `flexDirection`, `columnGap`, `padding`, `borderStyle` und `width`. | Überall |431| `Box` | Einen Flex-Container. Akzeptiert Layout-Props wie `flexDirection`, `columnGap`, `padding`, [`borderStyle`](/docs/de/plugins/mods/reference#box-border-styles) und `width`. | Überall |

432| `Text` | Formatierten Text. Akzeptiert `color`, `bold`, `dimColor`, `italic` und `wrap`. Eine `color` ist ein Theme-Schlüssel oder eine Farbe wie `'red'`. Ein `wrap` ist `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` oder `'truncate-end'`. | Überall |432| `Text` | Formatierten Text. Akzeptiert `color`, `bold`, `dimColor`, `italic` und `wrap`. Eine `color` ist ein Theme-Schlüssel oder eine Farbe wie `'red'`. Ein `wrap` ist `'wrap'`, `'truncate'`, `'truncate-start'`, `'truncate-middle'` oder `'truncate-end'`. | Überall |

433| `Button` | Ein Steuerelement, das `onPress` aufruft | Überall |433| `Button` | Ein Steuerelement, das `onPress` aufruft | Überall |

434| `Link`, `Code`, `Markdown` | Einen Link mit `href` und einem optionalen `label`, einen Codeblock und Text, der wie die Antworten von Claude formatiert ist. `Markdown` erhält seinen Inhalt in einer `text`-Prop, nicht in `children`, und benötigt einen `key`, wenn Sie `onLinkPress` übergeben. | Überall |434| `Link`, `Code`, `Markdown` | Einen Link mit `href` und einem optionalen `label`, einen Codeblock und Text, der wie die Antworten von Claude formatiert ist. `Markdown` erhält seinen Inhalt in einer `text`-Prop, nicht in `children`, und benötigt einen `key`, wenn Sie `onLinkPress` übergeben. | Überall |


563Viele Bereiche bestehen aus einem Textfeld mit einer Liste darunter. Das Beispiel in diesem Abschnitt ist ein Notizbereich: Sie tippen eine Notiz und drücken Enter, um sie hinzuzufügen, und jede Notiz hat eine `x`-Schaltfläche, die sie löscht. Mit zwei hinzugefügten Notizen zeichnet das Terminal den Bereich so:563Viele Bereiche bestehen aus einem Textfeld mit einer Liste darunter. Das Beispiel in diesem Abschnitt ist ein Notizbereich: Sie tippen eine Notiz und drücken Enter, um sie hinzuzufügen, und jede Notiz hat eine `x`-Schaltfläche, die sie löscht. Mit zwei hinzugefügten Notizen zeichnet das Terminal den Bereich so:

564 564 

565```text theme={null}565```text theme={null}

566╭──────────────────────────────────────────────────────────╮566╭────────────────────────────────────────────────────────✕─╮

567│ Note: Type a note and press Enter ⏎ add ✕ │567│ Note: Type a note and press Enter ⏎ add │

568│ x buy milk │568│ x buy milk │

569│ x call bob │569│ x call bob │

570╰──────────────────────────────────────────────────────────╯570╰──────────────────────────────────────────────────────────╯

571```571```

572 572 

573Das `✕` am oberen Rand ist die eigene Markierung von Claude Code zum Schließen des Bereichs.

574 

573Das Beispiel verwendet diese Techniken:575Das Beispiel verwendet diese Techniken:

574 576 

575* **Texteingaben entgegennehmen**: Ein `Input` ruft `onSubmit(value)` mit dem Text des Felds auf, wenn der Benutzer Enter drückt, und `onInput(value)` bei jeder Änderung577* **Texteingaben entgegennehmen**: Ein `Input` ruft `onSubmit(value)` mit dem Text des Felds auf, wenn der Benutzer Enter drückt, und `onInput(value)` bei jeder Änderung

Details

242Um einen Baum an seine Stelle anzupassen, lesen Sie im Hook die folgenden Props:242Um einen Baum an seine Stelle anzupassen, lesen Sie im Hook die folgenden Props:

243 243 

244* **Breite eines `Pane` oder des Bands**: Zeichnen Sie auf `e.props.bodyColumns`244* **Breite eines `Pane` oder des Bands**: Zeichnen Sie auf `e.props.bodyColumns`

245* **Höhe eines `Pane` neben dem Transkript**: Wenn `e.props.placement` den Wert `'dock'` hat, ist `e.props.scroll.bodyRows` die Anzahl der Zeilen, die der Bereich hat245* **Höhe eines `Pane` neben dem Transkript**: Wenn `e.props.placement` den Wert `'dock'` hat, ist `e.props.scroll.bodyRows` die Anzahl der Zeilen, die der Bereich für Ihren Baum hat

246* **Höhe eines `Pane` über dem Prompt**: Wenn `e.props.placement` den Wert `'inline'` hat, wächst der Bereich mit Ihrem Baum bis zu einer Grenze, und `bodyRows` ist diese Grenze. Über das [Feld `rows` von `$.ui.open`](/docs/de/plugins/mods/interface#open-a-pane-at-the-right-time) lässt sich eine andere Grenze anfordern.246* **Höhe eines `Pane` über dem Prompt**: Wenn `e.props.placement` den Wert `'inline'` hat, wächst der Bereich mit Ihrem Baum bis zu einer Grenze, und `bodyRows` ist diese Grenze. Über das [Feld `rows` von `$.ui.open`](/docs/de/plugins/mods/interface#open-a-pane-at-the-right-time) lässt sich eine andere Grenze anfordern.

247 247 

248Ein Baum, der höher als der Bereich ist, scrollt als Ganzes.248Ein Baum, der höher als der Bereich ist, scrollt als Ganzes.


255 255 

256| Element | Wichtigste Props | Terminal | Desktop |256| Element | Wichtigste Props | Terminal | Desktop |

257| :- | :- | :-: | :-: |257| :- | :- | :-: | :-: |

258| [`Box`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `key`, Flex-Layout, `gap`, `padding`, `margin`, `width`, `height`, `borderStyle`, `backgroundColor`, `position`, `hover` | ✓ | ✓ |258| [`Box`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `key`, Flex-Layout, `gap`, `padding`, `margin`, `width`, `height`, [`borderStyle`](#box-border-styles), `backgroundColor`, `position`, `hover` | ✓ | ✓ |

259| [`Text`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |259| [`Text`](/docs/de/plugins/mods/interface#build-a-tree-from-elements) | `color`, `backgroundColor`, `bold`, `italic`, `underline`, `dimColor`, `inverse`, `wrap` | ✓ | ✓ |

260| [`Button`](/docs/de/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |260| [`Button`](/docs/de/plugins/mods/interface#respond-to-presses-and-typing) | `key`, `label`, `onPress`, `hotkey`, `plain`, `dimColor`, `autoFocus`, `action` | ✓ | ✓ |

261| `Link` | `href`, `label` | ✓ | ✓ |261| `Link` | `href`, `label` | ✓ | ✓ |


270 270 

271Weitere Regeln für `Button`: `action` benennt eine der eigenen [Tastenkombinations-Aktionen](/docs/de/keybindings) von Claude Code, und die Tastenkombination des Benutzers dafür drückt die Schaltfläche, wenn diese Tastenkombination ein Akkord oder eine Taste mit Modifikator ist. Ein Ziffern-`hotkey` auf einer Schaltfläche im Band wird auch ausgelöst, wenn der Benutzer nur diese Ziffer in einen leeren Prompt eingibt und innehält. Wenn zwei Schaltflächen in einer Zeichnung denselben `hotkey` angeben, erhält ihn die spätere. `autoFocus` akzeptiert bei jedem Steuerelement nur `true`; lassen Sie die Prop also weg, um es deaktiviert zu lassen.271Weitere Regeln für `Button`: `action` benennt eine der eigenen [Tastenkombinations-Aktionen](/docs/de/keybindings) von Claude Code, und die Tastenkombination des Benutzers dafür drückt die Schaltfläche, wenn diese Tastenkombination ein Akkord oder eine Taste mit Modifikator ist. Ein Ziffern-`hotkey` auf einer Schaltfläche im Band wird auch ausgelöst, wenn der Benutzer nur diese Ziffer in einen leeren Prompt eingibt und innehält. Wenn zwei Schaltflächen in einer Zeichnung denselben `hotkey` angeben, erhält ihn die spätere. `autoFocus` akzeptiert bei jedem Steuerelement nur `true`; lassen Sie die Prop also weg, um es deaktiviert zu lassen.

272 272 

273<h3 id="box-border-styles">

274 Rahmenstile für `Box`

275</h3>

276 

277Um einen Rahmen um eine `Box` zu zeichnen, setzen Sie deren `borderStyle` auf einen dieser Namen, etwa `borderStyle: 'round'`. Jede Zeile gibt an, was das Terminal für diesen Namen zeichnet, und zeigt die Oberkante des Rahmens.

278 

279| `borderStyle` | Was das Terminal zeichnet | Oberkante |

280| :- | :- | :- |

281| `'single'` | Dünne Linien mit eckigen Ecken | `┌──┐` |

282| `'double'` | Doppelte Linien | `╔══╗` |

283| `'round'` | Dünne Linien mit abgerundeten Ecken | `╭──╮` |

284| `'bold'` | Dicke Linien | `┏━━┓` |

285| `'singleDouble'` | Dünne Linien oben und unten, doppelte Linien an den Seiten | `╓──╖` |

286| `'doubleSingle'` | Doppelte Linien oben und unten, dünne Linien an den Seiten | `╒══╕` |

287| `'classic'` | Die ASCII-Zeichen `+`, `-` und `\|` | `+--+` |

288| `'arrow'` | Pfeile, die in die `Box` zeigen | `↘↓↓↙` |

289| `'dashed'` | Gestrichelte Linien mit leeren Ecken | `╌╌` |

290| `'quote'` | Ein Balken, `▎`, an der linken Seite entlang und leere Zellen an den anderen drei Seiten | Leer |

291 

292Eine `Box`, deren `borderStyle` einen anderen Namen angibt, etwa `'rounded'`, wird ohne Rahmen gezeichnet.

293 

273<h2 id="limits">294<h2 id="limits">

274 Limits295 Limits

275</h2>296</h2>

Details

15<Note>15<Note>

16 Diese Fälle werden auf anderen Seiten behandelt:16 Diese Fälle werden auf anderen Seiten behandelt:

17 17 

18 * **Warum Bereiche, der Cache und die Priorität sich so verhalten**: lesen Sie [Plugin-Ladungsreferenz](/docs/de/plugins/loading)18 * **Warum sich Geltungsbereiche, der Cache und der Vorrang so verhalten**: Lesen Sie die [Plugin-Ladereferenz](/docs/de/plugins/loading)

19 * **Nachschlagen eines Flags, Feldes oder Befehls**: verwenden Sie die [Plugin-Befehle-Referenz](/docs/de/plugins/cli-reference), die [Manifest-Referenz](/docs/de/plugins/manifest-reference) oder die [Marktplatz-Referenz](/docs/de/plugins/marketplace-reference)19 * **Nachschlagen eines Flags, Feldes oder Befehls**: Verwenden Sie die [Referenz der Plugin-Befehle](/docs/de/plugins/cli-reference), die [Manifest-Referenz](/docs/de/plugins/manifest-reference) oder die [Marketplace-Referenz](/docs/de/plugins/marketplace-reference)

20 * **Eine Meldung `hooks module not loaded` oder `hooks module did not load`**: Das Plugin ist ein [Mod](/docs/de/plugins/mods/overview), lesen Sie daher [Der Mod wird nicht geladen](/docs/de/plugins/mods/troubleshoot#the-mod-doesn’t-load)

20</Note>21</Note>

21 22 

22Suchen Sie nach der genauen Meldung, die Sie gesehen haben. Jede Meldung wird unter der Phase aufgelistet, die sie erzeugt, was nicht immer der Befehl ist, den Sie ausgeführt haben. Zum Beispiel kann eine Installation fehlschlagen, weil ein Marktplatz fehlt, daher wird diese Meldung unter [Einen Marktplatz hinzufügen](#add-a-marketplace) aufgelistet.23Suchen Sie nach der genauen Meldung, die Sie gesehen haben. Jede Meldung wird unter der Phase aufgelistet, die sie erzeugt, was nicht immer der Befehl ist, den Sie ausgeführt haben. Zum Beispiel kann eine Installation fehlschlagen, weil ein Marktplatz fehlt, daher wird diese Meldung unter [Einen Marktplatz hinzufügen](#add-a-marketplace) aufgelistet.

quickstart.md +5 −5

Details

33 <Tab title="Native Installation (Empfohlen)">33 <Tab title="Native Installation (Empfohlen)">

34 **macOS, Linux, WSL:**34 **macOS, Linux, WSL:**

35 35 

36 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}36 ```bash theme={null}

37 curl -fsSL https://claude.ai/install.sh | bash37 curl -fsSL https://claude.ai/install.sh | bash

38 ```38 ```

39 39 

40 **Windows PowerShell:**40 **Windows PowerShell:**

41 41 

42 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}42 ```powershell theme={null}

43 irm https://claude.ai/install.ps1 | iex43 irm https://claude.ai/install.ps1 | iex

44 ```44 ```

45 45 

46 **Windows CMD:**46 **Windows CMD:**

47 47 

48 ```batch theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}48 ```batch theme={null}

49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd49 curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd

50 ```50 ```

51 51 


63 </Tab>63 </Tab>

64 64 

65 <Tab title="Homebrew">65 <Tab title="Homebrew">

66 ```bash theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}66 ```bash theme={null}

67 brew install --cask claude-code67 brew install --cask claude-code

68 ```68 ```

69 69 


75 </Tab>75 </Tab>

76 76 

77 <Tab title="WinGet">77 <Tab title="WinGet">

78 ```powershell theme={null} theme={null} theme={null} theme={null} theme={null} theme={null}78 ```powershell theme={null}

79 winget install Anthropic.ClaudeCode79 winget install Anthropic.ClaudeCode

80 ```80 ```

81 81 

Details

104 Beispielskript104 Beispielskript

105</h2>105</h2>

106 106 

107Das folgende Skript führt die vollständige Schleife gegen `$CLAUDE_TEST_ENVIRONMENT_ID`, die `ccpool_...`-ID Ihrer Test-Umgebung, angezeigt im Detaildialog der Umgebung auf der Admin-Seite oder zurückgegeben durch den [create-environment-Aufruf](#create-a-dedicated-test-environment), aus und behauptet eine Sentinel-Phrase in jeder Antwort. Führen Sie es aus einem Git-Checkout des Repositorys aus, in dem die Sitzung arbeiten soll, nachdem Sie einen Runner auf diesem Host mit dem installierten Capture-Hook und exportiertem `E2E_REPLY_DIR` gestartet haben.107Das folgende Skript führt die vollständige Schleife gegen `$CLAUDE_TEST_ENVIRONMENT_ID`, die `ccpool_...`-ID Ihrer Test-Umgebung, angezeigt im Detaildialog der Umgebung auf der Admin-Seite oder zurückgegeben durch den [create-environment-Aufruf](#create-a-dedicated-test-environment), aus und behauptet eine Sentinel-Phrase in jeder Antwort. Führen Sie es aus einem Git-Checkout des Repositorys aus, in dem die Sitzung arbeiten soll, nachdem Sie einen Runner auf diesem Host mit dem installierten Capture-Hook und exportiertem `E2E_REPLY_DIR` gestartet haben. Melden Sie sich zunächst auf dem Rechner, auf dem das Skript ausgeführt wird, mit einem claude.ai-Konto an, wie unter [Aus CI authentifizieren](#authenticate-from-ci) beschrieben. Ohne diese Anmeldung schlägt der erste Dispatch mit einem Fehler wie `Unable to get organization UUID for cloud session creation` fehl.

108 108 

109```bash theme={null}109```bash theme={null}

110#!/usr/bin/env bash110#!/usr/bin/env bash

Details

19Um serververwaltete Einstellungen zu verwenden, benötigen Sie:19Um serververwaltete Einstellungen zu verwenden, benötigen Sie:

20 20 

21* Claude for Teams oder Claude for Enterprise Plan21* Claude for Teams oder Claude for Enterprise Plan

22* Die Rolle „Owner" oder „Primary Owner" in Ihrer Claude-Organisation, um die Konfiguration anzuzeigen und zu bearbeiten22* Die Rolle „Owner“ oder „Primary Owner“ in Ihrer Claude-Organisation, um die Konfiguration anzuzeigen und zu bearbeiten

23* Netzwerkzugriff auf `api.anthropic.com`23* Netzwerkzugriff auf `api.anthropic.com`

24 24 

25<h2 id="choose-between-server-managed-and-endpoint-managed-settings">25<h2 id="choose-between-server-managed-and-endpoint-managed-settings">


43 <Step title="Öffnen Sie die Admin-Konsole">43 <Step title="Öffnen Sie die Admin-Konsole">

44 Navigieren Sie in der claude.ai-Konsole zu [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).44 Navigieren Sie in der claude.ai-Konsole zu [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code).

45 45 

46 Wenn der Link Sie stattdessen zu einer anderen Seite der Organisationseinstellungen umleitet, anstatt zur Claude Code-Seite, verfügt Ihr Konto nicht über die erforderliche Rolle. Admin und andere Nicht-Owner-Rollen können verwaltete Einstellungen nicht anzeigen oder bearbeiten. Bitten Sie daher einen Owner oder Primary Owner in Ihrer Organisation, die Änderung vorzunehmen. Siehe [Zugriffskontrolle](#access-control).46 Wenn die Seite in einer Team- oder Enterprise-Organisation anzeigt, dass Sie keinen Zugriff haben, bitten Sie einen [Owner oder Primary Owner](#access-control), die Änderung vorzunehmen.

47 </Step>47 </Step>

48 48 

49 <Step title="Definieren Sie Ihre Einstellungen">49 <Step title="Definieren Sie Ihre Einstellungen">


127 Nur verwaltete Einstellungen127 Nur verwaltete Einstellungen

128</h3>128</h3>

129 129 

130Die meisten [Einstellungsschlüssel](/docs/de/settings-reference#all-settings) funktionieren in jedem Bereich. Eine Handvoll Schlüssel werden nur aus verwalteten Einstellungen gelesen und haben keine Auswirkung, wenn sie in Benutzer- oder Projekteinstellungsdateien platziert werden. Siehe [nur verwaltete Einstellungen](/docs/de/managed-settings#managed-only-settings) für die Berechtigung und Plugin-Steuerelemente, oder lesen Sie die Spalte „Bereich" des [Alle Einstellungen](/docs/de/settings-reference#all-settings) Index für den vollständigen Satz.130Die meisten [Einstellungsschlüssel](/docs/de/settings-reference#all-settings) funktionieren in jedem Bereich. Eine Handvoll Schlüssel werden nur aus verwalteten Einstellungen gelesen und haben keine Auswirkung, wenn sie in Benutzer- oder Projekteinstellungsdateien platziert werden. Siehe [nur verwaltete Einstellungen](/docs/de/managed-settings#managed-only-settings) für die Berechtigung und Plugin-Steuerelemente, oder lesen Sie die Spalte „Bereich“ des [Alle Einstellungen](/docs/de/settings-reference#all-settings) Index für den vollständigen Satz.

131 131 

132<h3 id="current-limitations">132<h3 id="current-limitations">

133 Aktuelle Einschränkungen133 Aktuelle Einschränkungen

sessions.md +3 −3

Details

83* Terminal: `claude --continue`, `claude --resume <session-id>` oder `claude --resume <name>`, wenn der Name einer Sitzung entspricht, ohne `-p`. Claude Code stellt den Berechtigungsmodus wieder her, in dem sich die Sitzung befand, außer in den Fällen in der Tabelle. Übergeben Sie `--permission-mode` oder `--dangerously-skip-permissions`, um den wiederhergestellten Modus zu überschreiben.83* Terminal: `claude --continue`, `claude --resume <session-id>` oder `claude --resume <name>`, wenn der Name einer Sitzung entspricht, ohne `-p`. Claude Code stellt den Berechtigungsmodus wieder her, in dem sich die Sitzung befand, außer in den Fällen in der Tabelle. Übergeben Sie `--permission-mode` oder `--dangerously-skip-permissions`, um den wiederhergestellten Modus zu überschreiben.

84* Nicht-interaktiv: `claude -p --resume` oder `claude -p --continue`. Claude Code startet den Lauf im Berechtigungsmodus, in dem ein neuer `claude -p` Lauf gestartet würde, außer dass eine Sitzung, die im Plan Mode endete, unter den [Bedingungen unten](#resume-in-plan-mode-with-p) im Plan Mode fortgesetzt wird.84* Nicht-interaktiv: `claude -p --resume` oder `claude -p --continue`. Claude Code startet den Lauf im Berechtigungsmodus, in dem ein neuer `claude -p` Lauf gestartet würde, außer dass eine Sitzung, die im Plan Mode endete, unter den [Bedingungen unten](#resume-in-plan-mode-with-p) im Plan Mode fortgesetzt wird.

85* VS Code: das Gesprächsfenster der Erweiterung. Die Tabelle behandelt nur ein Gespräch, das im Plan Mode endete; für den Rest siehe [frühere Gespräche fortsetzen](/docs/de/vs-code#resume-past-conversations).85* VS Code: das Gesprächsfenster der Erweiterung. Die Tabelle behandelt nur ein Gespräch, das im Plan Mode endete; für den Rest siehe [frühere Gespräche fortsetzen](/docs/de/vs-code#resume-past-conversations).

86* Sitzungsauswahl beim Start: eine Sitzung, die Sie aus der [Sitzungsauswahl](#use-the-session-picker) auswählen, ob Sie sie mit `claude --resume` allein, `claude --from-pr` oder einem Namen, der mehr als einer Sitzung entspricht, geöffnet haben. Claude Code stellt den gespeicherten Berechtigungsmodus nicht wieder her. Es startet die Sitzung im Berechtigungsmodus, in dem es eine neue Sitzung von derselben Befehlszeile aus starten würde.86* Sitzungsauswahl beim Start: eine Sitzung, die Sie aus der [Sitzungsauswahl](#use-the-session-picker) auswählen, ob Sie sie mit `claude --resume` allein, `claude --from-pr` oder einem Namen, der mehr als einer Sitzung entspricht, geöffnet haben. Claude Code startet die Sitzung in dem Berechtigungsmodus, in dem es eine neue Sitzung von derselben Befehlszeile aus starten würde, außer dass eine Sitzung, die im Plan-Modus endete, im Plan-Modus fortgesetzt wird, sofern Sie nicht `--permission-mode`, `--dangerously-skip-permissions` oder `--fork-session` übergeben. Kein anderer gespeicherter Berechtigungsmodus wird wiederhergestellt.

87* `/resume` innerhalb einer Sitzung, mit oder ohne Argument: Claude Code stellt den gespeicherten Berechtigungsmodus nicht wieder her. Das Gespräch, zu dem Sie wechseln, wird im Berechtigungsmodus Ihrer aktuellen Sitzung fortgesetzt.87* `/resume` innerhalb einer Sitzung, mit oder ohne Argument: Das Gespräch, zu dem Sie wechseln, wird im Berechtigungsmodus Ihrer aktuellen Sitzung fortgesetzt, außer dass ein Gespräch, das im Plan-Modus endete, im Plan-Modus fortgesetzt wird, selbst wenn Sie Claude Code mit `--permission-mode` oder `--dangerously-skip-permissions` gestartet haben. Wenn dieses Gespräch bereits früher in diesem Lauf von Claude Code geöffnet war, etwa das Gespräch, mit dem Sie begonnen haben, oder eines, das Sie mit `/clear` oder `/resume` verlassen haben, wird es stattdessen in Ihrem aktuellen Berechtigungsmodus fortgesetzt.

88 88 

89Das Wiederherstellen des Plan Mode auf den nicht-interaktiven und VS Code Pfaden erfordert Claude Code v2.1.246 oder später. Jede Zeile benennt den Berechtigungsmodus, in dem die Sitzung endete, welche der Terminal-, nicht-interaktiven und VS Code Pfade Sie ihn fortsetzen, und den Berechtigungsmodus, in dem Claude Code die fortgesetzte Sitzung startet.89Das Wiederherstellen des Plan Mode auf den nicht-interaktiven und VS Code Pfaden erfordert Claude Code v2.1.246 oder später. Jede Zeile benennt den Berechtigungsmodus, in dem die Sitzung endete, welche der Terminal-, nicht-interaktiven und VS Code Pfade Sie ihn fortsetzen, und den Berechtigungsmodus, in dem Claude Code die fortgesetzte Sitzung startet.

90 90 

91| Sitzung endete in | Wie Sie fortsetzen | Berechtigungsmodus nach dem Fortsetzen |91| Sitzung endete in | Wie Sie fortsetzen | Berechtigungsmodus nach dem Fortsetzen |

92| :- | :- | :- |92| :- | :- | :- |

93| `bypassPermissions` | Terminal | Der Berechtigungsmodus, in dem eine neue Sitzung gestartet würde. Um [Berechtigungen zu umgehen](/docs/de/permission-modes#skip-all-checks-with-bypasspermissions-mode), aktivieren Sie es beim Start mit einem seiner Start-Flags oder `permissions.defaultMode: "bypassPermissions"` in [Benutzer-, `--settings`- oder verwalteten Einstellungen](/docs/de/settings-reference#permissions-defaultmode) |93| `bypassPermissions` | Terminal | Der Berechtigungsmodus, in dem eine neue Sitzung gestartet würde. Um [Berechtigungen zu umgehen](/docs/de/permission-modes#skip-all-checks-with-bypasspermissions-mode), aktivieren Sie es beim Start mit einem seiner Start-Flags oder `permissions.defaultMode: "bypassPermissions"` in [Benutzer-, `--settings`- oder verwalteten Einstellungen](/docs/de/settings-reference#permissions-defaultmode) |

94| `plan` | Terminal | Der Berechtigungsmodus, in dem eine neue Sitzung gestartet würde |94| `plan` | Terminal | Plan-Modus. Mit `--fork-session` der Berechtigungsmodus, in dem eine neue Sitzung gestartet würde |

95| `auto` | Terminal | `auto`, nur wenn Ihr Konto immer noch die [Auto Mode Anforderungen](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) erfüllt |95| `auto` | Terminal | `auto`, nur wenn Ihr Konto immer noch die [Auto Mode Anforderungen](/docs/de/permission-modes#eliminate-prompts-with-auto-mode) erfüllt |

96| Manual | Terminal | Manual, wenn eine neue Sitzung im Auto Mode von der [integrierten Standardeinstellung](/docs/de/permission-modes#which-mode-a-session-starts-in) gestartet würde. Wenn ein `defaultMode` aus einer Einstellungsdatei [wirksam wird](/docs/de/permission-modes#which-mode-a-session-starts-in), startet Claude Code die fortgesetzte Sitzung stattdessen in diesem Modus |96| Manual | Terminal | Manual, wenn eine neue Sitzung im Auto Mode von der [integrierten Standardeinstellung](/docs/de/permission-modes#which-mode-a-session-starts-in) gestartet würde. Wenn ein `defaultMode` aus einer Einstellungsdatei [wirksam wird](/docs/de/permission-modes#which-mode-a-session-starts-in), startet Claude Code die fortgesetzte Sitzung stattdessen in diesem Modus |

97| `plan` | Nicht-interaktiv, unter den [Bedingungen unten](#resume-in-plan-mode-with-p) | Plan Mode |97| `plan` | Nicht-interaktiv, unter den [Bedingungen unten](#resume-in-plan-mode-with-p) | Plan Mode |

sub-agents.md +2 −2

Details

310 310 

311| Feld | Erforderlich | Beschreibung |311| Feld | Erforderlich | Beschreibung |

312| :- | :- | :- |312| :- | :- | :- |

313| `name` | Ja | Eindeutige Kennung, 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. Claude Code lädt eine Datei, deren Name eins enthält, nicht und protokolliert einen Fehler im Debug-Protokoll. Vor v2.1.218 wurden solche Namen akzeptiert |313| `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 |

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

315| `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 |315| `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 |

316| `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) |316| `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) |


348 348 

349* **Kein `name`**: Claude Code behandelt die Datei als Dokumentation, die neben Ihren Agenten aufbewahrt wird.349* **Kein `name`**: Claude Code behandelt die Datei als Dokumentation, die neben Ihren Agenten aufbewahrt wird.

350* **Ein öffnendes `---`, das nicht die erste Zeile der Datei ist**: Claude Code liest die Datei als ohne Frontmatter und behandelt sie als Dokumentation.350* **Ein öffnendes `---`, das nicht die erste Zeile der Datei ist**: Claude Code liest die Datei als ohne Frontmatter und behandelt sie als Dokumentation.

351* **Ein `name`, der mit `-` beginnt oder `:` enthält**: Claude Code überspringt die Datei und schreibt einen Fehler in das Debug-Protokoll. Siehe die `name`-Zeile in der Tabelle oben.351* **Ein `name`, der mit `-` beginnt, `:` enthält oder länger als 256 Zeichen ist**: Claude Code überspringt die Datei und schreibt einen Fehler in das Debug-Log.

352* **Ein `name`, aber keine `description`**: Claude Code überspringt die Datei und schreibt den Grund in das Debug-Protokoll.352* **Ein `name`, aber keine `description`**: Claude Code überspringt die Datei und schreibt den Grund in das Debug-Protokoll.

353* **YAML, das nicht analysiert wird**: Claude Code liest keine Felder aus der Datei, überspringt sie und schreibt den Parse-Fehler in das Debug-Protokoll.353* **YAML, das nicht analysiert wird**: Claude Code liest keine Felder aus der Datei, überspringt sie und schreibt den Parse-Fehler in das Debug-Protokoll.

354 354 

vs-code.md +1 −1

Details

606| `environmentVariables` | `[]` | Legen Sie Umgebungsvariablen für den Claude-Prozess fest. Verwenden Sie stattdessen Claude Code-Einstellungen für gemeinsame Konfiguration. Ein Eintrag für [`CLAUDE_CONFIG_DIR`](/docs/de/env-vars) gilt nur, wenn sein Wert ein absoluter Pfad ist; die Erweiterung erweitert `~` nicht und ignoriert einen relativen Wert. |606| `environmentVariables` | `[]` | Legen Sie Umgebungsvariablen für den Claude-Prozess fest. Verwenden Sie stattdessen Claude Code-Einstellungen für gemeinsame Konfiguration. Ein Eintrag für [`CLAUDE_CONFIG_DIR`](/docs/de/env-vars) gilt nur, wenn sein Wert ein absoluter Pfad ist; die Erweiterung erweitert `~` nicht und ignoriert einen relativen Wert. |

607| `disableLoginPrompt` | `false` | Überspringen Sie Authentifizierungsaufforderungen (für Setups von Drittanbieter-Providern) |607| `disableLoginPrompt` | `false` | Überspringen Sie Authentifizierungsaufforderungen (für Setups von Drittanbieter-Providern) |

608| `allowDangerouslySkipPermissions` | `false` | Fügt dem Moduswahlschalter die Option „Berechtigungen umgehen“ hinzu. Verwenden Sie dies nur in Sandboxes ohne Internetzugang. |608| `allowDangerouslySkipPermissions` | `false` | Fügt dem Moduswahlschalter die Option „Berechtigungen umgehen“ hinzu. Verwenden Sie dies nur in Sandboxes ohne Internetzugang. |

609| `claudeProcessWrapper` | - | Ausführbare Datei zum Starten des Claude-Prozesses. Der Pfad der gebündelten Binärdatei wird als Argument übergeben, wenn vorhanden. Legen Sie dies auf eine separat installierte `claude`-Binärdatei fest, wenn der Erweiterungsbuild keine für Ihre Plattform enthält. In einem umschlossenen Setup beginnen Gespräche im Manusmodus, es sei denn, Sie legen `initialPermissionMode` fest oder haben in einem früheren Gespräch „Manuell“, „Automatisch bearbeiten“ oder „Automatisch“ ausgewählt, da die Erweiterung die Einstellungen und integrierten Standardschritte dort überspringt; siehe [Berechtigungsmodi wechseln](/docs/de/permission-modes#switch-permission-modes). Ein Fehler „Unsupported platform“ bei der Aktivierung bedeutet, dass keine Binärdatei für Ihre Plattform gebündelt ist; siehe [welche Plattformen vorkompilierte Binärdateien haben](/docs/de/troubleshoot-install#native-binary-not-found-after-npm-install). |609| `claudeProcessWrapper` | - | Ausführbare Datei zum Starten des Claude-Prozesses. Der Pfad der gebündelten Binärdatei wird als Argument übergeben, wenn vorhanden. Legen Sie dies auf eine separat installierte `claude`-Binärdatei fest, wenn der Erweiterungsbuild keine für Ihre Plattform enthält. |

610 610 

611<h2 id="use-a-screen-reader">611<h2 id="use-a-screen-reader">

612 Verwenden Sie einen Bildschirmleser612 Verwenden Sie einen Bildschirmleser

worktrees.md +7 −5

Details

6 6 

7> Isolieren Sie parallele Claude Code-Sitzungen in separaten Git-Worktrees, damit Änderungen nicht kollidieren. Behandelt das Flag `--worktree`, Subagent-Isolation, `.worktreeinclude`, Bereinigung und Non-Git-VCS-Hooks.7> Isolieren Sie parallele Claude Code-Sitzungen in separaten Git-Worktrees, damit Änderungen nicht kollidieren. Behandelt das Flag `--worktree`, Subagent-Isolation, `.worktreeinclude`, Bereinigung und Non-Git-VCS-Hooks.

8 8 

9Ein [Git-Worktree](https://git-scm.com/docs/git-worktree) ist ein separates Arbeitsverzeichnis mit eigenen Dateien und Branch, das die gleiche Repository-Historie und Remote wie Ihr Haupt-Checkout teilt. Das Ausführen jeder Claude Code-Sitzung in ihrem eigenen Worktree bedeutet, dass Änderungen in einer Sitzung niemals Dateien in einer anderen berühren, sodass eine Sitzung ein Feature entwickeln kann, während eine zweite einen Bug behebt.9Ein [Git-Worktree](https://git-scm.com/docs/git-worktree) ist ein separates Arbeitsverzeichnis mit eigenen Dateien und Branch, das die gleiche Repository-Historie und Remote wie Ihr Haupt-Checkout teilt. Wenn Sie jede Claude Code-Sitzung in ihrem eigenen Worktree ausführen, erhält sie eine separate Kopie der Dateien zum Bearbeiten, sodass eine Sitzung ein Feature entwickeln kann, während eine zweite einen Bug behebt.

10 10 

11<Note>11<Note>

12 Worktrees erfordern ein Git-Repository; für andere Versionskontrollsysteme [konfigurieren Sie Hooks, um die Git-Logik zu ersetzen](#non-git-version-control). In der [Desktop-App](/docs/de/desktop#work-in-parallel-with-sessions) wählen Sie die Option **worktree** aus, wenn Sie eine Sitzung starten, um ihr ihren eigenen Worktree zu geben.12 Worktrees erfordern ein Git-Repository; für andere Versionskontrollsysteme [konfigurieren Sie Hooks, um die Git-Logik zu ersetzen](#non-git-version-control). In der [Desktop-App](/docs/de/desktop#work-in-parallel-with-sessions) wählen Sie die Option **worktree** aus, wenn Sie eine Sitzung starten, um ihr ihren eigenen Worktree zu geben.


44 Bitten Sie Claude, einen Worktree zu erstellen44 Bitten Sie Claude, einen Worktree zu erstellen

45</h3>45</h3>

46 46 

47Sie können Claude auch während einer Sitzung bitten, „in einem Worktree zu arbeiten", und es erstellt einen mit dem [`EnterWorktree`](/docs/de/tools-reference)-Tool. Sobald Sie sich in einem Worktree befinden, kann Claude direkt zu einem anderen unter `.claude/worktrees/` wechseln, indem er `EnterWorktree` mit dem Zielpfad aufruft; der vorherige Worktree bleibt unverändert auf der Festplatte.47Sie können Claude auch während einer Sitzung bitten, „in einem Worktree zu arbeiten“, und es erstellt einen mit dem [`EnterWorktree`](/docs/de/tools-reference)-Tool. Sobald Sie sich in einem Worktree befinden, kann Claude direkt zu einem anderen unter `.claude/worktrees/` wechseln, indem er `EnterWorktree` mit dem Zielpfad aufruft; der vorherige Worktree bleibt unverändert auf der Festplatte.

48 48 

49Wenn Claude einen Pfad außerhalb des Verzeichnisses `.claude/worktrees/` des Repositories betritt, fragt Claude Code zunächst nach Ihrer Genehmigung, da der Wechsel das Arbeitsverzeichnis der Sitzung, den Schreibzugriff und die Projektkonfiguration wie `CLAUDE.md` und Einstellungen an diesen Ort verschiebt. Eine `EnterWorktree`-[Berechtigung](/docs/de/permissions) oder die Wahl von „nicht mehr fragen" unterdrückt diese Aufforderung nicht; nur der `bypassPermissions`-Modus überspringt sie. Vor v2.1.206 konnte Claude jeden vorhandenen Worktree-Pfad ohne Nachfrage betreten.49Wenn Claude einen Pfad außerhalb des Verzeichnisses `.claude/worktrees/` des Repositories betritt, fragt Claude Code zunächst nach Ihrer Genehmigung, da der Wechsel das Arbeitsverzeichnis der Sitzung, den Schreibzugriff und die Projektkonfiguration wie `CLAUDE.md` und Einstellungen an diesen Ort verschiebt. Eine `EnterWorktree`-[Berechtigung](/docs/de/permissions) oder die Wahl von „nicht mehr fragen“ unterdrückt diese Aufforderung nicht; nur der `bypassPermissions`-Modus überspringt sie. Vor v2.1.206 konnte Claude jeden vorhandenen Worktree-Pfad ohne Nachfrage betreten.

50 50 

51<Note>51<Note>

52 **Hook-Pfade folgen dem Worktree nicht.** Nachdem Claude einen Worktree betritt, behält Claude Code `${CLAUDE_PROJECT_DIR}` in Ihren [Hooks](/docs/de/hooks#reference-scripts-by-path) dort, wo er war, und übergibt den Worktree-Pfad auf andere Weise:52 **Hook-Pfade folgen dem Worktree nicht.** Nachdem Claude einen Worktree betritt, behält Claude Code `${CLAUDE_PROJECT_DIR}` in Ihren [Hooks](/docs/de/hooks#reference-scripts-by-path) dort, wo er war, und übergibt den Worktree-Pfad auf andere Weise:


104* **Git-Umleitungen**: Claude Code blockiert einen Bash- oder Monitor-Befehl, der Git in den Haupt-Checkout umleitet. Die Umleitung kann durch `git -C`, `--git-dir`, eine `GIT_DIR`- oder `GIT_WORK_TREE`-Variable oder ein `cd` in den Haupt-Checkout vor dem Ausführen von Git erfolgen.104* **Git-Umleitungen**: Claude Code blockiert einen Bash- oder Monitor-Befehl, der Git in den Haupt-Checkout umleitet. Die Umleitung kann durch `git -C`, `--git-dir`, eine `GIT_DIR`- oder `GIT_WORK_TREE`-Variable oder ein `cd` in den Haupt-Checkout vor dem Ausführen von Git erfolgen.

105* **Befehlsform**: Claude Code blockiert einen Bash- oder Monitor-Befehl, wenn es nicht überprüfen kann, dass jedes Git, das der Befehl ausführt, im Worktree bleibt. Das geschieht beispielsweise, wenn der Befehlsname zur Laufzeit berechnet wird, wenn die Syntax nicht analysiert werden kann, oder wenn eine Erweiterung wie `${!name}` oder `${ command; }` einen Befehl ausführen könnte, den der Text nicht ausdrücklich angibt. Claude Code teilt Claude mit, wie der abgelehnte Befehl umgeschrieben werden kann, z. B. durch Aufteilen in einfache, separate Befehle. Sie können diese Prüfung nicht ausschalten.105* **Befehlsform**: Claude Code blockiert einen Bash- oder Monitor-Befehl, wenn es nicht überprüfen kann, dass jedes Git, das der Befehl ausführt, im Worktree bleibt. Das geschieht beispielsweise, wenn der Befehlsname zur Laufzeit berechnet wird, wenn die Syntax nicht analysiert werden kann, oder wenn eine Erweiterung wie `${!name}` oder `${ command; }` einen Befehl ausführen könnte, den der Text nicht ausdrücklich angibt. Claude Code teilt Claude mit, wie der abgelehnte Befehl umgeschrieben werden kann, z. B. durch Aufteilen in einfache, separate Befehle. Sie können diese Prüfung nicht ausschalten.

106 106 

107Diese Prüfungen lesen den Pfad, auf den eine Änderung abzielt, das Verzeichnis, in dem ein Befehl ausgeführt wird, und den Text des Befehls. Keine von ihnen verfolgt, welche Dateien ein Shell-Befehl schreibt. Ein Befehl, der in den Haupt-Checkout schreibt, ohne dort Git auszuführen, wie `cp` oder eine Shell-Umleitung, wird daher von ihnen nicht abgelehnt. Claude Code behandelt diesen Befehl wie jeden anderen Shell-Befehl, sodass es von Ihrem [Berechtigungsmodus](/docs/de/permission-modes) und Ihren Regeln abhängt, ob er ausgeführt wird oder bei Ihnen nachgefragt wird.

108 

107Die Prüfungen gelten für das Repository, von dem aus Sie Claude Code gestartet haben. Sie decken auch den Haupt-Checkout ab, von dem ein verknüpfter Worktree verknüpft ist. Für PowerShell-Befehle wendet Claude Code nur die Arbeitsverzeichnis-Prüfung an.109Die Prüfungen gelten für das Repository, von dem aus Sie Claude Code gestartet haben. Sie decken auch den Haupt-Checkout ab, von dem ein verknüpfter Worktree verknüpft ist. Für PowerShell-Befehle wendet Claude Code nur die Arbeitsverzeichnis-Prüfung an.

108 110 

109Claude sieht jede Ablehnung als einen Tool-Fehler, der den Worktree benennt und sagt, wie man fortfährt. Für einen abgelehnten Befehl siehe [was die Ablehnungsmeldung bedeutet und wie man sie löscht](/docs/de/errors#command-blocked-by-the-worktree-isolation-checks).111Claude sieht jede Ablehnung als einen Tool-Fehler, der den Worktree benennt und sagt, wie man fortfährt. Für einen abgelehnten Befehl siehe [was die Ablehnungsmeldung bedeutet und wie man sie löscht](/docs/de/errors#command-blocked-by-the-worktree-isolation-checks).


112 Isolieren Sie Subagents mit Worktrees114 Isolieren Sie Subagents mit Worktrees

113</h2>115</h2>

114 116 

115Subagents können in ihren eigenen Worktrees laufen, sodass parallele Änderungen nicht kollidieren. Bitten Sie Claude, „Worktrees für Ihre Agenten zu verwenden", oder machen Sie die Isolation dauerhaft für einen [benutzerdefinierten Subagent](/docs/de/sub-agents#supported-frontmatter-fields), indem Sie `isolation: worktree` zu seinem Frontmatter hinzufügen.117Subagents können in ihren eigenen Worktrees laufen, sodass parallele Änderungen nicht kollidieren. Bitten Sie Claude, „Worktrees für Ihre Agenten zu verwenden“, oder machen Sie die Isolation dauerhaft für einen [benutzerdefinierten Subagent](/docs/de/sub-agents#supported-frontmatter-fields), indem Sie `isolation: worktree` zu seinem Frontmatter hinzufügen.

116 118 

117Dieser Subagent in `.claude/agents/` läuft immer in seinem eigenen Worktree:119Dieser Subagent in `.claude/agents/` läuft immer in seinem eigenen Worktree:

118 120 


261 263 

262* **Das `.git`-Verzeichnis des Repositories**: Git-Befehle in einem Worktree schreiben in das gemeinsame `.git`-Verzeichnis des Haupt-Repositories, und [Sandboxing](/docs/de/sandboxing#filesystem-isolation) erlaubt diese Schreibvorgänge, sodass Befehle wie `git commit` von innen in einem Worktree mit aktivierter Sandbox funktionieren.264* **Das `.git`-Verzeichnis des Repositories**: Git-Befehle in einem Worktree schreiben in das gemeinsame `.git`-Verzeichnis des Haupt-Repositories, und [Sandboxing](/docs/de/sandboxing#filesystem-isolation) erlaubt diese Schreibvorgänge, sodass Befehle wie `git commit` von innen in einem Worktree mit aktivierter Sandbox funktionieren.

263* **Plugins**: Plugins, die im [Projekt-Bereich](/docs/de/plugins/loading#find-where-a-plugin-is-enabled) aus dem Haupt-Checkout installiert sind, werden auch in Worktrees desselben Repositories geladen, sodass Sie sie nicht pro Worktree neu installieren müssen. Erfordert Claude Code v2.1.200 oder später.265* **Plugins**: Plugins, die im [Projekt-Bereich](/docs/de/plugins/loading#find-where-a-plugin-is-enabled) aus dem Haupt-Checkout installiert sind, werden auch in Worktrees desselben Repositories geladen, sodass Sie sie nicht pro Worktree neu installieren müssen. Erfordert Claude Code v2.1.200 oder später.

264* **Genehmigungen**: Das Wählen von „Ja, und nicht mehr fragen" für einen Bash-Befehl in einer Worktree-Sitzung speichert die Regel in der `.claude/settings.local.json` des Haupt-Checkouts, sodass sie im Haupt-Checkout und in jedem anderen Worktree des Repositories gilt und das Entfernen des Worktrees überlebt. Unter Windows und in den anderen Fällen, in denen Claude Code [das Repository-Root nicht verwendet](/docs/de/settings#where-claude-code-looks-for-each-file), bleibt die Regel bei diesem Worktree. Vor v2.1.211 wurde eine Genehmigung, die in einem Worktree gewährt wurde, in diesem Worktree gespeichert, galt nicht anderswo und ging verloren, wenn der Worktree entfernt wurde. Siehe [wo Genehmigungen gespeichert werden](/docs/de/permissions#permission-system).266* **Genehmigungen**: Das Wählen von „Ja, und nicht mehr fragen“ für einen Bash-Befehl in einer Worktree-Sitzung speichert die Regel in der `.claude/settings.local.json` des Haupt-Checkouts, sodass sie im Haupt-Checkout und in jedem anderen Worktree des Repositories gilt und das Entfernen des Worktrees überlebt. Unter Windows und in den anderen Fällen, in denen Claude Code [das Repository-Root nicht verwendet](/docs/de/settings#where-claude-code-looks-for-each-file), bleibt die Regel bei diesem Worktree. Vor v2.1.211 wurde eine Genehmigung, die in einem Worktree gewährt wurde, in diesem Worktree gespeichert, galt nicht anderswo und ging verloren, wenn der Worktree entfernt wurde. Siehe [wo Genehmigungen gespeichert werden](/docs/de/permissions#permission-system).

265* **Nicht nachverfölgte Skills, Agents und Befehle**: Wenn der Worktree-Checkout kein `.claude/skills`-Verzeichnis in seinem Root hat, zum Beispiel weil Ihr `.claude/skills` gitignoriert ist, lädt Claude Code die [Projekt-Skills](/docs/de/skills#where-skills-live) des Haupt-Checkouts in der Worktree-Sitzung. In einem Worktree mit seinem eigenen `.claude/skills`-Verzeichnis wird nur diese Kopie geladen.267* **Nicht nachverfölgte Skills, Agents und Befehle**: Wenn der Worktree-Checkout kein `.claude/skills`-Verzeichnis in seinem Root hat, zum Beispiel weil Ihr `.claude/skills` gitignoriert ist, lädt Claude Code die [Projekt-Skills](/docs/de/skills#where-skills-live) des Haupt-Checkouts in der Worktree-Sitzung. In einem Worktree mit seinem eigenen `.claude/skills`-Verzeichnis wird nur diese Kopie geladen.

266 268 

267 Dieselbe Durchlesung gilt für `.claude/agents` und `.claude/commands`. Für Skills erfordert die Durchlesung Claude Code v2.1.277 oder später.269 Dieselbe Durchlesung gilt für `.claude/agents` und `.claude/commands`. Für Skills erfordert die Durchlesung Claude Code v2.1.277 oder später.